chiark / gitweb /
ipif fixes
[userv-utils.git] / ipif / service.c
index 670b44706be087221e882eb69b9c61cf5e02ecef..b9d8b44cbd56ceb1188a9a79b48459538b4dddd1 100644 (file)
@@ -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);