]> git.sur5r.net Git - openldap/commitdiff
Add code to aid in testing Abandon/Cancel processing
authorHoward Chu <hyc@openldap.org>
Fri, 18 Feb 2005 02:40:06 +0000 (02:40 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 18 Feb 2005 02:40:06 +0000 (02:40 +0000)
clients/tools/ldapsearch.c

index c603281d970e5f7209f065ee701c03dbfa67a36a..5e07b00c1b5644a81969faa74b7a1824bd6b1d53 100644 (file)
 #include <ac/errno.h>
 #include <sys/stat.h>
 
+#if defined(TEST_ABANDON) || defined(TEST_CANCEL)
+#include <ac/signal.h>
+#endif
+
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
@@ -550,6 +554,15 @@ private_conn_setup( LDAP *ld )
        }
 }
 
+#if defined(TEST_ABANDON) || defined(TEST_CANCEL)
+static int gotintr;
+
+RETSIGTYPE
+do_sig( int sig )
+{
+       gotintr = 1;
+}
+#endif
 
 int
 main( int argc, char **argv )
@@ -609,6 +622,10 @@ main( int argc, char **argv )
                attrs = &argv[optind];
        }
 
+#if defined(TEST_ABANDON) || defined(TEST_CANCEL)
+       SIGNAL( SIGINT, do_sig );
+#endif
+
        if ( infile != NULL ) {
                if ( infile[0] == '-' && infile[1] == '\0' ) {
                        fp = stdin;
@@ -1105,6 +1122,20 @@ static int dosearch(
 
                ldap_msgfree( res );
        }
+#if defined(TEST_ABANDON) || defined(TEST_CANCEL)
+       if ( gotintr ) {
+#ifdef TEST_CANCEL
+               rc = ldap_cancel_s( ld, msgid, NULL, NULL );
+               fprintf( stderr, "got interrupt, cancel got %d\n", rc );
+               return -1;
+#endif
+#ifdef TEST_ABANDON
+               rc = ldap_abandon( ld, msgid );
+               fprintf( stderr, "got interrupt, abandon got %d\n", rc );
+               return -1;
+#endif
+       }
+#endif
 
        if ( rc == -1 ) {
                ldap_perror( ld, "ldap_result" );