return 0;
}
-
-/*
- * Create client side and server side connection structures, connected to
- * one another, for the front end to use for searches on arbitrary back ends.
- */
-
-int connection_internal_open( Connection **conn, LDAP **ldp, const char *id )
-{
- int rc;
- ber_socket_t fd[2] = {-1,-1};
- Operation *op;
-
- *conn=NULL;
- *ldp=NULL;
-
- rc = lutil_pair( fd );
- if( rc == -1 ) {
- return LDAP_OTHER;
- }
-
- rc = connection_init( fd[1], "INT", "localhost",
- "localhost:0", "localhost:00", 0, 256, id );
- if( rc < 0 ) {
- tcp_close( fd[0] );
- tcp_close( fd[1] );
- return LDAP_OTHER;
- }
- slapd_add_internal( fd[1] );
-
- /* A search operation, number 0 */
- op = slap_op_alloc( NULL, 0, LDAP_REQ_SEARCH, 0);
- op->o_ndn.bv_val = ch_strdup( id );
- op->o_ndn.bv_len = strlen( id );
- op->o_protocol = LDAP_VERSION3;
-
- (*conn) = connection_get( fd[1] );
- LDAP_STAILQ_INSERT_HEAD( &(*conn)->c_ops, op, o_next);
- (*conn)->c_conn_state = SLAP_C_ACTIVE;
-
- /* Create the client side of the connection */
- rc = ldap_open_internal_connection( ldp, &(fd[0]) );
- if( rc != LDAP_SUCCESS ) {
- tcp_close( fd[0] );
- return LDAP_OTHER;
- }
-
- /* The connection_get() will have locked the connection's mutex */
- ldap_pvt_thread_mutex_unlock( &((*conn)->c_mutex) );
-
- return LDAP_SUCCESS;
-}
-
-
-void connection_internal_close( Connection *conn )
-{
- Operation *op = LDAP_STAILQ_FIRST(&conn->c_ops);
-
- 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 );
-}