David Ford <[EMAIL PROTECTED]> writes: > Please wait a day before applying the patch, I want to make it a bit > more clean/readable and make sure I covered everything in fe-connect.c,
BTW, reading the HPUX man page for connect I find the following relevant error codes: [EALREADY] Nonblocking I/O is enabled with O_NONBLOCK, O_NDELAY, or FIOSNBIO, and a previous connection attempt has not yet completed. [EINPROGRESS] Nonblocking I/O is enabled using O_NONBLOCK, O_NDELAY, or FIOSNBIO, and the connection cannot be completed immediately. This is not a failure. Make the connect() call again a few seconds later. Alternatively, wait for completion by calling select() and selecting for write. [EINTR] The connect was interrupted by a signal before the connect sequence was complete. The building of the connection still takes place, even though the user is not blocked on the connect() call. [EISCONN] The socket is already connected. This does not actually *say* that the appropriate behavior after EINTR is to retry, but reading between the lines one might infer that it will work like the nonblocking case, wherein a retry of connect tries to link to the existing connection attempt, not start a new one. What's more important is that a retry will expose the possibility of getting EALREADY or EISCONN. EALREADY certainly must be treated as success the same as EINPROGRESS (if it exists on a given platform --- better #ifdef it I think). Not so sure about EISCONN; does that imply "you moron, this socket's been open forever", or does it get returned on the first iteration that doesn't return EALREADY? regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html