From: Jaroslav Kysela Date: Tue, 2 Jun 2015 15:56:14 +0000 (+0200) Subject: utils: tvh_write - add special socket error check X-Git-Tag: v4.0.5~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=65cc66b8acee0ead9dcd85fe7ba0909a501ecac6;p=thirdparty%2Ftvheadend.git utils: tvh_write - add special socket error check --- diff --git a/src/wrappers.c b/src/wrappers.c index 9d8fa6a61..66a9ee159 100644 --- a/src/wrappers.c +++ b/src/wrappers.c @@ -3,6 +3,7 @@ #include #include /* See NOTES */ #include +#include #include #include #include @@ -72,11 +73,19 @@ int tvh_write(int fd, const void *buf, size_t len) { ssize_t c; + struct stat st; + int err; + socklen_t errlen; while (len) { c = write(fd, buf, len); if (c < 0) { if (ERRNO_AGAIN(errno)) { + fstat(fd, &st); + errlen = sizeof(err); + if (S_ISSOCK(st.st_mode) && + (getsockopt(fd, SOL_SOCKET, SO_ERROR, (char *)&err, &errlen) || err)) + break; usleep(100); continue; }