diff options
Diffstat (limited to 'ext/sleepy_penguin/epoll.c')
-rw-r--r-- | ext/sleepy_penguin/epoll.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/sleepy_penguin/epoll.c b/ext/sleepy_penguin/epoll.c index 90ecc2c..9010e2d 100644 --- a/ext/sleepy_penguin/epoll.c +++ b/ext/sleepy_penguin/epoll.c @@ -147,8 +147,12 @@ static VALUE epwait_result(struct ep_per_thread *ept, int n) struct epoll_event *epoll_event = ept->events; VALUE obj_events, obj; - if (n < 0) - rb_sys_fail("epoll_wait"); + if (n < 0) { + if (errno == EINTR) + n = 0; + else + rb_sys_fail("epoll_wait"); + } for (i = n; --i >= 0; epoll_event++) { obj_events = UINT2NUM(epoll_event->events); |