X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibrewrite%2Fsession.c;h=aa738d85c34902efd7c3048ef7014946d088c058;hb=3e2cf8cae7bec60d0430328c06e8002b2c17572b;hp=02fc0540b33e2a18b011cbddf0d21a26a29c4b50;hpb=a26706d135b06f9c70a6ea90ddcff9c3a49f8c15;p=openldap diff --git a/libraries/librewrite/session.c b/libraries/librewrite/session.c index 02fc0540b3..aa738d85c3 100644 --- a/libraries/librewrite/session.c +++ b/libraries/librewrite/session.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2014 The OpenLDAP Foundation. + * Copyright 2000-2017 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -100,6 +100,9 @@ rewrite_session_init( session = calloc( sizeof( struct rewrite_session ), 1 ); if ( session == NULL ) { +#ifdef USE_REWRITE_LDAP_PVT_THREADS + ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex ); +#endif /* USE_REWRITE_LDAP_PVT_THREADS */ return NULL; } session->ls_cookie = ( void * )cookie; @@ -108,11 +111,13 @@ rewrite_session_init( #ifdef USE_REWRITE_LDAP_PVT_THREADS if ( ldap_pvt_thread_mutex_init( &session->ls_mutex ) ) { free( session ); + ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex ); return NULL; } if ( ldap_pvt_thread_rdwr_init( &session->ls_vars_mutex ) ) { ldap_pvt_thread_mutex_destroy( &session->ls_mutex ); free( session ); + ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex ); return NULL; } #endif /* USE_REWRITE_LDAP_PVT_THREADS */ @@ -122,7 +127,7 @@ rewrite_session_init( info->li_num_cookies++; #ifdef USE_REWRITE_LDAP_PVT_THREADS - ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex ); + ldap_pvt_thread_rdwr_wunlock( &info->li_cookies_mutex ); #endif /* USE_REWRITE_LDAP_PVT_THREADS */ if ( rc != 0 ) {