X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconnection.c;h=766ca439bf0ce53f5c10611bfe00a655a4ff1c87;hb=f8fb4aca7668c722f41941be719203aa8c298e12;hp=de09e7a2a26b7df83b1a0f56703c977d2fc5f4ce;hpb=10961151ef251aae8fd0e8e304879f260d6b5c79;p=openldap diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index de09e7a2a2..766ca439bf 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -1,6 +1,6 @@ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -417,7 +417,8 @@ long connection_init( c->c_dn.bv_len = 0; c->c_ndn.bv_val = NULL; c->c_ndn.bv_len = 0; - c->c_cdn = NULL; + c->c_cdn.bv_val = NULL; + c->c_cdn.bv_len = 0; c->c_groups = NULL; c->c_listener_url = NULL; @@ -425,8 +426,8 @@ long connection_init( c->c_peer_name = NULL; c->c_sock_name = NULL; - STAILQ_INIT(&c->c_ops); - STAILQ_INIT(&c->c_pending_ops); + LDAP_STAILQ_INIT(&c->c_ops); + LDAP_STAILQ_INIT(&c->c_pending_ops); c->c_sasl_bind_mech = NULL; c->c_sasl_context = NULL; @@ -455,14 +456,14 @@ long connection_init( assert( c->c_authmech == NULL ); assert( c->c_dn.bv_val == NULL ); assert( c->c_ndn.bv_val == NULL ); - assert( c->c_cdn == NULL ); + assert( c->c_cdn.bv_val == NULL ); assert( c->c_groups == NULL ); assert( c->c_listener_url == NULL ); assert( c->c_peer_domain == NULL ); assert( c->c_peer_name == NULL ); assert( c->c_sock_name == NULL ); - assert( STAILQ_EMPTY(&c->c_ops) ); - assert( STAILQ_EMPTY(&c->c_pending_ops) ); + assert( LDAP_STAILQ_EMPTY(&c->c_ops) ); + assert( LDAP_STAILQ_EMPTY(&c->c_pending_ops) ); assert( c->c_sasl_bind_mech == NULL ); assert( c->c_sasl_context == NULL ); assert( c->c_sasl_extra == NULL ); @@ -504,6 +505,8 @@ long connection_init( #endif ber_sockbuf_add_io( c->c_sb, &ber_sockbuf_io_udp, LBER_SBIOD_LEVEL_PROVIDER, (void *)&s ); + ber_sockbuf_add_io( c->c_sb, &ber_sockbuf_io_readahead, + LBER_SBIOD_LEVEL_PROVIDER, NULL ); } else #endif { @@ -514,8 +517,6 @@ long connection_init( ber_sockbuf_add_io( c->c_sb, &ber_sockbuf_io_tcp, LBER_SBIOD_LEVEL_PROVIDER, (void *)&s ); } - ber_sockbuf_add_io( c->c_sb, &ber_sockbuf_io_readahead, - LBER_SBIOD_LEVEL_PROVIDER, NULL ); #ifdef LDAP_DEBUG ber_sockbuf_add_io( c->c_sb, &ber_sockbuf_io_debug, @@ -591,10 +592,11 @@ void connection2anonymous( Connection *c ) } c->c_ndn.bv_len = 0; - if(c->c_cdn != NULL) { - free(c->c_cdn); - c->c_cdn = NULL; + if(c->c_cdn.bv_val != NULL) { + free(c->c_cdn.bv_val); + c->c_cdn.bv_val = NULL; } + c->c_cdn.bv_len = 0; c->c_authc_backend = NULL; c->c_authz_backend = NULL; @@ -621,7 +623,7 @@ connection_destroy( Connection *c ) assert( c != NULL ); assert( c->c_struct_state != SLAP_C_UNUSED ); assert( c->c_conn_state != SLAP_C_INVALID ); - assert( STAILQ_EMPTY(&c->c_ops) ); + assert( LDAP_STAILQ_EMPTY(&c->c_ops) ); backend_connection_destroy(c); @@ -720,16 +722,16 @@ static void connection_abandon( Connection *c ) Operation *o; - STAILQ_FOREACH(o, &c->c_ops, o_next) { + LDAP_STAILQ_FOREACH(o, &c->c_ops, o_next) { ldap_pvt_thread_mutex_lock( &o->o_abandonmutex ); o->o_abandon = 1; ldap_pvt_thread_mutex_unlock( &o->o_abandonmutex ); } /* remove pending operations */ - while ( (o = STAILQ_FIRST( &c->c_pending_ops )) != NULL) { - STAILQ_REMOVE_HEAD( &c->c_pending_ops, o_next ); - STAILQ_NEXT(o, o_next) = NULL; + while ( (o = LDAP_STAILQ_FIRST( &c->c_pending_ops )) != NULL) { + LDAP_STAILQ_REMOVE_HEAD( &c->c_pending_ops, o_next ); + LDAP_STAILQ_NEXT(o, o_next) = NULL; slap_op_free( o ); } } @@ -783,7 +785,7 @@ static void connection_close( Connection *c ) /* note: connections_mutex and c_mutex should be locked by caller */ ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_GET_FD, &sd ); - if( !STAILQ_EMPTY(&c->c_ops) ) { + if( !LDAP_STAILQ_EMPTY(&c->c_ops) ) { #ifdef NEW_LOGGING LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1, "connection_close: conn %d deferring sd %d\n", @@ -986,8 +988,8 @@ operations_error: conn->c_n_ops_executing--; conn->c_n_ops_completed++; - STAILQ_REMOVE( &conn->c_ops, arg->co_op, slap_op, o_next); - STAILQ_NEXT(arg->co_op, o_next) = NULL; + LDAP_STAILQ_REMOVE( &conn->c_ops, arg->co_op, slap_op, o_next); + LDAP_STAILQ_NEXT(arg->co_op, o_next) = NULL; slap_op_free( arg->co_op ); arg->co_op = NULL; arg->co_conn = NULL; @@ -1218,13 +1220,13 @@ connection_input( char *cdn = NULL; #endif - if ( conn->c_currentber == NULL && (conn->c_currentber = ber_alloc_t(0)) + if ( conn->c_currentber == NULL && (conn->c_currentber = ber_alloc()) == NULL ) { #ifdef NEW_LOGGING LDAP_LOG(( "connection", LDAP_LEVEL_ERR, - "connection_input: conn %d ber_alloc_t failed.\n", conn->c_connid )); + "connection_input: conn %d ber_alloc failed.\n", conn->c_connid )); #else - Debug( LDAP_DEBUG_ANY, "ber_alloc_t failed\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_ANY, "ber_alloc failed\n", 0, 0, 0 ); #endif return -1; } @@ -1351,7 +1353,7 @@ connection_input( Debug( LDAP_DEBUG_ANY, "deferring operation\n", 0, 0, 0 ); #endif conn->c_n_ops_pending++; - STAILQ_INSERT_TAIL( &conn->c_pending_ops, op, o_next ); + LDAP_STAILQ_INSERT_TAIL( &conn->c_pending_ops, op, o_next ); } else { conn->c_n_ops_executing++; @@ -1434,9 +1436,9 @@ connection_resched( Connection *conn ) return 0; } - while ((op = STAILQ_FIRST( &conn->c_pending_ops )) != NULL) { - STAILQ_REMOVE_HEAD( &conn->c_pending_ops, o_next ); - STAILQ_NEXT(op, o_next) = NULL; + while ((op = LDAP_STAILQ_FIRST( &conn->c_pending_ops )) != NULL) { + LDAP_STAILQ_REMOVE_HEAD( &conn->c_pending_ops, o_next ); + LDAP_STAILQ_NEXT(op, o_next) = NULL; /* pending operations should not be marked for abandonment */ assert(!op->o_abandon); @@ -1483,7 +1485,7 @@ static int connection_op_activate( Connection *conn, Operation *op ) } arg->co_op->o_connid = conn->c_connid; - STAILQ_INSERT_TAIL( &conn->c_ops, arg->co_op, o_next ); + LDAP_STAILQ_INSERT_TAIL( &conn->c_ops, arg->co_op, o_next ); status = ldap_pvt_thread_pool_submit( &connection_pool, connection_operation, (void *) arg ); @@ -1586,7 +1588,7 @@ int connection_internal_open( Connection **conn, LDAP **ldp, const char *id ) op->o_protocol = LDAP_VERSION3; (*conn) = connection_get( fd[1] ); - STAILQ_INSERT_HEAD( &(*conn)->c_ops, op, o_next); + LDAP_STAILQ_INSERT_HEAD( &(*conn)->c_ops, op, o_next); (*conn)->c_conn_state = SLAP_C_ACTIVE; /* Create the client side of the connection */ @@ -1605,10 +1607,10 @@ int connection_internal_open( Connection **conn, LDAP **ldp, const char *id ) void connection_internal_close( Connection *conn ) { - Operation *op = STAILQ_FIRST(&conn->c_ops); + Operation *op = LDAP_STAILQ_FIRST(&conn->c_ops); - STAILQ_REMOVE_HEAD(&conn->c_ops, o_next); - STAILQ_NEXT(op, o_next) = NULL; + LDAP_STAILQ_REMOVE_HEAD(&conn->c_ops, o_next); + LDAP_STAILQ_NEXT(op, o_next) = NULL; slap_op_free( op ); connection_closing( conn ); connection_close( conn );