X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=4de6613a0eff3e8847d31cc65c90228cc467adf8;hp=71753c03d4070888236ebcbca9ff59e7ed9a7013;hb=c617c0c651432f9d5ae7adf4c5c1a5fd92ad828e;hpb=f7079f6790ccfb78ec7115ccb5b1706f5c18ebfe diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 71753c03d..4de6613a0 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -514,8 +514,6 @@ void *relay_thread_listener(void *data) while (1) { DBG("Listener accepting connections"); - nb_fd = LTTNG_POLL_GETNB(&events); - restart: ret = lttng_poll_wait(&events, -1); if (ret < 0) { @@ -528,6 +526,8 @@ restart: goto error; } + nb_fd = ret; + DBG("Relay new connection received"); for (i = 0; i < nb_fd; i++) { /* Fetch once the poll data */ @@ -1273,14 +1273,16 @@ int relay_recv_metadata(struct lttcomm_relayd_hdr *recv_hdr, if (data_buffer_size < data_size) { /* In case the realloc fails, we can free the memory */ - char *tmp_data_ptr = data_buffer; - data_buffer = realloc(data_buffer, data_size); - if (!data_buffer) { + char *tmp_data_ptr; + + tmp_data_ptr = realloc(data_buffer, data_size); + if (!tmp_data_ptr) { ERR("Allocating data buffer"); - free(tmp_data_ptr); + free(data_buffer); ret = -1; goto end; } + data_buffer = tmp_data_ptr; data_buffer_size = data_size; } memset(data_buffer, 0, data_size); @@ -1354,7 +1356,7 @@ int relay_send_version(struct lttcomm_relayd_hdr *recv_hdr, * structure considering that the other side will adapt. */ - ret = sscanf(VERSION, "%u.%u", &reply.major, &reply.minor); + ret = sscanf(VERSION, "%10u.%10u", &reply.major, &reply.minor); if (ret < 2) { ERR("Error in scanning version"); ret = -1; @@ -1693,14 +1695,16 @@ int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht) data_size = be32toh(data_hdr.data_size); if (data_buffer_size < data_size) { - char *tmp_data_ptr = data_buffer; - data_buffer = realloc(data_buffer, data_size); - if (!data_buffer) { + char *tmp_data_ptr; + + tmp_data_ptr = realloc(data_buffer, data_size); + if (!tmp_data_ptr) { ERR("Allocating data buffer"); - free(tmp_data_ptr); + free(data_buffer); ret = -1; goto end_unlock; } + data_buffer = tmp_data_ptr; data_buffer_size = data_size; } memset(data_buffer, 0, data_size); @@ -1874,11 +1878,6 @@ void *relay_thread_worker(void *data) } while (1) { - /* Zeroed the events structure */ - lttng_poll_reset(&events); - - nb_fd = LTTNG_POLL_GETNB(&events); - /* Infinite blocking call, waiting for transmission */ restart: DBG3("Relayd worker thread polling..."); @@ -1893,6 +1892,8 @@ void *relay_thread_worker(void *data) goto error; } + nb_fd = ret; + for (i = 0; i < nb_fd; i++) { /* Fetch once the poll data */ revents = LTTNG_POLL_GETEV(&events, i); @@ -2057,7 +2058,7 @@ int main(int argc, char **argv) /* Parse arguments */ progname = argv[0]; - if ((ret = parse_args(argc, argv) < 0)) { + if ((ret = parse_args(argc, argv)) < 0) { goto exit; }