diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-07-08 16:20:11 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-07-09 09:27:16 +0200 |
commit | 538bb9b3ec2d3250bb97fe6f6f01e6917399fd01 (patch) | |
tree | 38cdc716ee5172b55de6ed2b0afdd6b1e6f35c6d | |
parent | 49deed5a77af0a774cf186c2332416fbf6bba05b (diff) | |
download | samba-538bb9b3ec2d3250bb97fe6f6f01e6917399fd01.tar.gz samba-538bb9b3ec2d3250bb97fe6f6f01e6917399fd01.tar.bz2 samba-538bb9b3ec2d3250bb97fe6f6f01e6917399fd01.zip |
s4:dsdb/repl: expose drsuapi_DsExtendedError to the caller (e.g. the ridalloc client)
metze
-rw-r--r-- | source4/dsdb/repl/drepl_out_helpers.c | 2 | ||||
-rw-r--r-- | source4/dsdb/repl/drepl_out_pull.c | 4 | ||||
-rw-r--r-- | source4/dsdb/repl/drepl_ridalloc.c | 8 | ||||
-rw-r--r-- | source4/dsdb/repl/drepl_service.h | 5 |
4 files changed, 13 insertions, 6 deletions
diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c index d8e5b76fb7..24110529c5 100644 --- a/source4/dsdb/repl/drepl_out_helpers.c +++ b/source4/dsdb/repl/drepl_out_helpers.c @@ -428,6 +428,8 @@ static void dreplsrv_op_pull_source_get_changes_done(struct tevent_req *subreq) } if (state->op->extended_op != DRSUAPI_EXOP_NONE) { + state->op->extended_ret = extended_ret; + if (extended_ret != DRSUAPI_EXOP_ERR_SUCCESS) { status = NT_STATUS_UNSUCCESSFUL; tevent_req_nterror(req, status); diff --git a/source4/dsdb/repl/drepl_out_pull.c b/source4/dsdb/repl/drepl_out_pull.c index c82b48dcbe..e9b57a1fec 100644 --- a/source4/dsdb/repl/drepl_out_pull.c +++ b/source4/dsdb/repl/drepl_out_pull.c @@ -154,13 +154,13 @@ static void dreplsrv_pending_op_callback(struct tevent_req *subreq) DEBUG(1,("dreplsrv_op_pull_source(%s/%s) for %s failures[%u]\n", win_errstr(rf->result_last_attempt), - win_errstr(rf->result_last_attempt), + nt_errstr(werror_to_ntstatus(rf->result_last_attempt)), ldb_dn_get_linearized(op->source_dsa->partition->dn), rf->consecutive_sync_failures)); done: if (op->callback) { - op->callback(s, rf->result_last_attempt); + op->callback(s, rf->result_last_attempt, op->extended_ret); } talloc_free(op); s->ops.current = NULL; diff --git a/source4/dsdb/repl/drepl_ridalloc.c b/source4/dsdb/repl/drepl_ridalloc.c index 918307b363..eaff581083 100644 --- a/source4/dsdb/repl/drepl_ridalloc.c +++ b/source4/dsdb/repl/drepl_ridalloc.c @@ -100,11 +100,13 @@ static WERROR drepl_create_rid_manager_source_dsa(struct dreplsrv_service *servi /* called when a rid allocation request has completed */ -static void drepl_new_rid_pool_callback(struct dreplsrv_service *service, WERROR werr) +static void drepl_new_rid_pool_callback(struct dreplsrv_service *service, + WERROR werr, + enum drsuapi_DsExtendedError ext_err) { if (!W_ERROR_IS_OK(werr)) { - DEBUG(0,(__location__ ": RID Manager failed RID allocation - %s\n", - win_errstr(werr))); + DEBUG(0,(__location__ ": RID Manager failed RID allocation - %s - extended_ret[0x%X]\n", + win_errstr(werr), ext_err)); } else { DEBUG(3,(__location__ ": RID Manager completed RID allocation OK\n")); } diff --git a/source4/dsdb/repl/drepl_service.h b/source4/dsdb/repl/drepl_service.h index 88be769128..eefd4da7f4 100644 --- a/source4/dsdb/repl/drepl_service.h +++ b/source4/dsdb/repl/drepl_service.h @@ -101,7 +101,9 @@ struct dreplsrv_partition { struct dreplsrv_partition_source_dsa *sources; }; -typedef void (*dreplsrv_fsmo_callback_t)(struct dreplsrv_service *, WERROR ); +typedef void (*dreplsrv_fsmo_callback_t)(struct dreplsrv_service *, + WERROR, + enum drsuapi_DsExtendedError); struct dreplsrv_out_operation { struct dreplsrv_out_operation *prev, *next; @@ -113,6 +115,7 @@ struct dreplsrv_out_operation { enum drsuapi_DsExtendedOperation extended_op; uint64_t fsmo_info; dreplsrv_fsmo_callback_t callback; + enum drsuapi_DsExtendedError extended_ret; }; struct dreplsrv_notify_operation { |