*/
int connections_init(void)
{
+ int i;
+
assert( connections == NULL );
if( connections != NULL) {
assert( connections[0].c_struct_state == SLAP_C_UNINITIALIZED );
assert( connections[dtblsize-1].c_struct_state == SLAP_C_UNINITIALIZED );
+ for (i=0; i<dtblsize; i++) connections[i].c_conn_idx = i;
+
/*
* per entry initialization of the Connection array initialization
* will be done by connection_init()
*/
#if 0
memsiz = ber_len( op->o_ber ) * 64;
- if ( SLMALLOC_SLAB_SIZE > memsiz ) memsiz = SLMALLOC_SLAB_SIZE;
+ if ( SLAP_SLAB_SIZE > memsiz ) memsiz = SLAP_SLAB_SIZE;
#endif
- memsiz = SLMALLOC_SLAB_SIZE;
+ memsiz = SLAP_SLAB_SIZE;
- memctx = sl_mem_create( memsiz, ctx );
+ memctx = slap_sl_mem_create( memsiz, ctx );
op->o_tmpmemctx = memctx;
- op->o_tmpmfuncs = &sl_mfuncs;
+ op->o_tmpmfuncs = &slap_sl_mfuncs;
if ( tag != LDAP_REQ_ADD && tag != LDAP_REQ_MODIFY ) {
/* Note - the ber and its buffer are already allocated from
* regular memory; this only affects subsequent mallocs that
if ( op->o_cancel != SLAP_CANCEL_ACK &&
( op->o_sync_mode & SLAP_SYNC_PERSIST ) ) {
- sl_mem_detach( ctx, memctx );
+ slap_sl_mem_detach( ctx, memctx );
} else if (( op->o_sync_slog_size != -1 )) {
- sl_mem_detach( ctx, memctx );
+ slap_sl_mem_detach( ctx, memctx );
LDAP_STAILQ_REMOVE( &conn->c_ops, op, slap_op, o_next);
LDAP_STAILQ_NEXT(op, o_next) = NULL;
conn->c_n_ops_executing--;
return NULL;
}
+static const Listener dummy_list = { {0, ""}, {0, ""} };
+
int connection_client_setup(
ber_socket_t s,
- Listener *l,
ldap_pvt_thread_start_t *func,
void *arg )
{
Connection *c;
- if ( connection_init( s, l, "", "", CONN_IS_CLIENT, 0, NULL ) < 0 ) {
+ if ( connection_init( s, (Listener *)&dummy_list, "", "", CONN_IS_CLIENT, 0, NULL ) < 0 ) {
return -1;
}
#ifdef HAVE_TLS
if ( c->c_is_tls && c->c_needs_tls_accept ) {
- rc = ldap_pvt_tls_accept( c->c_sb, NULL );
+ rc = ldap_pvt_tls_accept( c->c_sb, slap_tls_ctx );
if ( rc < 0 ) {
#if 0 /* required by next #if 0 */
struct timeval tv;
} else if ( rc == 0 ) {
void *ssl;
- struct berval authid = { 0, NULL };
+ struct berval authid = BER_BVNULL;
c->c_needs_tls_accept = 0;
defer = "awaiting write";
} else if (conn->c_n_ops_executing >= connection_pool_max/2) {
defer = "too many executing";
- } else if (conn->c_conn_state == SLAP_C_BINDING ) {
+ } else if (conn->c_conn_state == SLAP_C_BINDING) {
defer = "binding";
- } else if (conn->c_n_ops_pending) {
+ } else if (tag != LDAP_REQ_ABANDON && conn->c_n_ops_pending) {
defer = "pending operations";
}
return 0;
}
+void
+connection_fake_init(
+ Connection *conn,
+ Operation *op,
+ void *ctx )
+{
+ conn->c_connid = -1;
+ conn->c_send_ldap_result = slap_send_ldap_result;
+ conn->c_send_search_entry = slap_send_search_entry;
+ conn->c_send_search_reference = slap_send_search_reference;
+ conn->c_listener = (Listener *)&dummy_list;
+ conn->c_peer_name = slap_empty_bv;
+
+ /* set memory context */
+ op->o_tmpmemctx = slap_sl_mem_create( SLAP_SLAB_SIZE, ctx );
+ op->o_tmpmfuncs = &slap_sl_mfuncs;
+ op->o_threadctx = ctx;
+
+ op->o_conn = conn;
+ op->o_connid = op->o_conn->c_connid;
+
+ op->o_time = slap_get_time();
+}