]> git.sur5r.net Git - openldap/commitdiff
Patch: Non-unique msgid for abandon in back-<shell,tcl> (ITS#1793)
authorKurt Zeilenga <kurt@openldap.org>
Wed, 5 Jun 2002 16:40:16 +0000 (16:40 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 5 Jun 2002 16:40:16 +0000 (16:40 +0000)
================
Written by Hallvard B. Furuseth and placed into the public domain.
This software is not subject to any license of the University of Oslo.
================

It has just occurred to me - duh - that the process ID of a back-shell
command is a perfectly good unique ID for it, and more useful than
any connection id/message id thingy.  Doesn't need extra arguments
to the shell commands either, except a pid: line to abandon.
And msgid: can still be removed in a future version.
Here is a patch.

Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>, May 2002.

doc/man/man5/slapd-shell.5
servers/slapd/back-shell/abandon.c
servers/slapd/back-shell/add.c
servers/slapd/back-shell/bind.c
servers/slapd/back-shell/compare.c
servers/slapd/back-shell/delete.c
servers/slapd/back-shell/modify.c
servers/slapd/back-shell/modrdn.c
servers/slapd/back-shell/search.c
servers/slapd/back-shell/unbind.c

index 0beee6d65781911b3c1ea7457c2c91e5e9d55250..a880f68c6a04232b14ca769e621403838cd44521 100644 (file)
@@ -15,10 +15,8 @@ make it easy to tie an existing database to the
 front-end.
 .SH WARNING
 .B "This backend's calling conventions have changed since OpenLDAP 2.0."
-The operations receive a new "opid:" (operation ID) line, to be used
-instead of "msgid:".
-The "msgid:" line will be removed in a future version.
-Also, abandon now gets a new "abandonid:" line.
+The abandon operation now gets a new "pid:" line.
+The "msgid:" lines will be removed in a future version.
 .SH CONFIGURATION
 These
 .B slapd.conf
@@ -36,17 +34,15 @@ Each option is followed by the input lines that the program receives:
 .B abandon  <pathname> <argument>...
 .nf
 ABANDON
-opid: <operation ID>
 msgid: <message ID of operation to abandon>
 <repeat { "suffix:" <database suffix DN> }>
-abandonid: <operation ID of operation to abandon>
+pid: <process ID of operation to abandon>
 .fi
 .TP
 .B add      <pathname> <argument>...
 .nf
 ADD
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 <entry in LDIF format>
 .fi
@@ -54,8 +50,7 @@ msgid: <message ID>
 .B bind     <pathname> <argument>...
 .nf
 BIND
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 dn: <DN>
 method: <method number>
@@ -66,8 +61,7 @@ cred: <credentials>
 .B compare  <pathname> <argument>...
 .nf
 COMPARE
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 dn: <DN>
 <attribute>: <value>
@@ -76,8 +70,7 @@ dn: <DN>
 .B delete   <pathname> <argument>...
 .nf
 DELETE
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 dn: <DN>
 .fi
@@ -85,8 +78,7 @@ dn: <DN>
 .B modify   <pathname> <argument>...
 .nf
 MODIFY
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 dn: <DN>
 <repeat {
@@ -99,8 +91,7 @@ dn: <DN>
 .B modrdn   <pathname> <argument>...
 .nf
 MODRDN
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 dn: <DN>
 newrdn: <new RDN>
@@ -111,8 +102,7 @@ deleteoldrdn: <0 or 1>
 .B search   <pathname> <argument>...
 .nf
 SEARCH
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 base: <base DN>
 scope: <0-2, see ldap.h>
@@ -127,16 +117,11 @@ attrs: <"all" or space-separated attribute list>
 .B unbind   <pathname> <argument>...
 .nf
 UNBIND
-opid: <operation ID>
-msgid: <message ID>
+msgid: <message id>
 <repeat { "suffix:" <database suffix DN> }>
 dn: <bound DN>
 .fi
 .LP
-An
-.I operation ID
-is a "connection ID/message ID" string identifying an operation.
-.LP
 Note that you need only supply configuration lines for those commands you
 want the backend to handle.
 Operations for which a command is not supplied will be refused with an
index cae990af5bd83f4bcfeb3cb6d949dbe6ebdf770a..9761f23376d82a70c9a5b4e4762e057d79b39925 100644 (file)
@@ -38,24 +38,19 @@ shell_back_abandon(
                                break;
                        }
                }
-               if( pid == -1 ) {
-                       LDAP_STAILQ_FOREACH( o, &conn->c_pending_ops, o_next ) {
-                               if ( o->o_msgid == msgid ) {
-                                       pid = (pid_t) o->o_private;
-                                       break;
-                               }
-                       }
-               }
-               ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
+       }
+       ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
+
+       if ( pid == -1 ) {
+               Debug( LDAP_DEBUG_ARGS, "shell could not find op %d\n", msgid, 0, 0 );
+               return 0;
+       }
 
-               if ( pid != -1 ) {
-                       Debug( LDAP_DEBUG_ARGS, "shell killing pid %d\n",
+       /* no abandon command defined - just kill the process handling it */
+       if ( si->si_abandon == NULL ) {
+               Debug( LDAP_DEBUG_ARGS, "shell killing pid %d\n",
                               (int) pid, 0, 0 );
-                       kill( pid, SIGTERM );
-               } else {
-                       Debug( LDAP_DEBUG_ARGS, "shell could not find op %d\n",
-                           msgid, 0, 0 );
-               }
+               kill( pid, SIGTERM );
                return 0;
        }
 
@@ -65,10 +60,9 @@ shell_back_abandon(
 
        /* write out the request to the abandon process */
        fprintf( wfp, "ABANDON\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %d\n", msgid );
        print_suffixes( wfp, be );
-       fprintf( wfp, "abandonid: %ld/%d\n", op->o_connid, msgid );
+       fprintf( wfp, "pid: %ld\n", (long) pid );
        fclose( wfp );
 
        /* no result from abandon */
index 134416866b6cdeb547e72fd76b857708dfb3bb20..1d08c0c0887def0ccf79e7c07e10fd1396e39c3e 100644 (file)
@@ -41,7 +41,6 @@ shell_back_add(
 
        /* write out the request to the add process */
        fprintf( wfp, "ADD\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        ldap_pvt_thread_mutex_lock( &entry2str_mutex );
index fe36059215e8317cc303aa4fcfa248a03a3bfcad..e41c06c1f2f46214810be2ff28391054595f1368 100644 (file)
@@ -46,7 +46,6 @@ shell_back_bind(
 
        /* write out the request to the bind process */
        fprintf( wfp, "BIND\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "dn: %s\n", dn->bv_val );
index b5ef2d24eb83fe2719344162f97d7aa1cc4e9c32..4b19e8f37488df695178bf7d78306d867abafd4b 100644 (file)
@@ -48,7 +48,6 @@ shell_back_compare(
 
        /* write out the request to the compare process */
        fprintf( wfp, "COMPARE\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "dn: %s\n", dn->bv_val );
index e675f8062e0110289ca75bd66aed1d2f344433d6..6d3b27908d6437ee9996729887d0e747a2b7ba13 100644 (file)
@@ -42,7 +42,6 @@ shell_back_delete(
 
        /* write out the request to the delete process */
        fprintf( wfp, "DELETE\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "dn: %s\n", dn->bv_val );
index 5acddbe994d9173753832b8d301e2905045d048f..0b1719eddd971602a0a176135db8bc3e28862927 100644 (file)
@@ -45,7 +45,6 @@ shell_back_modify(
 
        /* write out the request to the modify process */
        fprintf( wfp, "MODIFY\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "dn: %s\n", dn->bv_val );
index e2c7d64d5f046b7c921c30179a57b5f38915e3a4..68bfed97957e5ef9f7c0c57db5c20fff13905d95 100644 (file)
@@ -60,7 +60,6 @@ shell_back_modrdn(
 
        /* write out the request to the modrdn process */
        fprintf( wfp, "MODRDN\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "dn: %s\n", dn->bv_val );
index a1579e20e215e31c5291f1528a96efc7c19a504e..c8c1118172449f9ccc9bb587bdcc6410817087a8 100644 (file)
@@ -51,7 +51,6 @@ shell_back_search(
 
        /* write out the request to the search process */
        fprintf( wfp, "SEARCH\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "base: %s\n", base->bv_val );
index a4327f99e2066b2f73b64e6817528140de3aa30e..e54173d7bac16a4f4211c3be7e118dce9967970a 100644 (file)
@@ -36,7 +36,6 @@ shell_back_unbind(
 
        /* write out the request to the unbind process */
        fprintf( wfp, "UNBIND\n" );
-       fprintf( wfp, "opid: %ld/%ld\n", op->o_connid, (long) op->o_msgid );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
        fprintf( wfp, "dn: %s\n", (conn->c_dn.bv_len ? conn->c_dn.bv_val : "") );