assert( connections != NULL );
assert( index != NULL );
- assert( *index >= 0 && *index < MCA_ARRAY_SIZE );
+ assert( *index >= 0 && *index <= dtblsize );
if( c != NULL ) ldap_pvt_thread_mutex_unlock( &c->c_mutex );
}
}
-static int connection_bind_cb( Operation *op, SlapReply *rs )
+static int connection_bind_cleanup_cb( Operation *op, SlapReply *rs )
{
- slap_callback *cb = op->o_callback;
+ op->o_conn->c_sasl_bindop = NULL;
+
+ return SLAP_CB_CONTINUE;
+}
+static int connection_bind_cb( Operation *op, SlapReply *rs )
+{
ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
op->o_conn->c_conn_state = SLAP_C_ACTIVE;
op->o_conn->c_sasl_bind_in_progress =
if (tag == LDAP_REQ_BIND) {
slap_callback *sc = ch_calloc( 1, sizeof( slap_callback ));
sc->sc_response = connection_bind_cb;
+ sc->sc_cleanup = connection_bind_cleanup_cb;
sc->sc_next = op->o_callback;
op->o_callback = sc;
op->o_conn->c_conn_state = SLAP_C_BINDING;
return rc;
}
-#ifdef SLAP_LIGHTWEIGHT_DISPATCHER
-static int connection_write( ber_socket_t s );
-static void *connection_write_thread( void *ctx, void *arg )
-{
- return (void *)(long)connection_write((long)arg);
-}
-
-int connection_write_activate( ber_socket_t s )
-{
- int rc;
-
- /*
- * suspend reading on this file descriptor until a connection processing
- * thread write data on it. Otherwise the listener thread will repeatedly
- * submit the same event on it to the pool.
- */
- slapd_clr_write( s, 0);
-
- rc = ldap_pvt_thread_pool_submit( &connection_pool,
- connection_write_thread, (void *)(long)s );
-
- if( rc != 0 ) {
- Debug( LDAP_DEBUG_ANY,
- "connection_write_activate(%d): submit failed (%d)\n",
- (int) s, rc, 0 );
- }
- return rc;
-}
-
-static
-#endif
int connection_write(ber_socket_t s)
{
Connection *c;
assert( connections != NULL );
+ slapd_clr_write( s, 0 );
+
ldap_pvt_thread_mutex_lock( MCA_GET_CONN_MUTEX( s ) );
c = connection_get( s );
return -1;
}
-#ifndef SLAP_LIGHTWEIGHT_DISPATCHER
- slapd_clr_write( s, 0);
-#endif
c->c_n_write++;
Debug( LDAP_DEBUG_TRACE,