summaryrefslogtreecommitdiff
path: root/source4/dsdb/repl/drepl_periodic.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/dsdb/repl/drepl_periodic.c')
-rw-r--r--source4/dsdb/repl/drepl_periodic.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/source4/dsdb/repl/drepl_periodic.c b/source4/dsdb/repl/drepl_periodic.c
index 60f3581f5f..fe0fb6dd1c 100644
--- a/source4/dsdb/repl/drepl_periodic.c
+++ b/source4/dsdb/repl/drepl_periodic.c
@@ -116,5 +116,21 @@ static void dreplsrv_periodic_run(struct dreplsrv_service *service)
dreplsrv_ridalloc_check_rid_pool(service);
dreplsrv_run_pending_ops(service);
- dreplsrv_notify_run_ops(service);
+}
+
+/*
+ run the next pending op, either a notify or a pull
+ */
+void dreplsrv_run_pending_ops(struct dreplsrv_service *s)
+{
+ if (!s->ops.notifies && !s->ops.pending) {
+ return;
+ }
+ if (!s->ops.notifies ||
+ (s->ops.pending &&
+ s->ops.notifies->schedule_time > s->ops.pending->schedule_time)) {
+ dreplsrv_run_pull_ops(s);
+ } else {
+ dreplsrv_notify_run_ops(s);
+ }
}