X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=0428d33cef82d7f3c18bcff03f2310433808f7bf;hb=6f94560a050962daad560dac2823bd97b0b1bf98;hp=795a694158d26d15c2cb4fdb5f0eee3cac6bbe39;hpb=a02de639f6fbab546f2bf733b37a5e8e02bd8516;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 795a69415..0428d33ce 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -118,13 +118,13 @@ int parse_args(int argc, char **argv) char *default_address; static struct option long_options[] = { - { "control-port", 1, 0, 'C' }, - { "data-port", 1, 0, 'D' }, - { "daemonize", 0, 0, 'd' }, - { "help", 0, 0, 'h' }, - { "output", 1, 0, 'o' }, - { "verbose", 0, 0, 'v' }, - { NULL, 0, 0, 0 } + { "control-port", 1, 0, 'C', }, + { "data-port", 1, 0, 'D', }, + { "daemonize", 0, 0, 'd', }, + { "help", 0, 0, 'h', }, + { "output", 1, 0, 'o', }, + { "verbose", 0, 0, 'v', }, + { NULL, 0, 0, 0 }, }; while (1) { @@ -246,7 +246,9 @@ int notify_thread_pipe(int wpipe) { int ret; - ret = write(wpipe, "!", 1); + do { + ret = write(wpipe, "!", 1); + } while (ret < 0 && errno == EINTR); if (ret < 0) { PERROR("write poll pipe"); } @@ -627,8 +629,10 @@ void *relay_thread_dispatcher(void *data) * call is blocking so we can be assured that the data will be read * at some point in time or wait to the end of the world :) */ - ret = write(relay_cmd_pipe[1], relay_cmd, - sizeof(struct relay_command)); + do { + ret = write(relay_cmd_pipe[1], relay_cmd, + sizeof(struct relay_command)); + } while (ret < 0 && errno == EINTR); free(relay_cmd); if (ret < 0) { PERROR("write cmd pipe"); @@ -1054,8 +1058,10 @@ int relay_recv_metadata(struct lttcomm_relayd_hdr *recv_hdr, goto end; } - ret = write(metadata_stream->fd, metadata_struct->payload, - payload_size); + do { + ret = write(metadata_stream->fd, metadata_struct->payload, + payload_size); + } while (ret < 0 && errno == EINTR); if (ret < (payload_size)) { ERR("Relay error writing metadata on file"); ret = -1; @@ -1189,7 +1195,9 @@ int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht) goto end; } - ret = write(stream->fd, data_buffer, data_size); + do { + ret = write(stream->fd, data_buffer, data_size); + } while (ret < 0 && errno == EINTR); if (ret < data_size) { ERR("Relay error writing data to file"); ret = -1;