aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2008-08-20 11:53:49 +0000
committerMagnus Hagander <magnus@hagander.net>2008-08-20 11:53:49 +0000
commit7ddd8396479a11ff81b0ca506e97617c4cd445d3 (patch)
tree1c571bdf9453c97b3650d171e73f0fc718c3080c /src
parent8ca6a92ae044f10e39531983519b754f4ab4e8e5 (diff)
downloadpostgresql-7ddd8396479a11ff81b0ca506e97617c4cd445d3.tar.gz
postgresql-7ddd8396479a11ff81b0ca506e97617c4cd445d3.zip
Make libpq on windows not try to send chunks larger than 64Kb.
Per Microsoft knowledge base article Q201213, early versions of Windows fail when we do this. Later versions of Windows appear to have a higher limit than 64Kb, but do still fail on large sends, so we unconditionally limit it for all versions. Patch from Tom Lane.
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/libpq/fe-misc.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c
index 635c3f0674d..17b9ed3e856 100644
--- a/src/interfaces/libpq/fe-misc.c
+++ b/src/interfaces/libpq/fe-misc.c
@@ -23,7 +23,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.130 2006/10/04 00:30:13 momjian Exp $
+ * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.130.2.1 2008/08/20 11:53:49 mha Exp $
*
*-------------------------------------------------------------------------
*/
@@ -752,7 +752,16 @@ pqSendSome(PGconn *conn, int len)
int sent;
char sebuf[256];
+#ifndef WIN32
sent = pqsecure_write(conn, ptr, len);
+#else
+ /*
+ * Windows can fail on large sends, per KB article Q201213. The failure-point
+ * appears to be different in different versions of Windows, but 64k should
+ * always be safe.
+ */
+ sent = pqsecure_write(conn, ptr, Min(len, 65536));
+#endif
if (sent < 0)
{