Fix l2tpd blocking on read from ppp childs (closes: #455)
authorNicolas Thill <nico@openwrt.org>
Fri, 7 Apr 2006 00:00:41 +0000 (00:00 +0000)
committerNicolas Thill <nico@openwrt.org>
Fri, 7 Apr 2006 00:00:41 +0000 (00:00 +0000)
SVN-Revision: 3597

openwrt/package/l2tpd/Makefile
openwrt/package/l2tpd/patches/04-nonblock.patch [new file with mode: 0644]

index 5755a3ddcaab7dda6554abc2ea9625200d0854b4..8f30615b2e798f939b31b8cfd398a4b63a1ebcf0 100644 (file)
@@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=l2tpd
 PKG_VERSION:=0.70pre
 PKG_UPSTREAM_VERSION:=0.70-pre20031121
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_MD5SUM:=3f2707b6e16a8cb72e7bf64f574202fa
 
 PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/l2tpd
diff --git a/openwrt/package/l2tpd/patches/04-nonblock.patch b/openwrt/package/l2tpd/patches/04-nonblock.patch
new file mode 100644 (file)
index 0000000..7fc2226
--- /dev/null
@@ -0,0 +1,26 @@
+--- l2tpd-0.70-pre20031121.orig/l2tpd.c.orig   2006-04-05 13:28:36.000000000 +0100
++++ l2tpd-0.70-pre20031121.orig/l2tpd.c        2006-04-05 13:33:39.000000000 +0100
+@@ -289,6 +289,8 @@
+ #endif
+     struct termios ptyconf;
+     char *str;
++    int flags;
++
+     p = opts;
+     stropt[0] = strdup (PPPD);
+     while (p)
+@@ -347,6 +349,14 @@
+               close(c->fd);
+               return -EINVAL;
+           }
++          flags = fcntl(c->fd, F_GETFL);
++          if (flags < 0 || fcntl(c->fd, F_SETFL, flags | O_NONBLOCK) < 0)
++          {
++              log (LOG_WARN, "%s: unable to fcntl(O_NONBLOCK) on pty\n",
++                      __FUNCTION__);
++              close(c->fd);
++              return -EINVAL;
++          }
+           tty = ptsname(c->fd);
+           if (tty == NULL)
+           {