projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix: write EINTR handling
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
main.c
diff --git
a/src/bin/lttng-relayd/main.c
b/src/bin/lttng-relayd/main.c
index 5a12ba88847b01ef631639bf2a123fe63deb5cd4..0428d33cef82d7f3c18bcff03f2310433808f7bf 100644
(file)
--- a/
src/bin/lttng-relayd/main.c
+++ b/
src/bin/lttng-relayd/main.c
@@
-246,7
+246,9
@@
int notify_thread_pipe(int wpipe)
{
int ret;
{
int ret;
- ret = write(wpipe, "!", 1);
+ do {
+ ret = write(wpipe, "!", 1);
+ } while (ret < 0 && errno == EINTR);
if (ret < 0) {
PERROR("write poll pipe");
}
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 :)
*/
* 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");
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;
}
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;
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;
}
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;
if (ret < data_size) {
ERR("Relay error writing data to file");
ret = -1;
This page took
0.023466 seconds
and
4
git commands to generate.