diff options
author | def <dennis@felsin9.de> | 2015-01-04 23:06:48 +0100 |
---|---|---|
committer | def <dennis@felsin9.de> | 2015-01-04 23:07:21 +0100 |
commit | f56dcd1505ea90947cd3cece1ac3ef3dcf418e21 (patch) | |
tree | ab02453fc75b6859df723d6e962371663b040f59 | |
parent | d60d0072813046dae7a00874fca601c7fce71e29 (diff) | |
download | Nim-f56dcd1505ea90947cd3cece1ac3ef3dcf418e21.tar.gz |
Handle interrupt on epoll_wait graciously (allows strace to work)
-rw-r--r-- | lib/pure/selectors.nim | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/pure/selectors.nim b/lib/pure/selectors.nim index b796dca7a..f17c6d317 100644 --- a/lib/pure/selectors.nim +++ b/lib/pure/selectors.nim @@ -146,7 +146,11 @@ elif defined(linux): ## on the ``fd``. result = @[] let evNum = epoll_wait(s.epollFD, addr s.events[0], 64.cint, timeout.cint) - if evNum < 0: raiseOSError(osLastError()) + if evNum < 0: + let err = osLastError() + if err.cint == EINTR: + return @[] + raiseOSError(osLastError()) if evNum == 0: return @[] for i in 0 .. <evNum: let fd = s.events[i].data.fd.SocketHandle |