Commit 46fe0143 authored by Ondřej Kuzník's avatar Ondřej Kuzník Committed by Ondřej Kuzník
Browse files

Make sure operation stays alive when we process it

parent 0ff462b6
......@@ -401,6 +401,7 @@ handle_one_response( Connection *c )
client = op->o_client;
if ( client ) {
CONNECTION_LOCK(client);
op->o_client_refcnt++;
CONNECTION_UNLOCK_INCREF(client);
}
ldap_pvt_thread_mutex_unlock( &operation_mutex );
......@@ -408,6 +409,10 @@ handle_one_response( Connection *c )
if ( client ) {
rc = handler( op, ber );
CONNECTION_LOCK_DECREF(client);
op->o_client_refcnt--;
if ( !op->o_client_refcnt ) {
operation_destroy_from_client( op );
}
CLIENT_UNLOCK_OR_DESTROY(client);
} else {
ber_free( ber, 1 );
......@@ -415,7 +420,7 @@ handle_one_response( Connection *c )
CONNECTION_LOCK_DECREF(c);
op->o_upstream_refcnt--;
if ( !client || !op->o_upstream_live ) {
if ( !client || !op->o_upstream_refcnt ) {
operation_destroy_from_upstream( op );
}
} else {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment