* this next value, 1 should always be substracted in order to compare
* the last seen sequence number on the relayd side to the last sent.
*/
- data_hdr.net_seq_num = htobe64(stream->next_net_seq_num++);
+ data_hdr.net_seq_num = htobe64(stream->next_net_seq_num);
/* Other fields are zeroed previously */
ret = relayd_send_data_hdr(&relayd->data_sock, &data_hdr,
goto error;
}
+ ++stream->next_net_seq_num;
+
/* Set to go on data socket */
outfd = relayd->data_sock.fd;
}
if (stream == NULL) {
/* Check for deleted streams. */
validate_endpoint_status_metadata_stream(&events);
- continue;
+ goto restart;
}
DBG("Adding metadata stream %d to poll set",
* 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 */
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;
/* 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
/* 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);
}
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);
}