ctdb-common: Do not use sock->req outside sock_socket functions
authorAmitay Isaacs <amitay@gmail.com>
Mon, 20 Nov 2017 00:52:55 +0000 (11:52 +1100)
committerMartin Schwenke <martins@samba.org>
Tue, 21 Nov 2017 04:03:16 +0000 (05:03 +0100)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/common/sock_daemon.c

index bbeff53710328cdae4122b51fa196fedf0976ef4..a41a5d5a7ea6a1361756b40db70795310d5f15da 100644 (file)
@@ -278,6 +278,8 @@ static int sock_socket_init(TALLOC_CTX *mem_ctx, const char *sockpath,
 
 static int sock_socket_destructor(struct sock_socket *sock)
 {
+       TALLOC_FREE(sock->req);
+
        if (sock->fd != -1) {
                close(sock->fd);
                sock->fd = -1;
@@ -331,6 +333,8 @@ static struct tevent_req *sock_socket_start_send(TALLOC_CTX *mem_ctx,
        }
        tevent_req_set_callback(subreq, sock_socket_start_new_client, req);
 
+       sock->req = req;
+
        return req;
 }
 
@@ -599,8 +603,6 @@ struct tevent_req *sock_daemon_run_send(TALLOC_CTX *mem_ctx,
                }
                tevent_req_set_callback(subreq, sock_daemon_run_socket_fail,
                                        req);
-
-               sock->req = subreq;
        }
 
        if (pid_watch > 1) {
@@ -693,7 +695,6 @@ static void sock_daemon_run_shutdown(struct tevent_req *req)
 
        while ((sock = sockd->socket_list) != NULL) {
                DLIST_REMOVE(sockd->socket_list, sock);
-               TALLOC_FREE(sock->req);
                TALLOC_FREE(sock);
        }