diff --git a/qrexec-lib/ioall.c b/qrexec-lib/ioall.c index ac679a8..ef04e0b 100644 --- a/qrexec-lib/ioall.c +++ b/qrexec-lib/ioall.c @@ -35,12 +35,16 @@ void perror_wrapper(const char * msg) void set_nonblock(int fd) { int fl = fcntl(fd, F_GETFL, 0); + if (fl & O_NONBLOCK) + return; fcntl(fd, F_SETFL, fl | O_NONBLOCK); } void set_block(int fd) { int fl = fcntl(fd, F_GETFL, 0); + if (!(fl & O_NONBLOCK)) + return; fcntl(fd, F_SETFL, fl & ~O_NONBLOCK); }