ldap_pvt_thread_mutex_init( &connections_mutex );
ldap_pvt_thread_mutex_init( &conn_nextid_mutex );
- connections = (Connection *) ch_calloc( SLAPD_GLOBAL(dtblsize), sizeof(Connection) );
+ connections = (Connection *) ch_calloc( dtblsize, sizeof(Connection) );
if( connections == NULL ) {
Debug( LDAP_DEBUG_ANY,
"connections_init: allocation (%d*%ld) of connection array failed\n",
- SLAPD_GLOBAL(dtblsize), (long) sizeof(Connection), 0 );
+ dtblsize, (long) sizeof(Connection), 0 );
return -1;
}
assert( connections[0].c_struct_state == SLAP_C_UNINITIALIZED );
- assert( connections[SLAPD_GLOBAL(dtblsize)-1].c_struct_state == SLAP_C_UNINITIALIZED );
+ assert( connections[dtblsize-1].c_struct_state == SLAP_C_UNINITIALIZED );
- for (i=0; i<SLAPD_GLOBAL(dtblsize); i++) connections[i].c_conn_idx = i;
+ for (i=0; i<dtblsize; i++) connections[i].c_conn_idx = i;
/*
* per entry initialization of the Connection array initialization
return -1;
}
- for ( i = 0; i < SLAPD_GLOBAL(dtblsize); i++ ) {
+ for ( i = 0; i < dtblsize; i++ ) {
if( connections[i].c_struct_state != SLAP_C_UNINITIALIZED ) {
ber_sockbuf_free( connections[i].c_sb );
ldap_pvt_thread_mutex_destroy( &connections[i].c_mutex );
ldap_pvt_thread_mutex_destroy( &connections[i].c_write_mutex );
ldap_pvt_thread_cond_destroy( &connections[i].c_write_cv );
#ifdef LDAP_SLAPI
- if ( SLAPD_GLOBAL(slapi_plugins_used) ) {
+ if ( slapi_plugins_used ) {
slapi_int_free_object_extensions( SLAPI_X_EXT_CONNECTION, &connections[i] );
}
#endif
ldap_pvt_thread_mutex_lock( &connections_mutex );
- for ( i = 0; i < SLAPD_GLOBAL(dtblsize); i++ ) {
+ for ( i = 0; i < dtblsize; i++ ) {
if( connections[i].c_struct_state != SLAP_C_USED ) {
continue;
}
/* give persistent clients a chance to cleanup */
if( connections[i].c_conn_state == SLAP_C_CLIENT ) {
- ldap_pvt_thread_pool_submit( &SLAPD_GLOBAL(connection_pool),
+ ldap_pvt_thread_pool_submit( &connection_pool,
connections[i].c_clientfunc, connections[i].c_clientarg );
continue;
}
if( c->c_n_ops_executing ||
c->c_conn_state == SLAP_C_CLIENT ) continue;
- if( difftime( c->c_activitytime+SLAPD_GLOBAL(idletimeout), now) < 0 ) {
+ if( difftime( c->c_activitytime+global_idletimeout, now) < 0 ) {
/* close it */
connection_closing( c );
connection_close( c );
{
ber_socket_t i, sd;
- for(i=0; i<SLAPD_GLOBAL(dtblsize); i++) {
+ for(i=0; i<dtblsize; i++) {
if( connections[i].c_struct_state == SLAP_C_UNINITIALIZED ) {
assert( connections[i].c_conn_state == SLAP_C_INVALID );
assert( connections[i].c_sb == 0 );
assert( sd != AC_SOCKET_INVALID );
#ifndef SLAPD_MONITOR
- if ( SLAPD_GLOBAL(idletimeout) > 0 )
+ if ( global_idletimeout > 0 )
#endif /* ! SLAPD_MONITOR */
{
c->c_activitytime = slap_get_time();
assert( s >= 0 );
#ifndef HAVE_WINSOCK
- assert( s < SLAPD_GLOBAL(dtblsize) );
+ assert( s < dtblsize );
#endif
ldap_pvt_thread_mutex_lock( &connections_mutex );
ber_socket_t i;
c = NULL;
- for( i=0; i < SLAPD_GLOBAL(dtblsize); i++) {
+ for( i=0; i < dtblsize; i++) {
ber_socket_t sd;
if( connections[i].c_struct_state == SLAP_C_UNINITIALIZED ) {
if( c == NULL ) {
Debug( LDAP_DEBUG_ANY,
"connection_init(%d): connection table full "
- "(%d/%d)\n", s, i, SLAPD_GLOBAL(dtblsize));
+ "(%d/%d)\n", s, i, dtblsize);
ldap_pvt_thread_mutex_unlock( &connections_mutex );
return -1;
}
c->c_sb = ber_sockbuf_alloc( );
{
- ber_len_t max = SLAPD_GLOBAL(sockbuf_max_incoming);
+ ber_len_t max = sockbuf_max_incoming;
ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_SET_MAX_INCOMING, &max );
}
ldap_pvt_thread_cond_init( &c->c_write_cv );
#ifdef LDAP_SLAPI
- if ( SLAPD_GLOBAL(slapi_plugins_used) ) {
+ if ( slapi_plugins_used ) {
slapi_int_create_object_extensions( SLAPI_X_EXT_CONNECTION, c );
}
#endif
c->c_protocol = 0;
#ifndef SLAPD_MONITOR
- if ( SLAPD_GLOBAL(idletimeout) > 0 )
+ if ( global_idletimeout > 0 )
#endif /* ! SLAPD_MONITOR */
{
c->c_activitytime = c->c_starttime = slap_get_time();
assert( c != NULL );
{
- ber_len_t max = SLAPD_GLOBAL(sockbuf_max_incoming);
+ ber_len_t max = sockbuf_max_incoming;
ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_SET_MAX_INCOMING, &max );
}
c->c_sb = ber_sockbuf_alloc( );
{
- ber_len_t max = SLAPD_GLOBAL(sockbuf_max_incoming);
+ ber_len_t max = sockbuf_max_incoming;
ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_SET_MAX_INCOMING, &max );
}
#ifdef LDAP_SLAPI
/* call destructors, then constructors; avoids unnecessary allocation */
- if ( SLAPD_GLOBAL(slapi_plugins_used) ) {
+ if ( slapi_plugins_used ) {
slapi_int_clear_object_extensions( SLAPI_X_EXT_CONNECTION, c );
}
#endif
{
assert( connections != NULL );
assert( index != NULL );
- assert( *index <= SLAPD_GLOBAL(dtblsize) );
+ assert( *index <= dtblsize );
if( c != NULL ) {
ldap_pvt_thread_mutex_unlock( &c->c_mutex );
c = NULL;
- for(; *index < SLAPD_GLOBAL(dtblsize); (*index)++) {
+ for(; *index < dtblsize; (*index)++) {
if( connections[*index].c_struct_state == SLAP_C_UNINITIALIZED ) {
assert( connections[*index].c_conn_state == SLAP_C_INVALID );
#ifndef HAVE_WINSOCK
/* FIXME: returns 0 in case of failure */
#define INCR_OP_INITIATED(index) \
do { \
- ldap_pvt_thread_mutex_lock( &SLAPD_GLOBAL(counters).sc_ops_mutex ); \
- ldap_pvt_mp_add_ulong(SLAPD_GLOBAL(counters).sc_ops_initiated_[(index)], 1); \
- ldap_pvt_thread_mutex_unlock( &SLAPD_GLOBAL(counters).sc_ops_mutex ); \
+ ldap_pvt_thread_mutex_lock( &slap_counters.sc_ops_mutex ); \
+ ldap_pvt_mp_add_ulong(slap_counters.sc_ops_initiated_[(index)], 1); \
+ ldap_pvt_thread_mutex_unlock( &slap_counters.sc_ops_mutex ); \
} while (0)
#define INCR_OP_COMPLETED(index) \
do { \
- ldap_pvt_thread_mutex_lock( &SLAPD_GLOBAL(counters).sc_ops_mutex ); \
- ldap_pvt_mp_add_ulong(SLAPD_GLOBAL(counters).sc_ops_completed, 1); \
- ldap_pvt_mp_add_ulong(SLAPD_GLOBAL(counters).sc_ops_completed_[(index)], 1); \
- ldap_pvt_thread_mutex_unlock( &SLAPD_GLOBAL(counters).sc_ops_mutex ); \
+ ldap_pvt_thread_mutex_lock( &slap_counters.sc_ops_mutex ); \
+ ldap_pvt_mp_add_ulong(slap_counters.sc_ops_completed, 1); \
+ ldap_pvt_mp_add_ulong(slap_counters.sc_ops_completed_[(index)], 1); \
+ ldap_pvt_thread_mutex_unlock( &slap_counters.sc_ops_mutex ); \
} while (0)
#else /* !SLAPD_MONITOR */
#define INCR_OP_INITIATED(index)
void *memctx_null = NULL;
ber_len_t memsiz;
- ldap_pvt_thread_mutex_lock( &SLAPD_GLOBAL(counters).sc_ops_mutex );
+ ldap_pvt_thread_mutex_lock( &slap_counters.sc_ops_mutex );
/* FIXME: returns 0 in case of failure */
- ldap_pvt_mp_add_ulong(SLAPD_GLOBAL(counters).sc_ops_initiated, 1);
- ldap_pvt_thread_mutex_unlock( &SLAPD_GLOBAL(counters).sc_ops_mutex );
+ ldap_pvt_mp_add_ulong(slap_counters.sc_ops_initiated, 1);
+ ldap_pvt_thread_mutex_unlock( &slap_counters.sc_ops_mutex );
op->o_threadctx = ctx;
#endif
memsiz = SLAP_SLAB_SIZE;
- memctx = slap_sl_mem_create( memsiz, ctx );
+ memctx = slap_sl_mem_create( memsiz, SLAP_SLAB_STACK, ctx );
op->o_tmpmemctx = memctx;
op->o_tmpmfuncs = &slap_sl_mfuncs;
if ( tag != LDAP_REQ_ADD && tag != LDAP_REQ_MODIFY ) {
assert( 0 );
}
#endif /* SLAPD_MONITOR */
- ldap_pvt_thread_mutex_unlock( &SLAPD_GLOBAL(counters).sc_ops_mutex );
+ ldap_pvt_thread_mutex_unlock( &slap_counters.sc_ops_mutex );
if ( op->o_cancel == SLAP_CANCEL_REQ ) {
op->o_cancel = LDAP_TOO_LATE;
ber_set_option( op->o_ber, LBER_OPT_BER_MEMCTX, &memctx_null );
+#if 0 /* DELETE ME */
if ( op->o_cancel != SLAP_CANCEL_ACK &&
( op->o_sync_mode & SLAP_SYNC_PERSIST ) )
{
slap_sl_mem_detach( ctx, memctx );
-
} else if ( op->o_sync_slog_size != -1 ) {
slap_sl_mem_detach( ctx, memctx );
LDAP_STAILQ_REMOVE( &conn->c_ops, op, slap_op, o_next);
conn->c_n_ops_executing--;
conn->c_n_ops_completed++;
- } else {
+ } else
+#endif
+ {
LDAP_STAILQ_REMOVE( &conn->c_ops, op, slap_op, o_next);
LDAP_STAILQ_NEXT(op, o_next) = NULL;
slap_op_free( op );
if ( c->c_conn_state == SLAP_C_CLIENT ) {
slapd_clr_read( s, 0 );
- ldap_pvt_thread_pool_submit( &SLAPD_GLOBAL(connection_pool),
+ ldap_pvt_thread_pool_submit( &connection_pool,
c->c_clientfunc, c->c_clientarg );
connection_return( c );
ldap_pvt_thread_mutex_unlock( &connections_mutex );
#ifdef HAVE_TLS
if ( c->c_is_tls && c->c_needs_tls_accept ) {
- rc = ldap_pvt_tls_accept( c->c_sb, SLAPD_GLOBAL(tls_ctx) );
+ rc = ldap_pvt_tls_accept( c->c_sb, slap_tls_ctx );
if ( rc < 0 ) {
#if 0 /* required by next #if 0 */
struct timeval tv;
op = slap_op_alloc( ber, msgid, tag, conn->c_n_ops_received++ );
op->o_conn = conn;
- op->o_assertion = NULL;
- op->o_preread_attrs = NULL;
- op->o_postread_attrs = NULL;
- op->o_vrFilter = NULL;
/* clear state if the connection is being reused from inactive */
if ( conn->c_conn_state == SLAP_C_INACTIVE ) {
memset( &conn->c_pagedresults_state, 0, sizeof( conn->c_pagedresults_state ) );
}
- op->o_pagedresults_state = conn->c_pagedresults_state;
op->o_res_ber = NULL;
defer = "closing";
} else if (tag != LDAP_REQ_ABANDON && conn->c_writewaiter) {
defer = "awaiting write";
- } else if (conn->c_n_ops_executing >= SLAPD_GLOBAL(connection_pool_max)/2) {
+ } else if (conn->c_n_ops_executing >= connection_pool_max/2) {
defer = "too many executing";
} else if (conn->c_conn_state == SLAP_C_BINDING) {
defer = "binding";
if( defer ) {
int max = conn->c_dn.bv_len
- ? SLAPD_GLOBAL(conn_max_pending_auth)
- : SLAPD_GLOBAL(conn_max_pending);
+ ? slap_conn_max_pending_auth
+ : slap_conn_max_pending;
Debug( LDAP_DEBUG_ANY,
"connection_input: conn=%lu deferring operation: %s\n",
}
while ((op = LDAP_STAILQ_FIRST( &conn->c_pending_ops )) != NULL) {
- if ( conn->c_n_ops_executing > SLAPD_GLOBAL(connection_pool_max)/2 ) {
+ if ( conn->c_n_ops_executing > connection_pool_max/2 ) {
break;
}
LDAP_STAILQ_REMOVE_HEAD( &conn->c_pending_ops, o_next );
LDAP_STAILQ_INSERT_TAIL( &op->o_conn->c_ops, op, o_next );
- status = ldap_pvt_thread_pool_submit( &SLAPD_GLOBAL(connection_pool),
+ status = ldap_pvt_thread_pool_submit( &connection_pool,
connection_operation, (void *) op );
if ( status != 0 ) {
conn->c_peer_domain = slap_empty_bv;
conn->c_peer_name = slap_empty_bv;
+ memset(op, 0, OPERATION_BUFFER_SIZE);
+ op->o_hdr = (Opheader *)(op+1);
+ op->o_controls = (void **)(op->o_hdr+1);
/* set memory context */
- op->o_tmpmemctx = slap_sl_mem_create( SLAP_SLAB_SIZE, ctx );
+ op->o_tmpmemctx = slap_sl_mem_create(SLAP_SLAB_SIZE, SLAP_SLAB_STACK, ctx);
op->o_tmpmfuncs = &slap_sl_mfuncs;
op->o_threadctx = ctx;