X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.c;h=16521a8b863788fd957b756d7c4882f6b3c5abbd;hp=3ecb72e21e52af045b3fdb956e0ec614a4c570dd;hb=8fa0b55b4931b9b5294120b20259be73b0b87ad5;hpb=f7079f6790ccfb78ec7115ccb5b1706f5c18ebfe diff --git a/src/common/consumer.c b/src/common/consumer.c index 3ecb72e21..16521a8b8 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -243,7 +243,7 @@ static void destroy_relayd(struct consumer_relayd_sock_pair *relayd) lttng_ht_lookup(relayd_session_id_ht, (void *)((unsigned long) relayd->sessiond_session_id), &iter); node = lttng_ht_iter_get_node_ulong(&iter); - if (node != NULL) { + if (node == NULL) { /* We assume the relayd is being or is destroyed */ return; } @@ -2714,7 +2714,7 @@ int consumer_add_relayd_socket(int net_seq_idx, int sock_type, struct pollfd *consumer_sockpoll, struct lttcomm_sock *relayd_sock, unsigned int sessiond_id) { - int fd = -1, ret = -1; + int fd = -1, ret = -1, relayd_created = 0; enum lttng_error_code ret_code = LTTNG_OK; struct consumer_relayd_sock_pair *relayd; struct consumer_relayd_session_id *relayd_id_node; @@ -2738,6 +2738,7 @@ int consumer_add_relayd_socket(int net_seq_idx, int sock_type, goto error; } relayd->sessiond_session_id = (uint64_t) sessiond_id; + relayd_created = 1; } /* Poll on consumer socket. */ @@ -2853,6 +2854,14 @@ error: PERROR("close received socket"); } } + + if (relayd_created) { + /* We just want to cleanup. Ignore ret value. */ + (void) relayd_close(&relayd->control_sock); + (void) relayd_close(&relayd->data_sock); + free(relayd); + } + return ret; }