]> granicus.if.org Git - postgresql/commitdiff
Set Win32 server-size socket buffer to 32k, for performance reasons.
authorBruce Momjian <bruce@momjian.us>
Fri, 11 Aug 2006 20:44:20 +0000 (20:44 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 11 Aug 2006 20:44:20 +0000 (20:44 +0000)
Yoshiyuki Asaba

src/backend/libpq/pqcomm.c

index de672cc868b4ae455f82d97c76e9610e2f6ec8cf..3a4c74b0a84efdcbadaff6fa1ad0ad38d4d56e56 100644 (file)
@@ -30,7 +30,7 @@
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *     $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.186 2006/07/14 05:28:27 tgl Exp $
+ *     $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.187 2006/08/11 20:44:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -593,6 +593,20 @@ StreamConnection(int server_fd, Port *port)
                        return STATUS_ERROR;
                }
 
+#ifdef WIN32
+               /*
+                *      This is a Win32 socket optimization.  The ideal size is 32k.
+                *      http://support.microsoft.com/kb/823764/EN-US/
+                */
+               on = PQ_BUFFER_SIZE * 4;
+               if (setsockopt(port->sock, SOL_SOCKET, SO_SNDBUF, (char *) &on,
+                       sizeof(on)) < 0)
+               {
+                       elog(LOG, "setsockopt(SO_SNDBUF) failed: %m");
+                       return STATUS_ERROR;
+               }
+#endif
+
                /*
                 * Also apply the current keepalive parameters.  If we fail to set a
                 * parameter, don't error out, because these aren't universally