X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=6d800f50b3c0db40de5997ead9625fee8cf8938c;hp=d0cf15a30febfa0602a4b377387fbe947e521a2d;hb=4169f5ad171ab88ac181ec4080f46af379bc7676;hpb=39df6d9f42d8644d9ee25c8c02517b2cef6f5941 diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index d0cf15a30..6d800f50b 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -254,7 +254,7 @@ int notify_thread_pipe(int wpipe) do { ret = write(wpipe, "!", 1); } while (ret < 0 && errno == EINTR); - if (ret < 0) { + if (ret < 0 || ret != 1) { PERROR("write poll pipe"); } @@ -669,7 +669,7 @@ void *relay_thread_dispatcher(void *data) sizeof(struct relay_command)); } while (ret < 0 && errno == EINTR); free(relay_cmd); - if (ret < 0) { + if (ret < 0 || ret != sizeof(struct relay_command)) { PERROR("write cmd pipe"); goto error; } @@ -958,6 +958,7 @@ error: send_ret = cmd->sock->ops->sendmsg(cmd->sock, &reply, sizeof(reply), 0); if (send_ret < 0) { ERR("Relayd sending session id"); + ret = send_ret; } return ret; @@ -983,11 +984,15 @@ int relay_add_stream(struct lttcomm_relayd_hdr *recv_hdr, goto end_no_session; } - /* FIXME : use data_size for something ? */ ret = cmd->sock->ops->recvmsg(cmd->sock, &stream_info, sizeof(struct lttcomm_relayd_add_stream), 0); if (ret < sizeof(struct lttcomm_relayd_add_stream)) { - ERR("Relay didn't receive valid add_stream struct size : %d", ret); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive valid add_stream struct size : %d", ret); + } ret = -1; goto end_no_session; } @@ -1050,6 +1055,7 @@ end: sizeof(struct lttcomm_relayd_status_stream), 0); if (send_ret < 0) { ERR("Relay sending stream id"); + ret = send_ret; } rcu_read_unlock(); @@ -1083,7 +1089,12 @@ int relay_close_stream(struct lttcomm_relayd_hdr *recv_hdr, ret = cmd->sock->ops->recvmsg(cmd->sock, &stream_info, sizeof(struct lttcomm_relayd_close_stream), 0); if (ret < sizeof(struct lttcomm_relayd_close_stream)) { - ERR("Relay didn't receive valid add_stream struct size : %d", ret); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive valid add_stream struct size : %d", ret); + } ret = -1; goto end_no_session; } @@ -1134,6 +1145,7 @@ end_unlock: sizeof(struct lttcomm_relayd_generic_reply), 0); if (send_ret < 0) { ERR("Relay sending stream id"); + ret = send_ret; } end_no_session: @@ -1234,7 +1246,7 @@ static int write_padding_to_file(int fd, uint32_t size) do { ret = write(fd, zeros, size); } while (ret < 0 && errno == EINTR); - if (ret < 0) { + if (ret < 0 || ret != size) { PERROR("write padding to file"); } @@ -1289,8 +1301,13 @@ int relay_recv_metadata(struct lttcomm_relayd_hdr *recv_hdr, DBG2("Relay receiving metadata, waiting for %" PRIu64 " bytes", data_size); ret = cmd->sock->ops->recvmsg(cmd->sock, data_buffer, data_size, 0); if (ret < 0 || ret != data_size) { + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive the whole metadata"); + } ret = -1; - ERR("Relay didn't receive the whole metadata"); goto end; } metadata_struct = (struct lttcomm_relayd_metadata_payload *) data_buffer; @@ -1307,7 +1324,7 @@ int relay_recv_metadata(struct lttcomm_relayd_hdr *recv_hdr, ret = write(metadata_stream->fd, metadata_struct->payload, payload_size); } while (ret < 0 && errno == EINTR); - if (ret < payload_size) { + if (ret < 0 || ret != payload_size) { ERR("Relay error writing metadata on file"); ret = -1; goto end_unlock; @@ -1344,8 +1361,13 @@ int relay_send_version(struct lttcomm_relayd_hdr *recv_hdr, /* Get version from the other side. */ ret = cmd->sock->ops->recvmsg(cmd->sock, &msg, sizeof(msg), 0); if (ret < 0 || ret != sizeof(msg)) { + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay failed to receive the version values."); + } ret = -1; - ERR("Relay failed to receive the version values."); goto end; } @@ -1402,7 +1424,13 @@ int relay_data_pending(struct lttcomm_relayd_hdr *recv_hdr, ret = cmd->sock->ops->recvmsg(cmd->sock, &msg, sizeof(msg), 0); if (ret < sizeof(msg)) { - ERR("Relay didn't receive valid data_pending struct size : %d", ret); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive valid data_pending struct size : %d", + ret); + } ret = -1; goto end_no_session; } @@ -1479,8 +1507,13 @@ int relay_quiescent_control(struct lttcomm_relayd_hdr *recv_hdr, ret = cmd->sock->ops->recvmsg(cmd->sock, &msg, sizeof(msg), 0); if (ret < sizeof(msg)) { - ERR("Relay didn't receive valid begin data_pending struct size: %d", - ret); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive valid begin data_pending struct size: %d", + ret); + } ret = -1; goto end_no_session; } @@ -1540,8 +1573,13 @@ int relay_begin_data_pending(struct lttcomm_relayd_hdr *recv_hdr, ret = cmd->sock->ops->recvmsg(cmd->sock, &msg, sizeof(msg), 0); if (ret < sizeof(msg)) { - ERR("Relay didn't receive valid begin data_pending struct size: %d", - ret); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive valid begin data_pending struct size: %d", + ret); + } ret = -1; goto end_no_session; } @@ -1610,8 +1648,13 @@ int relay_end_data_pending(struct lttcomm_relayd_hdr *recv_hdr, ret = cmd->sock->ops->recvmsg(cmd->sock, &msg, sizeof(msg), 0); if (ret < sizeof(msg)) { - ERR("Relay didn't receive valid end data_pending struct size: %d", - ret); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Relay didn't receive valid end data_pending struct size: %d", + ret); + } ret = -1; goto end_no_session; } @@ -1711,7 +1754,12 @@ int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht) ret = cmd->sock->ops->recvmsg(cmd->sock, &data_hdr, sizeof(struct lttcomm_relayd_data_hdr), 0); if (ret <= 0) { - ERR("Connections seems to be closed"); + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } else { + ERR("Unable to receive data header on sock %d", cmd->sock->fd); + } ret = -1; goto end; } @@ -1747,6 +1795,10 @@ int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht) data_size, stream_id, net_seq_num); ret = cmd->sock->ops->recvmsg(cmd->sock, data_buffer, data_size, 0); if (ret <= 0) { + if (ret == 0) { + /* Orderly shutdown. Not necessary to print an error. */ + DBG("Socket %d did an orderly shutdown", cmd->sock->fd); + } ret = -1; goto end_unlock; } @@ -1754,7 +1806,7 @@ int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht) do { ret = write(stream->fd, data_buffer, data_size); } while (ret < 0 && errno == EINTR); - if (ret < data_size) { + if (ret < 0 || ret != data_size) { ERR("Relay error writing data to file"); ret = -1; goto end_unlock;