Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
struct tevent_context *ev,
const char *sockpath);
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)
{
int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
const char *sockpath, struct ctdb_client_context **out)
{
+ talloc_set_destructor(client, ctdb_client_context_destructor);
+
*out = client;
return 0;
}
*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);
static void client_read_handler(uint8_t *buf, size_t buflen,
void *private_data);
static void client_dead_handler(void *private_data);