Thread: 7.3.4 patch for libpq SSL_read() problems?
In 7.3.4, calls to PQconsumeInput() hang when connecting over SSL, but this appears to be fixed at the head of the cvs tree. Is there a patch, or set of patches, I can apply to 7.3.4 to fix just the SSL problems? I tried applying the patch to fe-misc.c and fe-secure.c that Tom Lane posted on August 4, 2003, but I still get the hang. Here's code to reproduce the bug (though I'm pretty sure this is a known problem). Thanks, Brian #include "libpq-fe.h" int main(int argc, char **argv) { PGconn *conn = NULL; if (!(conn = PQconnectdb("hostaddr=1.2.3.4 dbname=mydbname user=myuser"))) { fprintf(stderr, "Connect failed.\n"); goto error; } fprintf(stderr, "Will hang here if broken.\n"); PQconsumeInput(conn); fprintf(stderr, "Not broken.\n"); PQfinish(conn); conn = NULL; return 0; error: if (conn) { PQfinish(conn); conn = NULL; } return 1; }
Brian Lindauer <jbl-psql-bugs@sysd.com> writes: > In 7.3.4, calls to PQconsumeInput() hang when connecting over SSL, but > this appears to be fixed at the head of the cvs tree. Is there a patch, > or set of patches, I can apply to 7.3.4 to fix just the SSL problems? I > tried applying the patch to fe-misc.c and fe-secure.c that Tom Lane > posted on August 4, 2003, but I still get the hang. Here's code to > reproduce the bug (though I'm pretty sure this is a known problem). It was a known problem, but you are the first to provide an easy way to reproduce it. Thanks! Having reproduced it, I realized that I'm an idiot :-( ... an SSL_ERROR_WANT_READ return from SSL_read() shouldn't be treated as an error at all, it just means "no data available yet". The fix is in 7.3 CVS tip. regards, tom lane