From 78328cf026f12b18c8f713476030e4ce1e344eca Mon Sep 17 00:00:00 2001 From: David Sheets Date: Wed, 14 Dec 2016 14:38:07 +0000 Subject: [PATCH] transfused: improve write_exactly error handling Signed-off-by: David Sheets --- alpine/packages/transfused/transfused.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/alpine/packages/transfused/transfused.c b/alpine/packages/transfused/transfused.c index 7474412f0..2f01a739c 100644 --- a/alpine/packages/transfused/transfused.c +++ b/alpine/packages/transfused/transfused.c @@ -303,10 +303,12 @@ void write_exactly(char *descr, int fd, void *p, size_t nbyte) char *buf = p; do { - /* TODO: socket write conditions e.g.EAGAIN */ write_count = write(fd, buf, nbyte); - if (write_count < 0) + if (write_count < 0) { + if (errno == EINTR || errno == EAGAIN) + continue; die(1, NULL, "", "%s: error writing: ", descr); + } if (write_count == 0) die(1, NULL, "", "%s: 0 write: ", descr);