summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-07-08 16:18:21 +0200
committerStefan Metzmacher <metze@samba.org>2010-07-09 09:27:16 +0200
commit49deed5a77af0a774cf186c2332416fbf6bba05b (patch)
tree4a2f44e1e7ae7233d9dc2c93c8169749fea1aafd
parent658a0f9ef84aa16c270d715283f38b9bb9e683c1 (diff)
downloadsamba-49deed5a77af0a774cf186c2332416fbf6bba05b.tar.gz
samba-49deed5a77af0a774cf186c2332416fbf6bba05b.tar.bz2
samba-49deed5a77af0a774cf186c2332416fbf6bba05b.zip
s4:drepl_out_helpers: don't return NT_STATUS_OK, if an extended operation doesn't return success
metze
-rw-r--r--source4/dsdb/repl/drepl_out_helpers.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c
index 56e1257987..d8e5b76fb7 100644
--- a/source4/dsdb/repl/drepl_out_helpers.c
+++ b/source4/dsdb/repl/drepl_out_helpers.c
@@ -365,7 +365,7 @@ static void dreplsrv_op_pull_source_get_changes_done(struct tevent_req *subreq)
uint32_t ctr_level = 0;
struct drsuapi_DsGetNCChangesCtr1 *ctr1 = NULL;
struct drsuapi_DsGetNCChangesCtr6 *ctr6 = NULL;
-
+ enum drsuapi_DsExtendedError extended_ret;
state->ndr_struct_ptr = NULL;
status = dcerpc_drsuapi_DsGetNCChanges_r_recv(subreq, r);
@@ -420,6 +420,19 @@ static void dreplsrv_op_pull_source_get_changes_done(struct tevent_req *subreq)
tevent_req_nterror(req, status);
return;
}
+ extended_ret = ctr6->extended_ret;
+ }
+
+ if (ctr_level == 1) {
+ extended_ret = ctr1->extended_ret;
+ }
+
+ if (state->op->extended_op != DRSUAPI_EXOP_NONE) {
+ if (extended_ret != DRSUAPI_EXOP_ERR_SUCCESS) {
+ status = NT_STATUS_UNSUCCESSFUL;
+ tevent_req_nterror(req, status);
+ return;
+ }
}
dreplsrv_op_pull_source_apply_changes_trigger(req, r, ctr_level, ctr1, ctr6);