summaryrefslogtreecommitdiff
path: root/ipif
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2012-01-14 15:47:08 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2012-01-14 15:47:08 +0000
commit03203c8a42124de66a5e8d5eee2e5b86a3ec44cf (patch)
treedbc6ecbffd9aa306aed670da95a4ea46ded34488 /ipif
parentfdeb527b85307e455f87b2fed7f3527de80a650d (diff)
downloaduserv-utils-03203c8a42124de66a5e8d5eee2e5b86a3ec44cf.tar.gz
ipif fixes
Diffstat (limited to 'ipif')
-rw-r--r--ipif/service.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ipif/service.c b/ipif/service.c
index 670b447..b9d8b44 100644
--- a/ipif/service.c
+++ b/ipif/service.c
@@ -719,11 +719,13 @@ static void setnonblock(int fd) {
}
static void rx_packet(const uint8_t *packet, int len) {
+ if (!len)
+ return;
for (;;) {
int r= write(tunfd, packet, len);
if (r<0) {
if (errno==EINTR) continue;
- if (errno==EAGAIN) return; /* oh well */
+ if (errno==EAGAIN || errno==ENOMEM) return; /* oh well */
sysfatal("error writing packet to tun (transmitting)");
}
assert(r==len);