From fb147dc30e7ee931d9d105797f5210106d9ce55e Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 23 Sep 2004 20:27:50 +0000 Subject: [PATCH] If we're going to print unrecognized result codes from SSL_get_error in open_client_SSL, surely we should do it everywhere. Also make message formatting conform to style guide. --- src/backend/libpq/be-secure.c | 20 +++++++++++++------- src/interfaces/libpq/fe-secure.c | 22 ++++++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c index 4bd7581a38..43acba4473 100644 --- a/src/backend/libpq/be-secure.c +++ b/src/backend/libpq/be-secure.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.49 2004/09/09 00:59:31 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.50 2004/09/23 20:27:50 tgl Exp $ * * Since the server static private key ($DataDir/server.key) * will normally be stored unencrypted so that the database @@ -257,9 +257,12 @@ secure_read(Port *port, void *ptr, size_t len) #ifdef USE_SSL if (port->ssl) { + int err; + rloop: n = SSL_read(port->ssl, ptr, len); - switch (SSL_get_error(port->ssl, n)) + err = SSL_get_error(port->ssl, n); + switch (err) { case SSL_ERROR_NONE: port->count += n; @@ -293,8 +296,8 @@ rloop: default: ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), - errmsg("unrecognized SSL error code %d", - SSL_get_error(port->ssl, n)))); + errmsg("unrecognized SSL error code: %d", + err))); n = -1; break; } @@ -317,6 +320,8 @@ secure_write(Port *port, void *ptr, size_t len) #ifdef USE_SSL if (port->ssl) { + int err; + if (port->count > RENEGOTIATION_LIMIT) { SSL_set_session_id_context(port->ssl, (void *) &SSL_context, @@ -344,7 +349,8 @@ secure_write(Port *port, void *ptr, size_t len) wloop: n = SSL_write(port->ssl, ptr, len); - switch (SSL_get_error(port->ssl, n)) + err = SSL_get_error(port->ssl, n); + switch (err) { case SSL_ERROR_NONE: port->count += n; @@ -378,8 +384,8 @@ wloop: default: ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), - errmsg("unrecognized SSL error code %d", - SSL_get_error(port->ssl, n)))); + errmsg("unrecognized SSL error code: %d", + err))); n = -1; break; } diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index f7bcd8f6fd..2fba98d88b 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-secure.c,v 1.50 2004/09/23 13:20:45 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-secure.c,v 1.51 2004/09/23 20:27:43 tgl Exp $ * * NOTES * The client *requires* a valid server certificate. Since @@ -297,9 +297,12 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len) #ifdef USE_SSL if (conn->ssl) { + int err; + rloop: n = SSL_read(conn->ssl, ptr, len); - switch (SSL_get_error(conn->ssl, n)) + err = SSL_get_error(conn->ssl, n); + switch (err) { case SSL_ERROR_NONE: break; @@ -349,7 +352,8 @@ rloop: break; default: printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("unrecognized SSL error code\n")); + libpq_gettext("unrecognized SSL error code: %d\n"), + err); n = -1; break; } @@ -380,8 +384,11 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len) #ifdef USE_SSL if (conn->ssl) { + int err; + n = SSL_write(conn->ssl, ptr, len); - switch (SSL_get_error(conn->ssl, n)) + err = SSL_get_error(conn->ssl, n); + switch (err) { case SSL_ERROR_NONE: break; @@ -429,7 +436,8 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len) break; default: printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("unrecognized SSL error code\n")); + libpq_gettext("unrecognized SSL error code: %d\n"), + err); n = -1; break; } @@ -1020,6 +1028,7 @@ open_client_SSL(PGconn *conn) if (r <= 0) { int err = SSL_get_error(conn->ssl, r); + switch (err) { case SSL_ERROR_WANT_READ: @@ -1055,7 +1064,8 @@ open_client_SSL(PGconn *conn) default: printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("unrecognized SSL error code (%d)\n"), err); + libpq_gettext("unrecognized SSL error code: %d\n"), + err); close_SSL(conn); return PGRES_POLLING_FAILED; }