X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/f54d5adadd831fd0fa55d70d3aaffe60636818f5..ba703386fd742f46f83430a7c48a9bfe53167eae:/tun.c 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);