diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index 2441e6a7c9a639bce7ccd2bd88653ab9f52c5ba6..2f9ab790610e39ae41a45572783d1e1dfb773728 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -767,7 +767,12 @@ void connection_closing( Connection *c ) /* wake write blocked operations */ slapd_clr_write( sd, 1 ); - ldap_pvt_thread_cond_signal( &c->c_write_cv ); + if ( c->c_writewaiter ) { + ldap_pvt_thread_cond_signal( &c->c_write_cv ); + ldap_pvt_thread_mutex_unlock( &c->c_mutex ); + ldap_pvt_thread_yield(); + ldap_pvt_thread_mutex_lock( &c->c_mutex ); + } } }