r13050: when we have reloaded the partners from wins_config.ldb
authorStefan Metzmacher <metze@samba.org>
Fri, 20 Jan 2006 12:26:09 +0000 (12:26 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:51:19 +0000 (13:51 -0500)
after a new partner connects, try to find the partner struct on a per call
basis if it's not present on the connection yet

add some more useful debug messages

metze

source/wrepl_server/wrepl_in_call.c

index 46ee25b7ada26c4cac724ff6fa4ded688192c50e..3365a1f146eff5ea49a59f1d6202a7cdb74a284e 100644 (file)
@@ -402,14 +402,20 @@ static NTSTATUS wreplsrv_in_replication(struct wreplsrv_in_call *call)
 
        if (!call->wreplconn->partner) {
                struct socket_address *partner_ip = socket_get_peer_addr(call->wreplconn->conn->socket, call);
-               DEBUG(1,("Failing WINS replication from non-partner %s\n",
-                        partner_ip ? partner_ip->addr : NULL));
-               return wreplsrv_in_stop_assoc_ctx(call);
+
+               call->wreplconn->partner = wreplsrv_find_partner(call->wreplconn->service, partner_ip->addr);
+               if (!call->wreplconn->partner) {
+                       DEBUG(1,("Failing WINS replication from non-partner %s\n",
+                                partner_ip ? partner_ip->addr : NULL));
+                       return wreplsrv_in_stop_assoc_ctx(call);
+               }
        }
 
        switch (repl_in->command) {
                case WREPL_REPL_TABLE_QUERY:
                        if (!(call->wreplconn->partner->type & WINSREPL_PARTNER_PUSH)) {
+                               DEBUG(2,("Failing WINS replication TABLE_QUERY from non-push-partner %s\n",
+                                        call->wreplconn->partner->address));
                                return wreplsrv_in_stop_assoc_ctx(call);
                        }
                        status = wreplsrv_in_table_query(call);
@@ -420,6 +426,8 @@ static NTSTATUS wreplsrv_in_replication(struct wreplsrv_in_call *call)
 
                case WREPL_REPL_SEND_REQUEST:
                        if (!(call->wreplconn->partner->type & WINSREPL_PARTNER_PUSH)) {
+                               DEBUG(2,("Failing WINS replication SEND_REQUESET from non-push-partner %s\n",
+                                        call->wreplconn->partner->address));
                                return wreplsrv_in_stop_assoc_ctx(call);
                        }
                        status = wreplsrv_in_send_request(call);
@@ -430,6 +438,8 @@ static NTSTATUS wreplsrv_in_replication(struct wreplsrv_in_call *call)
        
                case WREPL_REPL_UPDATE:
                        if (!(call->wreplconn->partner->type & WINSREPL_PARTNER_PULL)) {
+                               DEBUG(2,("Failing WINS replication UPDATE from non-pull-partner %s\n",
+                                        call->wreplconn->partner->address));
                                return wreplsrv_in_stop_assoc_ctx(call);
                        }
                        status = wreplsrv_in_update(call);
@@ -437,6 +447,8 @@ static NTSTATUS wreplsrv_in_replication(struct wreplsrv_in_call *call)
 
                case WREPL_REPL_UPDATE2:
                        if (!(call->wreplconn->partner->type & WINSREPL_PARTNER_PULL)) {
+                               DEBUG(2,("Failing WINS replication UPDATE2 from non-pull-partner %s\n",
+                                        call->wreplconn->partner->address));
                                return wreplsrv_in_stop_assoc_ctx(call);
                        }
                        status = wreplsrv_in_update2(call);
@@ -444,6 +456,8 @@ static NTSTATUS wreplsrv_in_replication(struct wreplsrv_in_call *call)
 
                case WREPL_REPL_INFORM:
                        if (!(call->wreplconn->partner->type & WINSREPL_PARTNER_PULL)) {
+                               DEBUG(2,("Failing WINS replication INFORM from non-pull-partner %s\n",
+                                        call->wreplconn->partner->address));
                                return wreplsrv_in_stop_assoc_ctx(call);
                        }
                        status = wreplsrv_in_inform(call);
@@ -451,6 +465,8 @@ static NTSTATUS wreplsrv_in_replication(struct wreplsrv_in_call *call)
 
                case WREPL_REPL_INFORM2:
                        if (!(call->wreplconn->partner->type & WINSREPL_PARTNER_PULL)) {
+                               DEBUG(2,("Failing WINS replication INFORM2 from non-pull-partner %s\n",
+                                        call->wreplconn->partner->address));
                                return wreplsrv_in_stop_assoc_ctx(call);
                        }
                        status = wreplsrv_in_inform2(call);