X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=ccan%2Fio%2Fpoll.c;h=b005a97e4b1d07879a4e281a8d48276baaac2fa1;hb=e2d15a2bcb78dba323c4a807543fcc0cb1b03ef0;hp=3354abe01a2bae38ae6728b9f9f07522053b90b2;hpb=7082f7d0e81911acb26787949c251dfb298cbdd8;p=ccan diff --git a/ccan/io/poll.c b/ccan/io/poll.c index 3354abe0..b005a97e 100644 --- a/ccan/io/poll.c +++ b/ccan/io/poll.c @@ -280,8 +280,13 @@ void *io_loop(struct timers *timers, struct timer **expired) } r = pollfn(pollfds, num_fds, ms_timeout); - if (r < 0) + if (r < 0) { + /* Signals shouldn't break us, unless they set + * io_loop_return. */ + if (errno == EINTR) + continue; break; + } for (i = 0; i < num_fds && !io_loop_return; i++) { struct io_conn *c = (void *)fds[i];