]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/cancel.c
Another abandon check
[openldap] / servers / slapd / cancel.c
index a5ef060282aaa4908855d963256e43ab40125e3e..12dfabb3fead793675b53e96dac05d4eb0a6b457 100644 (file)
@@ -1,8 +1,17 @@
-/* $OpenLDAP$ */
 /* cancel.c - LDAP cancel extended operation */
-/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2005 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
 
 #include "portable.h"
@@ -16,8 +25,6 @@
 
 #include "slap.h"
 
-#ifdef LDAP_EXOP_X_CANCEL
-
 #include <lber_pvt.h>
 #include <lutil.h>
 
@@ -59,6 +66,8 @@ 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, slap_op, o_next );
+                       LDAP_STAILQ_NEXT(o, o_next) = NULL;
+                       op->o_conn->c_n_ops_pending--;
                        slap_op_free( o );
                        found = 1;
                        break;
@@ -78,7 +87,6 @@ int cancel_extop( Operation *op, SlapReply *rs )
        }
 
        if ( !found ) {
-#ifdef LDAP_SYNC
                for ( i = 0; i < nbackends; i++ ) {
                        op->o_bd = &backends[i];
                        if( !op->o_bd->be_cancel ) continue;
@@ -91,7 +99,6 @@ int cancel_extop( Operation *op, SlapReply *rs )
                        }
                        ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
                }
-#endif
                ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
                rs->sr_text = "message ID not found";
                return LDAP_NO_SUCH_OPERATION;
@@ -120,5 +127,3 @@ int cancel_extop( Operation *op, SlapReply *rs )
 
        return rc;
 }
-
-#endif /* LDAP_EXOP_X_CANCEL */