ctdb-daemon: Open eventd pipe earlier
authorMartin Schwenke <martin@meltin.net>
Mon, 27 Aug 2018 04:44:24 +0000 (14:44 +1000)
committerAmitay Isaacs <amitay@samba.org>
Thu, 30 Aug 2018 02:48:56 +0000 (04:48 +0200)
The pipe will soon be needed earlier, so initialise it earlier.
Ensure the file descriptors are closed on error.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13592

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

index 403e10432b2d0c27afe2a420bca47e79ea4c62b9..cf4f7f6860bbb20253fedb2344f4f837274f7020 100644 (file)
@@ -143,8 +143,15 @@ int ctdb_start_eventd(struct ctdb_context *ctdb)
                return -1;
        }
 
+       ret = pipe(fd);
+       if (ret != 0) {
+               return -1;
+       }
+
        argv = talloc_array(ectx, const char *, 4);
        if (argv == NULL) {
+               close(fd[0]);
+               close(fd[1]);
                return -1;
        }
 
@@ -154,6 +161,8 @@ int ctdb_start_eventd(struct ctdb_context *ctdb)
        argv[3] = NULL;
 
        if (argv[2] == NULL) {
+               close(fd[0]);
+               close(fd[1]);
                talloc_free(argv);
                return -1;
        }
@@ -161,11 +170,6 @@ int ctdb_start_eventd(struct ctdb_context *ctdb)
        DEBUG(DEBUG_NOTICE,
              ("Starting event daemon %s %s %s\n", argv[0], argv[1], argv[2]));
 
-       ret = pipe(fd);
-       if (ret != 0) {
-               return -1;
-       }
-
        pid = ctdb_fork(ctdb);
        if (pid == -1) {
                close(fd[0]);