]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/connection.c
Fix ITS#3424
[openldap] / servers / slapd / connection.c
index 44c4e9faf75e9fa8d837fa590c31dedafe7ec5a9..43987952e86f1e8343271ea18bb6c4f94543b784 100644 (file)
@@ -946,7 +946,7 @@ connection_operation( void *ctx, void *arg_v )
 #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 ) {
@@ -1068,11 +1068,11 @@ operations_error:
 
        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);
@@ -1080,7 +1080,9 @@ operations_error:
                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 );
@@ -1438,15 +1440,10 @@ connection_input(
        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;
 
@@ -1708,8 +1705,11 @@ connection_fake_init(
        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;