]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/connection.c
fix previous commit
[openldap] / servers / slapd / connection.c
index 2441e6a7c9a639bce7ccd2bd88653ab9f52c5ba6..2f9ab790610e39ae41a45572783d1e1dfb773728 100644 (file)
@@ -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 );
+               }
        }
 }