diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-09-15 20:24:50 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-09-16 07:24:01 +1000 |
commit | 05ec123b3b159dade51980f3c4bf8662502bb38e (patch) | |
tree | 9ced42fc113eb2646acb9e49598c6df12ee4a10d /source4/dsdb/repl/drepl_service.c | |
parent | 520252c8d2b7465d592a05ee68bd466e71330a1f (diff) | |
download | samba-05ec123b3b159dade51980f3c4bf8662502bb38e.tar.gz samba-05ec123b3b159dade51980f3c4bf8662502bb38e.tar.bz2 samba-05ec123b3b159dade51980f3c4bf8662502bb38e.zip |
s4-repl: add partial attribute set to getncchanges calls for RODCs
when we are a RODC we must supply a partial attribute set in the
getncchanges call
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/dsdb/repl/drepl_service.c')
-rw-r--r-- | source4/dsdb/repl/drepl_service.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source4/dsdb/repl/drepl_service.c b/source4/dsdb/repl/drepl_service.c index ae765a5979..c4ad6d8974 100644 --- a/source4/dsdb/repl/drepl_service.c +++ b/source4/dsdb/repl/drepl_service.c @@ -76,6 +76,11 @@ static WERROR dreplsrv_connect_samdb(struct dreplsrv_service *service, struct lo } service->ntds_guid = *ntds_guid; + if (samdb_rodc(service->samdb, &service->am_rodc) != LDB_SUCCESS) { + DEBUG(0,(__location__ ": Failed to determine RODC status\n")); + return WERR_DS_UNAVAILABLE; + } + bind_info28 = &service->bind_info28; bind_info28->supported_extensions |= DRSUAPI_SUPPORTED_EXTENSION_BASE; bind_info28->supported_extensions |= DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION; @@ -379,8 +384,6 @@ static void dreplsrv_task_init(struct task_server *task) WERROR status; struct dreplsrv_service *service; uint32_t periodic_startup_interval; - bool am_rodc; - int ret; switch (lpcfg_server_role(task->lp_ctx)) { case ROLE_STANDALONE: @@ -443,8 +446,7 @@ static void dreplsrv_task_init(struct task_server *task) } /* if we are a RODC then we do not send DSReplicaSync*/ - ret = samdb_rodc(service->samdb, &am_rodc); - if (ret == LDB_SUCCESS && !am_rodc) { + if (!service->am_rodc) { service->notify.interval = lpcfg_parm_int(task->lp_ctx, NULL, "dreplsrv", "notify_interval", 5); /* in seconds */ status = dreplsrv_notify_schedule(service, service->notify.interval); |