ITS#4667 in connection_closing, release c_mutex to allow waiters

to clear out.
This commit is contained in:
Howard Chu 2006-09-08 23:31:53 +00:00
parent da6a4bcd3e
commit f82ee25ec1

View file

@ -829,9 +829,15 @@ void connection_closing( Connection *c, const char *why )
connection_abandon( c );
/* wake write blocked operations */
slapd_clr_write( sd, 1 );
if ( c->c_writewaiter ) {
ldap_pvt_thread_cond_signal( &c->c_write_cv );
ldap_pvt_thread_mutex_unlock( &c->c_mutex );
slapd_clr_write( sd, 1 );
ldap_pvt_thread_mutex_lock( &c->c_write_mutex );
ldap_pvt_thread_mutex_lock( &c->c_mutex );
ldap_pvt_thread_mutex_unlock( &c->c_write_mutex );
} else {
slapd_clr_write( sd, 1 );
}
} else if( why == NULL && c->c_close_reason == conn_lost_str ) {