]> git.sur5r.net Git - openldap/commitdiff
Parse server controls on each response, and print them.
authorKurt Zeilenga <kurt@openldap.org>
Wed, 18 Jul 2007 17:38:30 +0000 (17:38 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 18 Jul 2007 17:38:30 +0000 (17:38 +0000)
clients/tools/ldapcompare.c
clients/tools/ldapdelete.c
clients/tools/ldapexop.c
clients/tools/ldapmodify.c
clients/tools/ldapmodrdn.c

index 47753525e17166b6a19f4892ec6405a541ffcf3d..18f9179476238c6fc881fc03ffc45679dd90afef 100644 (file)
@@ -288,6 +288,7 @@ static int docompare(
        char            *matcheddn;
        char            *text;
        char            **refs;
+       LDAPControl **ctrls = NULL;
 
        if ( dont ) {
                return LDAP_SUCCESS;
@@ -320,7 +321,7 @@ static int docompare(
                }
        }
 
-       rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, NULL, 1 );
+       rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, &ctrls, 1 );
 
        if( rc != LDAP_SUCCESS ) {
                fprintf( stderr, "%s: ldap_parse_result: %s (%d)\n",
@@ -350,10 +351,6 @@ static int docompare(
                }
        }
 
-       ber_memfree( text );
-       ber_memfree( matcheddn );
-       ber_memvfree( (void **) refs );
-
        /* if we were told to be quiet, use the return value. */
        if ( !quiet ) {
                if ( code == LDAP_COMPARE_TRUE ) {
@@ -365,6 +362,15 @@ static int docompare(
                }
        }
 
+       if ( ctrls ) {
+               tool_print_ctrls( ld, ctrls );
+               ldap_controls_free( ctrls );
+       }
+
+       ber_memfree( text );
+       ber_memfree( matcheddn );
+       ber_memvfree( (void **) refs );
+
        return( code );
 }
 
index 8133a2d3a05d31b809b7326e3737d463f647e5b0..635db793fad8b91e83315fac08520ba59fe03f83 100644 (file)
@@ -210,6 +210,7 @@ static int dodelete(
        int id;
        int     rc, code;
        char *matcheddn = NULL, *text = NULL, **refs = NULL;
+       LDAPControl **ctrls = NULL;
        LDAPMessage *res;
 
        if ( verbose ) {
@@ -254,7 +255,7 @@ static int dodelete(
                }
        }
 
-       rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, NULL, 1 );
+       rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, &ctrls, 1 );
 
        if( rc != LDAP_SUCCESS ) {
                fprintf( stderr, "%s: ldap_parse_result: %s (%d)\n",
@@ -286,6 +287,11 @@ static int dodelete(
                }
        }
 
+       if (ctrls) {
+               tool_print_ctrls( ld, ctrls );
+               ldap_controls_free( ctrls );
+    }
+
        ber_memfree( text );
        ber_memfree( matcheddn );
        ber_memvfree( (void **) refs );
index 5a53b5be7e5fccdfd3d9699d9ad9f8ee22598a80..6de7ec2bd02a4f78eb91553005a9eb9ae56b4790 100644 (file)
@@ -70,6 +70,7 @@ main( int argc, char *argv[] )
        LDAP            *ld = NULL;
 
        char            *matcheddn = NULL, *text = NULL, **refs = NULL;
+       LDAPControl **ctrls = NULL;
        int             id, code;
        LDAPMessage     *res;
 
@@ -240,7 +241,7 @@ main( int argc, char *argv[] )
        }
 
        rc = ldap_parse_result( ld, res,
-               &code, &matcheddn, &text, &refs, NULL, 0 );
+               &code, &matcheddn, &text, &refs, &ctrls, 0 );
        if ( rc == LDAP_SUCCESS ) {
                rc = code;
        }
@@ -345,6 +346,11 @@ main( int argc, char *argv[] )
                }
        }
 
+    if (ctrls) {
+               tool_print_ctrls( ld, ctrls );
+               ldap_controls_free( ctrls );
+       }
+
        ber_memfree( text );
        ber_memfree( matcheddn );
        ber_memvfree( (void **) refs );
index dcd522c28be02fd1b33a7edd63b42f365b682e23..db600c129864a027a6b505f57a760aa500d4159f 100644 (file)
@@ -1296,7 +1296,7 @@ static int process_response(
        if ( matched ) ldap_memfree( matched );
        if ( text ) ber_memvfree( (void **)refs );
 
-       if ( ctrls != NULL ) {
+       if ( ctrls ) {
                tool_print_ctrls( ld, ctrls );
                ldap_controls_free( ctrls );
        }
index 9b03471f4776c429d3fbb0a56a5ec99b53dce358..477b74e365d1478a12f9d55fb61a704255c3d8ee 100644 (file)
@@ -241,6 +241,7 @@ static int domodrdn(
 {
        int rc, code, id;
        char *matcheddn=NULL, *text=NULL, **refs=NULL;
+       LDAPControl **ctrls = NULL;
        LDAPMessage *res;
 
     if ( verbose ) {
@@ -284,7 +285,7 @@ static int domodrdn(
                }
        }
 
-       rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, NULL, 1 );
+       rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs, &ctrls, 1 );
 
        if( rc != LDAP_SUCCESS ) {
                fprintf( stderr, "%s: ldap_parse_result: %s (%d)\n",
@@ -314,6 +315,11 @@ static int domodrdn(
                }
        }
 
+       if (ctrls) {
+               tool_print_ctrls( ld, ctrls );
+               ldap_controls_free( ctrls );
+    }
+
        ber_memfree( text );
        ber_memfree( matcheddn );
        ber_memvfree( (void **) refs );