------------------------------------------------------------
revno: 595
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Andrew Tridgell <[EMAIL PROTECTED]>
branch nick: tridge
timestamp: Mon 2007-08-27 11:49:42 +1000
message:
  fixed segv when no public interface is set
modified:
  server/ctdb_takeover.c         
ctdb_takeover.c-20070525071636-a5n1ihghjtppy08r-2
=== modified file 'server/ctdb_takeover.c'
--- a/server/ctdb_takeover.c    2007-08-20 04:16:58 +0000
+++ b/server/ctdb_takeover.c    2007-08-27 01:49:42 +0000
@@ -185,7 +185,7 @@
        int i;
 
        for (i=0;i<ctdb->num_nodes;i++) {
-               if (!strcmp(ip, ctdb->nodes[i]->public_address)) {
+               if (ctdb->nodes[i]->public_address && !strcmp(ip, 
ctdb->nodes[i]->public_address)) {
                        vnn = i;
                        break;
                }
@@ -641,6 +641,14 @@
        char *addr;
        int32_t takeover_vnn;
 
+       addr = inet_ntoa(p->dest.sin_addr);
+
+       takeover_vnn = find_public_ip_vnn(ctdb, addr);
+       if (takeover_vnn == -1) {
+               DEBUG(3,("Could not add client IP %s. This is not a public 
address.\n", addr)); 
+               return 0;
+       }
+
        ip = talloc(client, struct ctdb_client_ip);
        CTDB_NO_MEMORY(ctdb, ip);
 
@@ -653,16 +661,6 @@
        tcp = talloc(client, struct ctdb_tcp_list);
        CTDB_NO_MEMORY(ctdb, tcp);
 
-       addr = inet_ntoa(p->dest.sin_addr);
-
-       takeover_vnn = find_public_ip_vnn(ctdb, addr);
-       if (takeover_vnn == -1) {
-               DEBUG(3,("Could not add client IP %s. This is not a public 
address.\n", addr)); 
-               return -1;
-       }
-
-       addr = inet_ntoa(p->src.sin_addr);
-
        tcp->connection.saddr = p->src;
        tcp->connection.daddr = p->dest;
 
@@ -677,7 +675,7 @@
 
        DEBUG(2,("registered tcp client for %u->%s:%u\n",
                 (unsigned)ntohs(p->dest.sin_port), 
-                addr,
+                inet_ntoa(p->src.sin_addr),
                 (unsigned)ntohs(p->src.sin_port)));
 
        /* tell all nodes about this tcp connection */

Reply via email to