chiark / gitweb /
ipif fixes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 14 Jan 2012 15:47:08 +0000 (15:47 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 14 Jan 2012 15:47:08 +0000 (15:47 +0000)
debian/changelog
ipif/service.c

index 0c3b57f8f6818552f99218e6495827390bd11a79..35d54fc227519f9562cb78e2eaedfd9aa50da564 100644 (file)
@@ -1,3 +1,12 @@
+userv-utils (0.4.1) unstable; urgency=low
+
+  ipif bugfixes:
+  * Ignore empty packets (ie consecutive END bytes), as tun rejects
+    them with EINVAL.
+  * Tolerate ENOMEM from tun.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sat, 14 Jan 2012 15:46:53 +0000
+
 userv-utils (0.4) unstable; urgency=low
 
   ipif:
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);