Check SSL_get_error() value SSL_ERROR_SYSCALL to see if SSL_read()

returned -1, per SSL_get_error() documentation.

Nathan Mueller
This commit is contained in:
Bruce Momjian 2002-12-12 22:42:39 +00:00
parent 5587f077ab
commit 482ed836f7
2 changed files with 14 additions and 6 deletions

View File

@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.16 2002/11/07 18:45:51 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.17 2002/12/12 22:42:39 momjian Exp $
*
* Since the server static private key ($DataDir/server.key)
* will normally be stored unencrypted so that the database
@ -288,7 +288,10 @@ secure_read(Port *port, void *ptr, size_t len)
case SSL_ERROR_WANT_READ:
break;
case SSL_ERROR_SYSCALL:
elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
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,7 +340,10 @@ secure_write(Port *port, const void *ptr, size_t len)
case SSL_ERROR_WANT_WRITE:
break;
case SSL_ERROR_SYSCALL:
elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
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());

View File

@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.16 2002/11/07 18:45:51 tgl Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.17 2002/12/12 22:42:39 momjian Exp $
*
* NOTES
* The client *requires* a valid server certificate. Since
@ -270,7 +270,8 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len)
case SSL_ERROR_WANT_READ:
break;
case SSL_ERROR_SYSCALL:
printfPQExpBuffer(&conn->errorMessage,
if (n == -1)
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("SSL SYSCALL error: %s\n"),
SOCK_STRERROR(SOCK_ERRNO));
break;
@ -315,7 +316,8 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len)
case SSL_ERROR_WANT_WRITE:
break;
case SSL_ERROR_SYSCALL:
printfPQExpBuffer(&conn->errorMessage,
if (n == -1)
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("SSL SYSCALL error: %s\n"),
SOCK_STRERROR(SOCK_ERRNO));
break;