r11547: - don't do pull replication when pullIntervall is 0
authorStefan Metzmacher <metze@samba.org>
Mon, 7 Nov 2005 13:22:51 +0000 (13:22 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:45:52 +0000 (13:45 -0500)
- don't do push replication when pushChangeCount is 0

metze
(This used to be commit 4122e9ec3a4394738fa3c261dc92938ea86c3822)

source4/wrepl_server/wrepl_out_connection.c
source4/wrepl_server/wrepl_server.c
source4/wrepl_server/wrepl_server.h

index 0d5bfda185bb07e322cec5b410b4b65486f21ec7..e1bade5f877596a0b871e0dee6c8e415f2356564 100644 (file)
@@ -236,12 +236,12 @@ NTSTATUS wreplsrv_setup_out_connections(struct wreplsrv_service *service)
        struct wreplsrv_partner *cur;
 
        for (cur = service->partners; cur; cur = cur->next) {
-               if (cur->type & WINSREPL_PARTNER_PULL) {
+               if ((cur->type & WINSREPL_PARTNER_PULL) && cur->pull.interval) {
                        cur->pull.te = event_add_timed(service->task->event_ctx, cur,
                                                       timeval_zero(), wreplsrv_pull_handler_te, cur);
                        NT_STATUS_HAVE_NO_MEMORY(cur->pull.te);
                }
-               if (cur->type & WINSREPL_PARTNER_PUSH) {
+               if ((cur->type & WINSREPL_PARTNER_PUSH) && cur->push.change_count) {
                        cur->push.te = event_add_timed(service->task->event_ctx, cur,
                                                       timeval_zero(), wreplsrv_push_handler_te, cur);
                        NT_STATUS_HAVE_NO_MEMORY(cur->push.te);
index 06a323d103dd0f81cdef348a2172a244fdd7b3ab..f4c44c55c07da7e52c9b707f30c4ef08978ef739 100644 (file)
@@ -84,14 +84,17 @@ static NTSTATUS wreplsrv_load_partners(struct wreplsrv_service *service)
                if (partner == NULL) goto failed;
                partner->service        = service;
 
-               partner->address        = ldb_msg_find_string(res[i], "address", NULL);
+               partner->address                = ldb_msg_find_string(res[i], "address", NULL);
                if (!partner->address) goto failed;
-               partner->name           = ldb_msg_find_string(res[i], "name", partner->address);
-               partner->type           = ldb_msg_find_int(res[i], "type", WINSREPL_PARTNER_BOTH);
-               partner->pull.interval  = ldb_msg_find_int(res[i], "pullInterval", WINSREPL_DEFAULT_PULL_INTERVAL);
-               partner->pull.retry_interval = ldb_msg_find_int(res[i], "pullRetryInterval",
-                                                               WINSREPL_DEFAULT_PULL_RETRY_INTERVAL);
-               partner->our_address    = ldb_msg_find_string(res[i], "ourAddress", NULL);
+               partner->name                   = ldb_msg_find_string(res[i], "name", partner->address);
+               partner->type                   = ldb_msg_find_uint(res[i], "type", WINSREPL_PARTNER_BOTH);
+               partner->pull.interval          = ldb_msg_find_uint(res[i], "pullInterval",
+                                                  WINSREPL_DEFAULT_PULL_INTERVAL);
+               partner->pull.retry_interval    = ldb_msg_find_uint(res[i], "pullRetryInterval",
+                                                                  WINSREPL_DEFAULT_PULL_RETRY_INTERVAL);
+               partner->our_address            = ldb_msg_find_string(res[i], "ourAddress", NULL);
+               partner->push.change_count      = ldb_msg_find_uint(res[i], "pushChangeCount",
+                                                                  WINSREPL_DEFAULT_PUSH_CHANGE_COUNT);
 
                talloc_steal(partner, partner->address);
                talloc_steal(partner, partner->name);
index 63603c823dc21050a0830af8815158c3bf21d12c..d7d71b6175a98f445ec328f15d45c000f93fef59 100644 (file)
@@ -125,6 +125,8 @@ enum winsrepl_partner_type {
 #define WINSREPL_DEFAULT_PULL_INTERVAL (30*60)
 #define WINSREPL_DEFAULT_PULL_RETRY_INTERVAL (30)
 
+#define WINSREPL_DEFAULT_PUSH_CHANGE_COUNT (0)
+
 /*
  this represents one of our configured partners
 */