mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
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
This commit is contained in:
parent
f31c149f13
commit
8359ed806f
@ -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)
|
|||||||
*/
|
*/
|
||||||
#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)
|
|||||||
|
|
||||||
#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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user