postgres.git / summary / log / commit / refs

commit    1852a73c7ac8096104e2e2ad4b2fbe9484fc1dd9
Author:   Magnus Hagander <magnus@hagander.net>
Date:     Wed Aug 20 11:53:51 2008 +0000
First released in: 8.4.0, 8.2.10, 8.3.4

    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.


src/interfaces/libpq/fe-misc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index 3d063865427..cd6bdec3a51 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.133 2008/01/01 19:46:00 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.133.2.1 2008/08/20 11:53:51 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) { [parent: 4dff669cf0b9]