X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.c;h=b7e2e9b715160e01649423ad3ae3810059da8431;hb=6d4c7a40b1050245ed51c198189d47b4b3183c43;hp=15fc9b09f800d6225be465b0d3c993e69a279f09;hpb=f789c65addd72f6f2ac0d3c7ca60a952669d5952;p=lttng-tools.git diff --git a/src/common/consumer.c b/src/common/consumer.c index 15fc9b09f..b7e2e9b71 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2351,7 +2351,7 @@ void *consumer_thread_data_poll(void *data) * array update over low-priority reads. */ if (pollfd[nb_fd].revents & (POLLIN | POLLPRI)) { - size_t pipe_readlen; + ssize_t pipe_readlen; DBG("consumer_data_pipe wake up"); /* Consume 1 byte of pipe data */ @@ -2711,7 +2711,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, relayd_created = 0; + int fd = -1, ret = -1, relayd_created = 0, sock_created = 0; enum lttng_error_code ret_code = LTTNG_OK; struct consumer_relayd_sock_pair *relayd; @@ -2779,6 +2779,8 @@ int consumer_add_relayd_socket(int net_seq_idx, int sock_type, /* Assign new file descriptor */ relayd->control_sock.fd = fd; + /* Flag that we have successfully created a socket with a valid fd. */ + sock_created = 1; /* * Create a session on the relayd and store the returned id. Lock the @@ -2814,6 +2816,8 @@ int consumer_add_relayd_socket(int net_seq_idx, int sock_type, /* Assign new file descriptor */ relayd->data_sock.fd = fd; + /* Flag that we have successfully created a socket with a valid fd. */ + sock_created = 1; break; default: ERR("Unknown relayd socket type (%d)", sock_type); @@ -2843,9 +2847,11 @@ error: } if (relayd_created) { - /* We just want to cleanup. Ignore ret value. */ - (void) relayd_close(&relayd->control_sock); - (void) relayd_close(&relayd->data_sock); + if (sock_created) { + /* We just want to close the fd for cleanup. Ignore ret value. */ + (void) relayd_close(&relayd->control_sock); + (void) relayd_close(&relayd->data_sock); + } free(relayd); }