postgres.git / summary / log / commit / refs

commit    1e8e324326be8fa907b51ba262cf0a21cb015ca3
Author:   Stephen Frost <sfrost@snowman.net>
Date:     Thu Aug 01 19:42:07 2013 +0000
First released in: 9.4.0, 9.0.14, 9.1.10, 9.2.5, 9.3.0

    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


src/interfaces/libpq/fe-secure.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index 37de533ad6d..ba063a09ce1 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)) || @@ -1113,7 +1117,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) { @@ -1327,7 +1335,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) { [parent: 9d7f66bc6c62]