X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=tun.c;h=2c84ed0dace4d51a35c16071a7926e59859159be;hb=23ca153790f68d03191eaa9ac306597da596b4ed;hp=6ecde61794a3e3ea2821f6ebe185003c6ea07b4c;hpb=32fc582f43a9a3841d2782674e055113729c2814;p=secnet.git diff --git a/tun.c b/tun.c index 6ecde61..2c84ed0 100644 --- a/tun.c +++ b/tun.c @@ -118,6 +118,7 @@ static void tun_afterpoll(void *sst, struct pollfd *fds, int nfds) buffer_init(st->buff,calculate_max_start_pad()); l=read(st->fd, st->buff->start, buf_remaining_space(st->buff)); if (l<0) { + if (errno==EINTR || iswouldblock(errno)) return; fatal_perror("tun_afterpoll: read()"); } if (l==0) { @@ -353,6 +354,7 @@ static void tun_phase_hook(void *sst, uint32_t newphase) our networks. */ setcloexec(st->fd); + setnonblock(st->fd); hostaddr=ipaddr_to_string(st->nl.local_address); secnetaddr=ipaddr_to_string(st->nl.secnet_address);