1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
/** BEGIN COPYRIGHT BLOCK
* Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
* Copyright (C) 2005 Red Hat, Inc.
* All rights reserved.
*
* License: GPL (version 3 or any later version).
* See LICENSE for details.
* END COPYRIGHT BLOCK **/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "cb.h"
/*
* Perform an abandon operation
*
* Returns:
* 0 - success
* <0 - fail
*
*/
int
chaining_back_abandon(Slapi_PBlock *pb __attribute__((unused)))
{
/*
* Abandon forwarded to the farm server for scoped
* searches only. Done in cb_search.c
*/
return 0;
}
int
cb_check_forward_abandon(cb_backend_instance *cb, Slapi_PBlock *pb, LDAP *ld, int msgid)
{
int rc;
LDAPControl **ctrls = NULL;
if (slapi_op_abandoned(pb)) {
if ((rc = cb_forward_operation(pb)) != LDAP_SUCCESS) {
return 0;
}
if ((rc = cb_update_controls(pb, ld, &ctrls, CB_UPDATE_CONTROLS_ISABANDON)) != LDAP_SUCCESS) {
if (NULL != ctrls)
ldap_controls_free(ctrls);
return 0;
}
rc = ldap_abandon_ext(ld, msgid, ctrls, NULL);
cb_release_op_connection(cb->pool, ld, CB_LDAP_CONN_ERROR(rc));
if (NULL != ctrls)
ldap_controls_free(ctrls);
return 1;
}
return 0;
}
|