diff options
author | Magnus Hagander <magnus@hagander.net> | 2008-08-20 11:53:45 +0000 |
---|---|---|
committer | Magnus Hagander <magnus@hagander.net> | 2008-08-20 11:53:45 +0000 |
commit | c91ff03a06443ed88529026ad33464addbf3444d (patch) | |
tree | ed08a4ba206bbb63ca33ef8a4ed8dd3044b61edb /src | |
parent | 7303b20964fa5fd505ac86b1219cc1ffcff09d4b (diff) | |
download | postgresql-c91ff03a06443ed88529026ad33464addbf3444d.tar.gz postgresql-c91ff03a06443ed88529026ad33464addbf3444d.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.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index 33c704b5190..cc3e758ef2e 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.134 2008/05/29 22:02:44 tgl Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.135 2008/08/20 11:53:45 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) { |