Assume select() might modify struct timeout, so remove previous
authorBruce Momjian
Tue, 3 Jan 2006 19:54:08 +0000 (19:54 +0000)
committerBruce Momjian
Tue, 3 Jan 2006 19:54:08 +0000 (19:54 +0000)
optimization.

src/backend/postmaster/pgstat.c

index ef27046e95cdf01b30b709f9ef8de1263a4fa5fa..a192b4e5c878beccdd4473f2e31163c527c077bc 100644 (file)
@@ -13,7 +13,7 @@
  *
  * Copyright (c) 2001-2005, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.117 2006/01/03 16:42:17 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.118 2006/01/03 19:54:08 momjian Exp $
  * ----------
  */
 #include "postgres.h"
@@ -1870,14 +1870,6 @@ pgstat_recvbuffer(void)
     */
    msgbuffer = (char *) palloc(PGSTAT_RECVBUFFERSZ);
 
-   /*
-    * Wait for some work to do; but not for more than 10 seconds. (This
-    * determines how quickly we will shut down after an ungraceful
-    * postmaster termination; so it needn't be very fast.)
-    */
-   timeout.tv_sec = 10;
-   timeout.tv_usec = 0;
-
    /*
     * Loop forever
     */
@@ -1918,6 +1910,15 @@ pgstat_recvbuffer(void)
                maxfd = writePipe;
        }
 
+       /*
+        * Wait for some work to do; but not for more than 10 seconds. (This
+        * determines how quickly we will shut down after an ungraceful
+        * postmaster termination; so it needn't be very fast.)  struct timeout
+        * is modified by some operating systems.
+        */
+       timeout.tv_sec = 10;
+       timeout.tv_usec = 0;
+
        if (select(maxfd + 1, &rfds, &wfds, NULL, &timeout) < 0)
        {
            if (errno == EINTR)