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

Reset connection state on abandon

parent 6140cdf6
......@@ -541,6 +541,9 @@ operation_abandon( Operation *op )
/* The operation has already been abandoned or finished */
goto unlock;
}
if ( c->c_state == SLAP_C_BINDING ) {
c->c_state = SLAP_C_READY;
}
c->c_n_ops_executing--;
b = (Backend *)c->c_private;
CONNECTION_UNLOCK_INCREF(c);
......@@ -586,6 +589,9 @@ done:
/* Caller should hold a reference on client */
CONNECTION_LOCK(c);
if ( c->c_state == SLAP_C_BINDING ) {
c->c_state = SLAP_C_READY;
}
op->o_client_refcnt--;
operation_destroy_from_client( op );
CONNECTION_UNLOCK(c);
......@@ -623,6 +629,13 @@ request_abandon( Connection *c, Operation *op )
c->c_connid, op->o_client_msgid, slap_msgtype2str( request->o_tag ),
needle.o_client_msgid );
if ( c->c_state == SLAP_C_BINDING ) {
/* We have found the request and we are binding, it must be a bind
* request */
assert( request->o_tag == LDAP_REQ_BIND );
c->c_state = SLAP_C_READY;
}
CONNECTION_UNLOCK_INCREF(c);
operation_abandon( request );
CONNECTION_LOCK_DECREF(c);
......
......@@ -443,6 +443,9 @@ handle_one_response( Connection *c )
CONNECTION_LOCK_DECREF(c);
op->o_upstream_refcnt--;
if ( !client || !op->o_upstream_refcnt ) {
if ( c->c_state == SLAP_C_BINDING ) {
c->c_state = SLAP_C_READY;
}
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