delay loading the public ip address file until after we have started the transport...
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 10 Nov 2010 01:59:25 +0000 (12:59 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 10 Nov 2010 03:55:24 +0000 (14:55 +1100)
include/ctdb_client.h
server/ctdb_daemon.c
server/ctdbd.c

index b2f65ee24878c9998a4593261beef53a900c68d3..aa9b2c082397dc360b1ec91e5ff7b6e9441e7add 100644 (file)
@@ -105,7 +105,7 @@ int ctdb_ip_to_nodeid(struct ctdb_context *ctdb, const char *nodeip);
   start the ctdb protocol
 */
 int ctdb_start(struct ctdb_context *ctdb);
-int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork, bool use_syslog);
+int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork, bool use_syslog, const char *public_address_list);
 
 /*
   attach to a ctdb database
index 0fb1a8de23b6e9384b163ffdb13e43cd0c82ff83..e32245327279c90c7845b2b48d929413c88f1554 100644 (file)
@@ -704,7 +704,7 @@ static void ctdb_setup_event_callback(struct ctdb_context *ctdb, int status,
 /*
   start the protocol going as a daemon
 */
-int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork, bool use_syslog)
+int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork, bool use_syslog, const char *public_address_list)
 {
        int res, ret = -1;
        struct fd_event *fde;
@@ -791,6 +791,14 @@ int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork, bool use_syslog)
        if (ctdb->methods->initialise(ctdb) != 0) {
                ctdb_fatal(ctdb, "transport failed to initialise");
        }
+       if (public_address_list) {
+               ret = ctdb_set_public_addresses(ctdb, public_address_list);
+               if (ret == -1) {
+                       DEBUG(DEBUG_ALERT,("Unable to setup public address list\n"));
+                       exit(1);
+               }
+       }
+
 
        /* attach to existing databases */
        if (ctdb_attach_databases(ctdb) != 0) {
index 93a2d0823c3aba583a03d1930a7b7bd666796601..b90dbcdf1e41683d3f61e30bdb9bf0bf26689a45 100644 (file)
@@ -300,14 +300,6 @@ int main(int argc, const char *argv[])
                }
        }
 
-       if (options.public_address_list) {
-               ret = ctdb_set_public_addresses(ctdb, options.public_address_list);
-               if (ret == -1) {
-                       DEBUG(DEBUG_ALERT,("Unable to setup public address list\n"));
-                       exit(1);
-               }
-       }
-
        ret = ctdb_set_event_script_dir(ctdb, options.event_script_dir);
        if (ret == -1) {
                DEBUG(DEBUG_ALERT,("Unable to setup event script directory\n"));
@@ -337,5 +329,5 @@ int main(int argc, const char *argv[])
        }
 
        /* start the protocol running (as a child) */
-       return ctdb_start_daemon(ctdb, interactive?False:True, options.use_syslog);
+       return ctdb_start_daemon(ctdb, interactive?False:True, options.use_syslog, options.public_address_list);
 }