client->c_type = SLAP_C_OPEN;
client_reset( client );
+
+ rc = tavl_insert( &client->c_ops, op, operation_client_cmp, avl_dup_error );
+ assert( rc == LDAP_SUCCESS );
CONNECTION_UNLOCK_INCREF(client);
upstream = backend_select( op );
if ( !--op->o_client_refcnt ) {
operation_destroy_from_client( op );
- } else {
- rc = tavl_insert(
- &client->c_ops, op, operation_client_cmp, avl_dup_error );
- assert( rc == LDAP_SUCCESS );
+ if ( client->c_state == SLAP_C_BINDING ) {
+ client->c_state = SLAP_C_READY;
+ client->c_type = SLAP_C_OPEN;
+ if ( !BER_BVISNULL( &client->c_auth ) ) {
+ ber_memfree( client->c_auth.bv_val );
+ BER_BVZERO( &client->c_auth );
+ }
+ if ( !BER_BVISNULL( &client->c_sasl_bind_mech ) ) {
+ ber_memfree( client->c_sasl_bind_mech.bv_val );
+ BER_BVZERO( &client->c_sasl_bind_mech );
+ }
+ }
}
return rc;