Index: src/backend/libpq/pqcomm.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v
retrieving revision 1.186
diff -c -c -r1.186 pqcomm.c
*** src/backend/libpq/pqcomm.c	14 Jul 2006 05:28:27 -0000	1.186
--- src/backend/libpq/pqcomm.c	11 Aug 2006 20:41:35 -0000
***************
*** 593,598 ****
--- 593,612 ----
  			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
