EINTR return from connect() should be treated exactly the same as
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 11 Aug 2005 22:53:41 +0000 (22:53 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 11 Aug 2005 22:53:41 +0000 (22:53 +0000)
EINPROGRESS, according to Florian Hars.  I'm not completely convinced
but the spec does seem to read that way.

src/interfaces/libpq/fe-connect.c

index d91182e2f1382e7da189c7ced73abad1588f96ca..de784d928c1c4d3caf4ea383b7064d479385b79a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.316 2005/08/09 05:14:26 momjian Exp $
+ *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.317 2005/08/11 22:53:41 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1082,15 +1082,12 @@ keep_going:                                             /* We will come back to here until there
                                         * since we are in nonblock mode.  If it does, well,
                                         * too bad.
                                         */
-                       retry_connect:
                                        if (connect(conn->sock, addr_cur->ai_addr,
                                                                addr_cur->ai_addrlen) < 0)
                                        {
-                                               if (SOCK_ERRNO == EINTR)
-                                                       /* Interrupted system call - just try again */
-                                                       goto retry_connect;
                                                if (SOCK_ERRNO == EINPROGRESS ||
                                                        SOCK_ERRNO == EWOULDBLOCK ||
+                                                       SOCK_ERRNO == EINTR ||
                                                        SOCK_ERRNO == 0)
                                                {
                                                        /*