]> git.sur5r.net Git - openldap/commitdiff
ITS#6137
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 5 Jun 2009 00:22:08 +0000 (00:22 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 5 Jun 2009 00:22:08 +0000 (00:22 +0000)
CHANGES
servers/slapd/cancel.c

diff --git a/CHANGES b/CHANGES
index af091212dfc3535cd198618f6ebf8a14faa714ea..ab1fb801b82fc694dadbd5a65678d86aba04f28d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,7 @@ OpenLDAP 2.4.17 Engineering
        Added slapd schema checking tool (ITS#6150)
        Added slapd writetimeout keyword (ITS#5836)
        Fixed slapd assert with closing connections (ITS#6111)
+       Fixed slapd cancel behavior (ITS#6137)
        Fixed slapd cert validation (ITS#6098)
        Fixed slapd errno handling (ITS#6037)
        Fixed slapd global alloc handling (ITS#6054)
index ef35046c0af611c4f39c6156087fd42ebc911989..5e65e090db6d4a9e305656a1fc7c14b8455cc2c6 100644 (file)
@@ -68,12 +68,14 @@ int cancel_extop( Operation *op, SlapReply *rs )
 
        LDAP_STAILQ_FOREACH( o, &op->o_conn->c_pending_ops, o_next ) {
                if ( o->o_msgid == opid ) {
-                       LDAP_STAILQ_REMOVE( &op->o_conn->c_pending_ops, o, Operation, o_next );
-                       LDAP_STAILQ_NEXT(o, o_next) = NULL;
-                       op->o_conn->c_n_ops_pending--;
-                       slap_op_free( o, NULL );
                        ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
-                       return LDAP_SUCCESS;
+                       /* TODO: We could instead remove the cancelled operation
+                        * from c_pending_ops like Abandon does, and send its
+                        * response here.  Not if it is pending because of a
+                        * congested connection though.
+                        */
+                       rs->sr_text = "too busy for Cancel, try Abandon instead";
+                       return LDAP_CANNOT_CANCEL;
                }
        }