aboutsummaryrefslogtreecommitdiff
path: root/net/l2tpd
diff options
context:
space:
mode:
authorMaxim Sobolev <sobomax@FreeBSD.org>2002-11-23 17:41:39 +0000
committerMaxim Sobolev <sobomax@FreeBSD.org>2002-11-23 17:41:39 +0000
commit6ab4e36838754937b67e4fce84b174001f82afa4 (patch)
treecc82635e9801f7c1e53040c14661f118a3c5cb50 /net/l2tpd
parent1c4e4ae13b1437b5be6f4a64c3a1ddf450c0b6a2 (diff)
downloadports-6ab4e36838754937b67e4fce84b174001f82afa4.tar.gz
ports-6ab4e36838754937b67e4fce84b174001f82afa4.zip
- Prevent deadloop when control fifo is closed between the select() and
read().
Notes
Notes: svn path=/head/; revision=70882
Diffstat (limited to 'net/l2tpd')
-rw-r--r--net/l2tpd/Makefile1
-rw-r--r--net/l2tpd/files/patch-l2tpd.c26
2 files changed, 18 insertions, 9 deletions
diff --git a/net/l2tpd/Makefile b/net/l2tpd/Makefile
index f87141eb65b6..7b0b36f93413 100644
--- a/net/l2tpd/Makefile
+++ b/net/l2tpd/Makefile
@@ -7,6 +7,7 @@
PORTNAME= l2tpd
PORTVERSION= 0.69
+PORTREVISION= 1
CATEGORIES= net
MASTER_SITES= http://www.l2tpd.org/downloads/
diff --git a/net/l2tpd/files/patch-l2tpd.c b/net/l2tpd/files/patch-l2tpd.c
index b33d17613ce2..9de98f1ab8c8 100644
--- a/net/l2tpd/files/patch-l2tpd.c
+++ b/net/l2tpd/files/patch-l2tpd.c
@@ -1,8 +1,5 @@
-
-$FreeBSD$
-
--- l2tpd.c.orig Mon Aug 19 17:12:17 2002
-+++ l2tpd.c Sat Nov 23 02:02:04 2002
++++ l2tpd.c Sat Nov 23 19:12:09 2002
@@ -34,8 +34,6 @@
#include <netdb.h>
#include <string.h>
@@ -20,7 +17,7 @@ $FreeBSD$
char *args;
char *dial_no_tmp; /* jz: Dialnumber for Outgoing Call */
-@@ -384,6 +383,7 @@
+@@ -384,6 +384,7 @@
/* close the control pipe fd */
close (control_fd);
@@ -28,7 +25,18 @@ $FreeBSD$
execv (PPPD, stropt);
log (LOG_WARN, "%s: Exec of %s failed!\n", __FUNCTION__, PPPD);
-@@ -920,7 +920,9 @@
+@@ -764,8 +765,8 @@
+ struct lac *lac;
+ int call;
+ int tunl;
+- int cnt = -1;
+- while (cnt)
++ int cnt = 1;
++ while (cnt > 0)
+ {
+ cnt = read (control_fd, buf, sizeof (buf));
+ if (cnt > 0)
+@@ -920,7 +921,9 @@
}
/* Otherwise select goes nuts */
close (control_fd);
@@ -38,7 +46,7 @@ $FreeBSD$
}
void usage(void) {
-@@ -985,6 +987,7 @@
+@@ -985,6 +988,7 @@
char buf[STRLEN];
int pidfilewritten=0;
@@ -46,7 +54,7 @@ $FreeBSD$
if((pid = fork()) < 0) {
log(LOG_LOG, "%s: Unable to fork ()\n",__FUNCTION__);
close(server_socket);
-@@ -998,6 +1001,12 @@
+@@ -998,6 +1002,12 @@
to do a proper fix for this */
close(1);
close(2);
@@ -59,7 +67,7 @@ $FreeBSD$
/* Read previous pid file. */
if ((i = open(gconfig.pidfile,O_RDONLY)) > 0) {
-@@ -1075,6 +1084,7 @@
+@@ -1075,6 +1085,7 @@
init_scheduler ();
mkfifo (CONTROL_PIPE, 0600);
control_fd = open (CONTROL_PIPE, O_RDONLY | O_NONBLOCK, 0600);