]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/connection.c
added slapi_operation_set_pb
[openldap] / servers / slapd / connection.c
index 3abf5fd841bef7dfd078e636ed563abb0eb3798e..62328798c81de38da6e597c4fe67be1624fb659c 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -395,22 +395,28 @@ long connection_init(
        if( c == NULL ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( CONNECTION, INFO, 
-                          "connection_init: skt %d      connection table full (%d/%d)\n",
-                          s, i, dtblsize );
+                          "connection_init: skt %d connection table full "
+                          "(%d/%d)\n", s, i, dtblsize );
 #else
                Debug( LDAP_DEBUG_ANY,
-                               "connection_init(%d): connection table full (%d/%d)\n",
-                               s, i, dtblsize);
+                               "connection_init(%d): connection table full "
+                               "(%d/%d)\n", s, i, dtblsize);
 #endif
            ldap_pvt_thread_mutex_unlock( &connections_mutex );
            return -1;
        }
-    }
+       }
 #endif
 
-    assert( c != NULL );
+       assert( c != NULL );
 
        if( c->c_struct_state == SLAP_C_UNINITIALIZED ) {
+               c->c_send_ldap_result = slap_send_ldap_result;
+               c->c_send_search_entry = slap_send_search_entry;
+               c->c_send_search_result = slap_send_search_result;
+               c->c_send_search_reference = slap_send_search_reference;
+               c->c_send_ldap_extended = slap_send_ldap_extended;
+
                c->c_authmech.bv_val = NULL;
                c->c_authmech.bv_len = 0;
                c->c_dn.bv_val = NULL;
@@ -635,22 +641,6 @@ connection_destroy( Connection *c )
        }
        c->c_peer_domain.bv_len = 0;
        if(c->c_peer_name.bv_val != NULL) {
-#ifdef LDAP_PF_LOCAL
-               /*
-                * If peer was a domain socket, unlink. Mind you,
-                * they may be un-named. Should we leave this to
-                * the client?
-                */
-               if (strncmp(c->c_peer_name.bv_val, "PATH=", 
-                                       sizeof("PATH=") - 1) == 0) {
-                       char *path = c->c_peer_name.bv_val 
-                               + sizeof("PATH=") - 1;
-                       if (path[0] != '\0') {
-                               (void)unlink(path);
-                       }
-               }
-#endif /* LDAP_PF_LOCAL */
-
                free(c->c_peer_name.bv_val);
                c->c_peer_name.bv_val = NULL;
        }
@@ -1042,10 +1032,11 @@ operations_error:
        LDAP_STAILQ_REMOVE( &conn->c_ops, arg->co_op, slap_op, o_next);
        LDAP_STAILQ_NEXT(arg->co_op, o_next) = NULL;
 #ifdef LDAP_CLIENT_UPDATE
-       if ( !( arg->co_op->o_clientupdate_type & SLAP_LCUP_PERSIST ) ) {
+       if ( !( arg->co_op->o_clientupdate_type & SLAP_LCUP_PERSIST ) )
+#endif /* LDAP_CLIENT_UPDATE */
+       {
                slap_op_free( arg->co_op );
        }
-#endif /* LDAP_CLIENT_UPDATE */
        arg->co_op = NULL;
        arg->co_conn = NULL;
        free( (char *) arg );
@@ -1237,16 +1228,20 @@ int connection_read(ber_socket_t s)
 #endif
 
 #define CONNECTION_INPUT_LOOP 1
+/* #define     DATA_READY_LOOP 1 */
 
-#ifdef DATA_READY_LOOP
-       while( !rc && ber_sockbuf_ctrl( c->c_sb, LBER_SB_DATA_READY, NULL ) )
-#elif CONNECTION_INPUT_LOOP
-       while(!rc)
-#endif
+       do
        {
                /* How do we do this without getting into a busy loop ? */
                rc = connection_input( c );
        }
+#ifdef DATA_READY_LOOP
+       while( !rc && ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_DATA_READY, NULL ) );
+#elif CONNECTION_INPUT_LOOP
+       while(!rc);
+#else
+       while(0);
+#endif
 
        if( rc < 0 ) {
 #ifdef NEW_LOGGING