Обсуждение: 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