Actually, the docs say SSL_read/write can error needing READ or WRITE: http://www.openssl.org/docs/ssl/SSL_read.html#
The SSL_write docs are the same. I have applied the following patch to handle both new cases. Does this help the SSL test program you have? --------------------------------------------------------------------------- Tom Lane wrote: > Bruce Momjian <[EMAIL PROTECTED]> writes: > > Yep, typo. Patched to CVS current and backpatched to 7.3.X. > > I think this fix is exactly backward. Why would SSL_write need to > return ERROR_WANT_WRITE? It couldn't. The correct fix is that > SSL_write might return ERROR_WANT_READ, for which reading would be > the right response. > > BTW the real problem, both here and elsewhere in this file, is the > lack of a "default: elog-out" case in the switch statements. This > code will simply break if any unexpected case occurs. > > regards, tom lane > -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: src/backend/libpq/be-secure.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/libpq/be-secure.c,v retrieving revision 1.27 diff -c -c -r1.27 be-secure.c *** src/backend/libpq/be-secure.c 29 Mar 2003 03:56:44 -0000 1.27 --- src/backend/libpq/be-secure.c 29 Mar 2003 04:59:01 -0000 *************** *** 285,290 **** --- 285,293 ---- case SSL_ERROR_WANT_READ: n = secure_read(port, ptr, len); break; + case SSL_ERROR_WANT_WRITE: + n = secure_write(port, ptr, len); + break; case SSL_ERROR_SYSCALL: if (n == -1) elog(COMMERROR, "SSL SYSCALL error: %s", strerror(errno)); *************** *** 336,341 **** --- 339,347 ---- { case SSL_ERROR_NONE: port->count += n; + break; + case SSL_ERROR_WANT_READ: + n = secure_read(port, ptr, len); break; case SSL_ERROR_WANT_WRITE: n = secure_write(port, ptr, len);
---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html