Commit 8359ed80 authored by Stephen Frost's avatar Stephen Frost

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
parent f31c149f
...@@ -261,7 +261,11 @@ pqsecure_open_client(PGconn *conn) ...@@ -261,7 +261,11 @@ pqsecure_open_client(PGconn *conn)
#ifdef ENABLE_THREAD_SAFETY #ifdef ENABLE_THREAD_SAFETY
if (pthread_mutex_lock(&ssl_config_mutex)) if (pthread_mutex_lock(&ssl_config_mutex))
return -1; {
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("unable to acquire mutex\n"));
return PGRES_POLLING_FAILED;
}
#endif #endif
/* Create a connection-specific SSL object */ /* Create a connection-specific SSL object */
if (!(conn->ssl = SSL_new(SSL_context)) || if (!(conn->ssl = SSL_new(SSL_context)) ||
...@@ -1112,7 +1116,11 @@ initialize_SSL(PGconn *conn) ...@@ -1112,7 +1116,11 @@ initialize_SSL(PGconn *conn)
*/ */
#ifdef ENABLE_THREAD_SAFETY #ifdef ENABLE_THREAD_SAFETY
if (pthread_mutex_lock(&ssl_config_mutex)) if (pthread_mutex_lock(&ssl_config_mutex))
{
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("unable to acquire mutex\n"));
return -1; return -1;
}
#endif #endif
if (SSL_CTX_use_certificate_chain_file(SSL_context, fnbuf) != 1) if (SSL_CTX_use_certificate_chain_file(SSL_context, fnbuf) != 1)
{ {
...@@ -1326,7 +1334,11 @@ initialize_SSL(PGconn *conn) ...@@ -1326,7 +1334,11 @@ initialize_SSL(PGconn *conn)
#ifdef ENABLE_THREAD_SAFETY #ifdef ENABLE_THREAD_SAFETY
if (pthread_mutex_lock(&ssl_config_mutex)) if (pthread_mutex_lock(&ssl_config_mutex))
{
printfPQExpBuffer(&conn->errorMessage,
libpq_gettext("unable to acquire mutex\n"));
return -1; return -1;
}
#endif #endif
if (SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL) != 1) if (SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL) != 1)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment