Cleanup of libpq connection timeout code.
authorBruce Momjian <bruce@momjian.us>
Tue, 27 Aug 2002 14:49:52 +0000 (14:49 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 27 Aug 2002 14:49:52 +0000 (14:49 +0000)
src/interfaces/libpq/fe-connect.c

index ef80ed7e454fac7b70f1e6974437f8867f7bd6cf..5ab095e101d5dbded305e3de1ba26ab4cfb1d413 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.194 2002/08/18 01:35:39 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.195 2002/08/27 14:49:52 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1063,34 +1063,33 @@ connectDBComplete(PGconn *conn)
        if (conn == NULL || conn->status == CONNECTION_BAD)
                return 0;
 
-      /*
-       * Prepare to time calculations, if connect_timeout isn't zero.
-       */
-      if (conn->connect_timeout != NULL)
+    /*
+     * Prepare to time calculations, if connect_timeout isn't zero.
+     */
+    if (conn->connect_timeout != NULL)
        {
-              remains.tv_sec = atoi(conn->connect_timeout);
-              if (!remains.tv_sec)
-              {
-                      conn->status = CONNECTION_BAD;
-                      return 0;
-              }
-              remains.tv_usec = 0;
-              rp = &remains;
-      }
+               remains.tv_sec = atoi(conn->connect_timeout);
+               if (!remains.tv_sec)
+               {
+                       conn->status = CONNECTION_BAD;
+                       return 0;
+               }
+               remains.tv_usec = 0;
+               rp = &remains;
+       }
 
+       while (rp == NULL || remains.tv_sec > 0 || (remains.tv_sec == 0 && remains.tv_usec > 0))
+       {
+               /*
+                * If connecting timeout is set, get current time.
+                */
+               if (rp != NULL && gettimeofday(&start_time, NULL) == -1)
+               {
+                       conn->status = CONNECTION_BAD;
+                       return 0;
+               }
 
-      while (rp == NULL || remains.tv_sec > 0 || (remains.tv_sec == 0 && remains.tv_usec > 0))
-      {
                /*
-               * If connecting timeout is set, get current time.
-               */
-              if (rp != NULL && gettimeofday(&start_time, NULL) == -1)
-              {
-                      conn->status = CONNECTION_BAD;
-                      return 0;
-              }
-
-        /*
                 * Wait, if necessary.  Note that the initial state (just after
                 * PQconnectStart) is to wait for the socket to select for
                 * writing.
@@ -1104,7 +1103,7 @@ connectDBComplete(PGconn *conn)
                                return 1;               /* success! */
 
                        case PGRES_POLLING_READING:
-                              if (pqWaitTimed(1, 0, conn, rp))
+                               if (pqWaitTimed(1, 0, conn, rp))
                                {
                                        conn->status = CONNECTION_BAD;
                                        return 0;
@@ -1130,27 +1129,28 @@ connectDBComplete(PGconn *conn)
                 */
                flag = PQconnectPoll(conn);
 
-              /*
-               * If connecting timeout is set, calculate remain time.
-               */
-              if (NULL != rp) {
-                      if (-1 == gettimeofday(&finish_time, NULL))
-                      {
-                              conn->status = CONNECTION_BAD;
-                              return 0;
-                      }
-                      if (0 > (finish_time.tv_usec -= start_time.tv_usec))
-                      {
-                              remains.tv_sec++;
-                              finish_time.tv_usec += 1000000;
-                      }
-                      if (0 > (remains.tv_usec -= finish_time.tv_usec))
-                      {
-                              remains.tv_sec--;
-                              remains.tv_usec += 1000000;
-                      }
-                      remains.tv_sec -= finish_time.tv_sec - start_time.tv_sec;
-              }
+               /*
+                * If connecting timeout is set, calculate remain time.
+                */
+               if (NULL != rp)
+               {
+                       if (gettimeofday(&finish_time, NULL) == -1)
+                       {
+                               conn->status = CONNECTION_BAD;
+                               return 0;
+                       }
+                       if ((finish_time.tv_usec -= start_time.tv_usec) < 0 )
+                       {
+                               remains.tv_sec++;
+                               finish_time.tv_usec += 1000000;
+                       }
+                       if ((remains.tv_usec -= finish_time.tv_usec) < 0 )
+                       {
+                               remains.tv_sec--;
+                               remains.tv_usec += 1000000;
+                       }
+                       remains.tv_sec -= finish_time.tv_sec - start_time.tv_sec;
+               }
        }
       conn->status = CONNECTION_BAD;
       return 0;