break;
case LDAP_TAG_SearchRequest:
+ /* check if we are already processing this request */
+ if (req->in_dispatch_replies) {
+ return;
+ }
+
+ req->in_dispatch_replies = true;
+
/* loop over all messages */
for (i = 0; i < req->num_replies; i++) {
if (ret != LDB_SUCCESS) {
callback_failed = true;
}
+
break;
case LDAP_TAG_SearchResultReference:
if (ret != LDB_SUCCESS) {
callback_failed = true;
}
+
break;
default:
}
}
+ req->in_dispatch_replies = false;
+
talloc_free(req->replies);
req->replies = NULL;
req->num_replies = 0;
for (i = 0; i < n; i++) {
msg->r.AddRequest.attributes[i] = mods[i]->attrib;
}
+ msg->controls = req->controls;
return ildb_request_send(ac, msg);
}
for (i = 0; i < n; i++) {
msg->r.ModifyRequest.mods[i] = *mods[i];
}
-
+ msg->controls = req->controls;
return ildb_request_send(ac, msg);
}
talloc_free(msg);
return LDB_ERR_INVALID_DN_SYNTAX;
}
+ msg->controls = req->controls;
return ildb_request_send(ac, msg);
}
}
msg->r.ModifyDNRequest.deleteolddn = true;
+ msg->controls = req->controls;
return ildb_request_send(ac, msg);
}
struct loadparm_context *lp_ctx;
module = ldb_module_new(ldb, ldb, "ldb_ildap backend", &ildb_ops);
- if (!module) return -1;
+ if (!module) return LDB_ERR_OPERATIONS_ERROR;
ildb = talloc(module, struct ildb_private);
if (!ildb) {
}
*_module = module;
- return 0;
+ return LDB_SUCCESS;
failed:
talloc_free(module);
- return -1;
+ return LDB_ERR_OPERATIONS_ERROR;
}
_PUBLIC_ const struct ldb_backend_ops ldb_ldap_backend_ops = {