Обсуждение: 7.3.4 patch for libpq SSL_read() problems?

Поиск
Список
Период
Сортировка

7.3.4 patch for libpq SSL_read() problems?

От
Brian Lindauer
Дата:
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;
}

Re: 7.3.4 patch for libpq SSL_read() problems?

От
Tom Lane
Дата:
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