eem21@cam.ac.uk writes:
> I realised that some time after I sent my first message, and have been
> thinking about it since. The delay for gethostbyname is not
> acceptable, and we are going to have to get around that problem
> elsewhere in the application anyway. Therefore, I was thinking that I
> could arrange to pass an IP address into libpq.
A dotted-decimal address, you mean? Yeah, that sounds like it should
work.
> With regards to the connect() problem, I was hoping that by setting the
> socket to non-blocking mode before connecting (exactly as it is
> currently done after the connect call) I could solve that problem.
By golly, there is something about non-blocking connect in the man page:
If the socket is of type SOCK_STREAM, connect() attempts to contact the remote host in order to make a
connectionbetween the remote socket (peer) and the local socket specified by s. The call normally blocks until
theconnection completes. If non-blocking mode has been enabled using the O_NONBLOCK or O_NDELAY fcntl() flags or
theFIOSNBIO ioctl() request and the connection cannot be completed immediately, connect() returns an error as
describedbelow. In these cases, select() can be used on this socket to determine when the connection has
completedby selecting it for writing.
Maybe you can make this work after all, with the limitation that the
user must supply a dotted-decimal IP address (or use a Unix-domain
connection) if he doesn't want to risk DNS lookup delays.
Good luck!
regards, tom lane