]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
don't crash doing ctdb ip when not doing takeover
authorAndrew Tridgell <tridge@samba.org>
Mon, 4 Jun 2007 12:28:52 +0000 (22:28 +1000)
committerAndrew Tridgell <tridge@samba.org>
Mon, 4 Jun 2007 12:28:52 +0000 (22:28 +1000)
(This used to be ctdb commit f341a97c13a77711a2daaa9a223123cc4c81e75e)

ctdb/takeover/ctdb_takeover.c

index ced2324909494bcb35718b03816f81ba13c68738..bf9d3982de89c44a1eac29c6ce8596f06f302e12 100644 (file)
@@ -692,7 +692,7 @@ void ctdb_release_all_ips(struct ctdb_context *ctdb)
 
 
 /*
-  
+  get list of public IPs
  */
 int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA *outdata)
 {
@@ -701,7 +701,7 @@ int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_c
 
        len = offsetof(struct ctdb_all_public_ips, ips) + ctdb->num_nodes*sizeof(struct ctdb_public_ip);
 
-       ips = talloc_size(outdata, len);
+       ips = talloc_zero_size(outdata, len);
        CTDB_NO_MEMORY(ctdb, ips);
 
        outdata->dsize = len;
@@ -712,7 +712,9 @@ int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_c
                ips->ips[i].vnn = i;
                ips->ips[i].takeover_vnn = ctdb->nodes[i]->takeover_vnn;
                ips->ips[i].sin.sin_family = AF_INET;
-               inet_aton(ctdb->nodes[i]->public_address, &ips->ips[i].sin.sin_addr);
+               if (ctdb->nodes[i]->public_address) {
+                       inet_aton(ctdb->nodes[i]->public_address, &ips->ips[i].sin.sin_addr);
+               }
        }
 
        return 0;