Nathan Mueller wrote: > Ok, I tested this out with TLSv1 and it worked fine. I found that the > same mistake was being made on the client side of things too so I > included a patch for that too.
OK, attached is the patch that I applied. It does strerror() but no elog(ERROR) on the server side if SSL_get_error() returns SSL_ERROR_SYSCALL and SSL_read() returns 0 rather than -1. This logic matches the SSL_get_error() manual page. I found a few cases you missed. -- 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.16 diff -c -c -r1.16 be-secure.c *** src/backend/libpq/be-secure.c 7 Nov 2002 18:45:51 -0000 1.16 --- src/backend/libpq/be-secure.c 12 Dec 2002 22:37:32 -0000 *************** *** 288,294 **** case SSL_ERROR_WANT_READ: break; case SSL_ERROR_SYSCALL: ! elog(ERROR, "SSL SYSCALL error: %s", strerror(errno)); break; case SSL_ERROR_SSL: elog(ERROR, "SSL error: %s", SSLerrmessage()); --- 288,297 ---- case SSL_ERROR_WANT_READ: break; case SSL_ERROR_SYSCALL: ! if (n == -1) ! elog(ERROR, "SSL SYSCALL error: %s", strerror(errno)); ! else ! strerror(errno)); break; case SSL_ERROR_SSL: elog(ERROR, "SSL error: %s", SSLerrmessage()); *************** *** 337,343 **** case SSL_ERROR_WANT_WRITE: break; case SSL_ERROR_SYSCALL: ! elog(ERROR, "SSL SYSCALL error: %s", strerror(errno)); break; case SSL_ERROR_SSL: elog(ERROR, "SSL error: %s", SSLerrmessage()); --- 340,349 ---- case SSL_ERROR_WANT_WRITE: break; case SSL_ERROR_SYSCALL: ! if (n == -1) ! elog(ERROR, "SSL SYSCALL error: %s", strerror(errno)); ! else ! strerror(errno)); break; case SSL_ERROR_SSL: elog(ERROR, "SSL error: %s", SSLerrmessage()); Index: src/interfaces/libpq/fe-secure.c =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-secure.c,v retrieving revision 1.16 diff -c -c -r1.16 fe-secure.c *** src/interfaces/libpq/fe-secure.c 7 Nov 2002 18:45:51 -0000 1.16 --- src/interfaces/libpq/fe-secure.c 12 Dec 2002 22:37:34 -0000 *************** *** 270,276 **** case SSL_ERROR_WANT_READ: break; case SSL_ERROR_SYSCALL: ! printfPQExpBuffer(&conn->errorMessage, libpq_gettext("SSL SYSCALL error: %s\n"), SOCK_STRERROR(SOCK_ERRNO)); break; --- 270,277 ---- case SSL_ERROR_WANT_READ: break; case SSL_ERROR_SYSCALL: ! if (n == -1) ! printfPQExpBuffer(&conn->errorMessage, libpq_gettext("SSL SYSCALL error: %s\n"), SOCK_STRERROR(SOCK_ERRNO)); break; *************** *** 315,321 **** case SSL_ERROR_WANT_WRITE: break; case SSL_ERROR_SYSCALL: ! printfPQExpBuffer(&conn->errorMessage, libpq_gettext("SSL SYSCALL error: %s\n"), SOCK_STRERROR(SOCK_ERRNO)); break; --- 316,323 ---- case SSL_ERROR_WANT_WRITE: break; case SSL_ERROR_SYSCALL: ! if (n == -1) ! printfPQExpBuffer(&conn->errorMessage, libpq_gettext("SSL SYSCALL error: %s\n"), SOCK_STRERROR(SOCK_ERRNO)); break;
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org