summaryrefslogtreecommitdiff
path: root/net-dialup/ppp/files/ppp_pause_between_reconnect.patch
blob: 4db68fd259f1909570656db80c689dc3f3a4eba6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
diff -Naur ppp-2.4.5/pppd/main.c ppp-2.4.5_patched/pppd/main.c
--- ppp-2.4.5/pppd/main.c	2010-08-30 07:36:35.000000000 +0300
+++ ppp-2.4.5_patched/pppd/main.c	2010-08-30 07:41:10.844666729 +0300
@@ -565,6 +565,8 @@
 
 	if (!persist || asked_to_quit || (maxfail > 0 && unsuccess >= maxfail))
 	    break;
+	else
+	    sleep(pause_between_reconnect);
 
 	if (demand)
 	    demand_discard();
@@ -581,6 +583,8 @@
 	    } while (phase == PHASE_HOLDOFF);
 	    if (!persist)
 		break;
+	    else
+		sleep(pause_between_reconnect);
 	}
 	
 	wait_children();
diff -Naur ppp-2.4.5/pppd/options.c ppp-2.4.5_patched/pppd/options.c
--- ppp-2.4.5/pppd/options.c	2010-08-30 07:36:35.000000000 +0300
+++ ppp-2.4.5_patched/pppd/options.c	2010-08-30 07:44:05.162666733 +0300
@@ -101,6 +101,7 @@
 char	user[MAXNAMELEN];	/* Username for PAP */
 char	passwd[MAXSECRETLEN];	/* Password for PAP */
 bool	persist = 0;		/* Reopen link after it goes down */
+int	pause_between_reconnect = 5; /* set pause between reconnects to avoid log flood/high cpu usage */
 bool	killoldaddr = 0;		/* If our IP is reassigned on
 				    reconnect, kill active TCP
 				     connections using the old IP. */
@@ -229,6 +230,8 @@
 
     { "persist", o_bool, &persist,
       "Keep on reopening connection after close", OPT_PRIO | 1 },
+    { "pause_between_reconnect", o_int, &pause_between_reconnect,
+      "set pause between reconnects to avoid log flood/high cpu usage", OPT_PRIO },
     { "nopersist", o_bool, &persist,
       "Turn off persist option", OPT_PRIOSUB },
 
diff -Naur ppp-2.4.5/pppd/pppd.h ppp-2.4.5_patched/pppd/pppd.h
--- ppp-2.4.5/pppd/pppd.h	2010-08-30 07:36:35.000000000 +0300
+++ ppp-2.4.5_patched/pppd/pppd.h	2010-08-30 07:44:39.502666729 +0300
@@ -294,6 +294,7 @@
 extern char	passwd[MAXSECRETLEN];	/* Password for PAP or CHAP */
 extern bool	auth_required;	/* Peer is required to authenticate */
 extern bool	persist;	/* Reopen link after it goes down */
+extern int	pause_between_reconnect; /* set pause between reconnects to avoid log flood/high cpu usage */
 extern bool	uselogin;	/* Use /etc/passwd for checking PAP */
 extern bool	session_mgmt;	/* Do session management (login records) */
 extern char	our_name[MAXNAMELEN];/* Our name for authentication purposes */
diff -Naur ppp-2.4.5/pppd/tty.c ppp-2.4.5_patched/pppd/tty.c
--- ppp-2.4.5/pppd/tty.c	2009-11-17 00:26:07.000000000 +0200
+++ ppp-2.4.5_patched/pppd/tty.c	2010-08-30 07:42:39.874666731 +0300
@@ -582,6 +582,8 @@
 			}
 			if (!persist || err != EINTR)
 				goto errret;
+			else
+			    sleep(pause_between_reconnect);
 		}
 		ttyfd = real_ttyfd;
 		if ((fdflags = fcntl(ttyfd, F_GETFL)) == -1
@@ -731,6 +733,8 @@
 			}
 			if (!persist || errno != EINTR || hungup || got_sigterm)
 				goto errret;
+			else
+			    sleep(pause_between_reconnect);
 		}
 		close(i);
 	}