diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-07-08 16:18:21 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-07-09 09:27:16 +0200 |
commit | 49deed5a77af0a774cf186c2332416fbf6bba05b (patch) | |
tree | 4a2f44e1e7ae7233d9dc2c93c8169749fea1aafd | |
parent | 658a0f9ef84aa16c270d715283f38b9bb9e683c1 (diff) | |
download | samba-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.c | 15 |
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); |