diff options
| author | Stephen Frost <sfrost@snowman.net> | 2013-08-01 15:42:07 -0400 |
|---|---|---|
| committer | Stephen Frost <sfrost@snowman.net> | 2013-08-01 15:43:49 -0400 |
| commit | f019c021119c632da396894769349fa6433e91da (patch) | |
| tree | 2d64de0c32ad6a6dc337ac1cef78f5a8c818cb85 | |
| parent | f31016365565e03c3c698554eacc1c897fd35049 (diff) | |
Improve handling of pthread_mutex_lock error case
We should really be reporting a useful error along with returning
a valid return code if pthread_mutex_lock() throws an error for
some reason. Add that and back-patch to 9.0 as the prior patch.
Pointed out by Alvaro Herrera
| -rw-r--r-- | src/interfaces/libpq/fe-secure.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index 805d4ec49d3..22e0be7f061 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -262,7 +262,11 @@ pqsecure_open_client(PGconn *conn) #ifdef ENABLE_THREAD_SAFETY if (pthread_mutex_lock(&ssl_config_mutex)) - return -1; + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("unable to acquire mutex\n")); + return PGRES_POLLING_FAILED; + } #endif /* Create a connection-specific SSL object */ if (!(conn->ssl = SSL_new(SSL_context)) || @@ -1111,7 +1115,11 @@ initialize_SSL(PGconn *conn) */ #ifdef ENABLE_THREAD_SAFETY if (pthread_mutex_lock(&ssl_config_mutex)) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("unable to acquire mutex\n")); return -1; + } #endif if (SSL_CTX_use_certificate_chain_file(SSL_context, fnbuf) != 1) { @@ -1325,7 +1333,11 @@ initialize_SSL(PGconn *conn) #ifdef ENABLE_THREAD_SAFETY if (pthread_mutex_lock(&ssl_config_mutex)) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("unable to acquire mutex\n")); return -1; + } #endif if (SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL) != 1) { |
