]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/request.c
Minor adjustments based upon initial read of draft-ietf-ldapext-ldap-c-api-04.txt.
[openldap] / libraries / libldap / request.c
index da17e273bf3fb5d1f152e7823b0df3aa911a2c5d..aeb32ef92ba1ca8a34859841659024baeff56b7c 100644 (file)
@@ -1,3 +1,4 @@
+/* $OpenLDAP$ */
 /*
  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
@@ -29,7 +30,7 @@ static void use_connection LDAP_P(( LDAP *ld, LDAPConn *lc ));
 static void free_servers LDAP_P(( LDAPServer *srvlist ));
 
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS
-static LDAPServer *dn2servers LDAP_P(( LDAP *ld, char *dn ));
+static LDAPServer *dn2servers LDAP_P(( LDAP *ld, const char *dn ));
 #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */
 
 static BerElement *re_encode_request LDAP_P((
@@ -77,36 +78,19 @@ ldap_send_initial_request(
        const char *dn,
        BerElement *ber )
 {
-       LDAPServer      *servers, *srv;
+       LDAPServer      *servers;
 
        Debug( LDAP_DEBUG_TRACE, "ldap_send_initial_request\n", 0, 0, 0 );
 
        if ( ! ber_pvt_sb_in_use(&ld->ld_sb ) ) {
                /* not connected yet */
+               int rc = ldap_open_defconn( ld );
 
-               if (( srv = (LDAPServer *)LDAP_CALLOC( 1, sizeof( LDAPServer ))) ==
-                   NULL || ( ld->ld_defhost != NULL && ( srv->lsrv_host =
-                   LDAP_STRDUP( ld->ld_defhost )) == NULL ))
-               {
-                       if (srv != NULL) LDAP_FREE( srv );
+               if( rc < 0 ) {
                        ber_free( ber, 1 );
-                       ld->ld_errno = LDAP_NO_MEMORY;
                        return( -1 );
                }
 
-               srv->lsrv_port = ld->ld_defport;
-
-               if (( ld->ld_defconn = ldap_new_connection( ld, &srv, 1,1,0 ))
-                       == NULL )
-               {
-                       if ( ld->ld_defhost != NULL ) LDAP_FREE( srv->lsrv_host );
-                       LDAP_FREE( (char *)srv );
-                       ber_free( ber, 1 );
-                       ld->ld_errno = LDAP_SERVER_DOWN;
-                       return( -1 );
-               }
-               ++ld->ld_defconn->lconn_refcnt; /* so it never gets closed/freed */
-
                Debug( LDAP_DEBUG_TRACE,
                        "ldap_delayed_open successful, ld_host is %s\n",
                        ( ld->ld_host == NULL ) ? "(null)" : ld->ld_host, 0, 0 );
@@ -114,7 +98,7 @@ ldap_send_initial_request(
 
 
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS
-       if ( LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_DNS ))
+       if ( LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_DNS )
                && ldap_is_dns_dn( dn ) )
        {
                if (( servers = dn2servers( ld, dn )) == NULL ) {
@@ -426,12 +410,16 @@ ldap_free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind )
                        if ( unbind ) {
                                ldap_send_unbind( ld, lc->lconn_sb, NULL, NULL );
                        }
-                       ldap_close_connection( lc->lconn_sb );
-                       ber_pvt_sb_destroy( lc->lconn_sb );
-                       if( lc->lconn_ber != NULL ) {
-                               ber_free( lc->lconn_ber, 1 );
-                       }
                }
+
+               /* force closure */
+               ldap_close_connection( lc->lconn_sb );
+               ber_pvt_sb_destroy( lc->lconn_sb );
+
+               if( lc->lconn_ber != NULL ) {
+                       ber_free( lc->lconn_ber, 1 );
+               }
+
                prevlc = NULL;
                for ( tmplc = ld->ld_conns; tmplc != NULL;
                    tmplc = tmplc->lconn_next ) {
@@ -518,14 +506,15 @@ ldap_dump_requests_and_responses( LDAP *ld )
                fprintf( stderr, "   Empty\n" );
        }
        for ( ; lm != NULL; lm = lm->lm_next ) {
-               fprintf( stderr, " * msgid %d,  type %d\n",
-                   lm->lm_msgid, lm->lm_msgtype );
+               fprintf( stderr, " * msgid %d,  type %lu\n",
+                   lm->lm_msgid, (unsigned long) lm->lm_msgtype );
                if (( l = lm->lm_chain ) != NULL ) {
                        fprintf( stderr, "   chained responses:\n" );
                        for ( ; l != NULL; l = l->lm_chain ) {
                                fprintf( stderr,
-                                   "  * msgid %d,  type %d\n",
-                                   l->lm_msgid, l->lm_msgtype );
+                                   "  * msgid %d,  type %lu\n",
+                                   l->lm_msgid,
+                                   (unsigned long) l->lm_msgtype );
                        }
                }
        }
@@ -885,9 +874,10 @@ ldap_find_request_by_msgid( LDAP *ld, ber_int_t msgid )
 
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS
 static LDAPServer *
-dn2servers( LDAP *ld, char *dn )       /* dn can also be a domain.... */
+dn2servers( LDAP *ld, const char *dn ) /* dn can also be a domain.... */
 {
-       char            *p, *domain, *host, *server_dn, **dxs;
+       char            *p, *host, *server_dn, **dxs;
+       const char *domain;
        int             i, port;
        LDAPServer      *srvlist, *prevsrv, *srv;
 
@@ -905,7 +895,7 @@ dn2servers( LDAP *ld, char *dn )    /* dn can also be a domain.... */
        srvlist = NULL;
 
        for ( i = 0; dxs[ i ] != NULL; ++i ) {
-               port = openldap_ldap_global_options.ldo_defport;
+               port = ldap_int_global_options.ldo_defport;
                server_dn = NULL;
                if ( strchr( dxs[ i ], ':' ) == NULL ) {
                        host = dxs[ i ];