From: Amitay Isaacs Date: Wed, 14 Oct 2015 04:30:14 +0000 (+1100) Subject: ctdb-client: Close ctdb socket connection when client context goes away X-Git-Url: http://git.samba.org/?p=obnox%2Fsamba%2Fsamba-obnox.git;a=commitdiff_plain;h=555237f2a8bd42f7223397f73e62a2a3786484c5 ctdb-client: Close ctdb socket connection when client context goes away Signed-off-by: Amitay Isaacs Reviewed-by: Martin Schwenke --- diff --git a/ctdb/client/client_connect.c b/ctdb/client/client_connect.c index 0c924855755..8cff21307db 100644 --- a/ctdb/client/client_connect.c +++ b/ctdb/client/client_connect.c @@ -43,6 +43,8 @@ static int ctdb_client_connect(struct ctdb_client_context *client, struct tevent_context *ev, const char *sockpath); +static int ctdb_client_context_destructor(struct ctdb_client_context *client); + int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, const char *sockpath, struct ctdb_client_context **out) { @@ -78,10 +80,21 @@ int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, return ret; } + talloc_set_destructor(client, ctdb_client_context_destructor); + *out = client; return 0; } +static int ctdb_client_context_destructor(struct ctdb_client_context *client) +{ + if (client->fd != -1) { + close(client->fd); + client->fd = -1; + } + return 0; +} + static void client_read_handler(uint8_t *buf, size_t buflen, void *private_data); static void client_dead_handler(void *private_data);