ctdb-daemon: Initialise eventscript status earlier
authorMartin Schwenke <martin@meltin.net>
Wed, 18 Mar 2015 09:46:46 +0000 (20:46 +1100)
committerAmitay Isaacs <amitay@samba.org>
Sun, 10 May 2015 01:22:14 +0000 (03:22 +0200)
Don't initialise it after ctdb_event_script_callback_v() may have
short-circuited.  This can stop ctdb_event_script_args() from ever
terminating.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/server/eventscript.c

index f976111f992c7115b0a868e70d9645d3fdafab0e..62fab5f1ede51b47d5c2c3d6da62413749c03ed3 100644 (file)
@@ -864,7 +864,10 @@ int ctdb_event_script_args(struct ctdb_context *ctdb, enum ctdb_eventscript_call
 {
        va_list ap;
        int ret;
-       struct callback_status status;
+       struct callback_status status = {
+               .status = -1,
+               .done = false,
+       };
 
        va_start(ap, fmt);
        ret = ctdb_event_script_callback_v(ctdb, ctdb,
@@ -874,9 +877,6 @@ int ctdb_event_script_args(struct ctdb_context *ctdb, enum ctdb_eventscript_call
                return ret;
        }
 
-       status.status = -1;
-       status.done = false;
-
        while (status.done == false && event_loop_once(ctdb->ev) == 0) /* noop */;
 
        if (status.status == -ETIME) {