diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-09-25 17:53:14 -0700 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-09-26 06:29:06 +0000 |
commit | f33fc39f37c21e0d1d5cf926db1a742395f25ea7 (patch) | |
tree | 1d4743c6679f0c4e1f65cd2aefa1f760787467fc | |
parent | f3ceec9b1b9e0f2a4a40cf25cacbd157fb690de4 (diff) | |
download | samba-f33fc39f37c21e0d1d5cf926db1a742395f25ea7.tar.gz samba-f33fc39f37c21e0d1d5cf926db1a742395f25ea7.tar.bz2 samba-f33fc39f37c21e0d1d5cf926db1a742395f25ea7.zip |
s4-drs: use the system sam_ctx for updaterefs
this is needed for RODC clients calling updaterefs
-rw-r--r-- | source4/rpc_server/drsuapi/updaterefs.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/source4/rpc_server/drsuapi/updaterefs.c b/source4/rpc_server/drsuapi/updaterefs.c index a41eec89b4..3863ac7c98 100644 --- a/source4/rpc_server/drsuapi/updaterefs.c +++ b/source4/rpc_server/drsuapi/updaterefs.c @@ -125,25 +125,26 @@ WERROR drsuapi_UpdateRefs(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ct { WERROR werr; struct ldb_dn *dn; + struct ldb_context *sam_ctx = b_state->sam_ctx_system?b_state->sam_ctx_system:b_state->sam_ctx; DEBUG(4,("DsReplicaUpdateRefs for host '%s' with GUID %s options 0x%08x nc=%s\n", req->dest_dsa_dns_name, GUID_string(mem_ctx, &req->dest_dsa_guid), req->options, drs_ObjectIdentifier_to_string(mem_ctx, req->naming_context))); - dn = ldb_dn_new(mem_ctx, b_state->sam_ctx, req->naming_context->dn); + dn = ldb_dn_new(mem_ctx, sam_ctx, req->naming_context->dn); if (dn == NULL) { return WERR_DS_INVALID_DN_SYNTAX; } - if (ldb_transaction_start(b_state->sam_ctx) != LDB_SUCCESS) { + if (ldb_transaction_start(sam_ctx) != LDB_SUCCESS) { DEBUG(0,(__location__ ": Failed to start transaction on samdb: %s\n", - ldb_errstring(b_state->sam_ctx))); + ldb_errstring(sam_ctx))); return WERR_DS_DRA_INTERNAL_ERROR; } if (req->options & DRSUAPI_DRS_DEL_REF) { - werr = uref_del_dest(b_state->sam_ctx, mem_ctx, dn, &req->dest_dsa_guid, req->options); + werr = uref_del_dest(sam_ctx, mem_ctx, dn, &req->dest_dsa_guid, req->options); if (!W_ERROR_IS_OK(werr)) { DEBUG(0,("Failed to delete repsTo for %s: %s\n", GUID_string(mem_ctx, &req->dest_dsa_guid), @@ -164,7 +165,7 @@ WERROR drsuapi_UpdateRefs(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ct dest.source_dsa_obj_guid = req->dest_dsa_guid; dest.replica_flags = req->options; - werr = uref_add_dest(b_state->sam_ctx, mem_ctx, dn, &dest, req->options); + werr = uref_add_dest(sam_ctx, mem_ctx, dn, &dest, req->options); if (!W_ERROR_IS_OK(werr)) { DEBUG(0,("Failed to add repsTo for %s: %s\n", GUID_string(mem_ctx, &dest.source_dsa_obj_guid), @@ -173,16 +174,16 @@ WERROR drsuapi_UpdateRefs(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ct } } - if (ldb_transaction_commit(b_state->sam_ctx) != LDB_SUCCESS) { + if (ldb_transaction_commit(sam_ctx) != LDB_SUCCESS) { DEBUG(0,(__location__ ": Failed to commit transaction on samdb: %s\n", - ldb_errstring(b_state->sam_ctx))); + ldb_errstring(sam_ctx))); return WERR_DS_DRA_INTERNAL_ERROR; } return WERR_OK; failed: - ldb_transaction_cancel(b_state->sam_ctx); + ldb_transaction_cancel(sam_ctx); return werr; } |