--- 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)
 	    {
