aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/ppp/datalink.c
diff options
context:
space:
mode:
authorBrian Somers <brian@FreeBSD.org>2001-10-23 13:52:19 +0000
committerBrian Somers <brian@FreeBSD.org>2001-10-23 13:52:19 +0000
commitdad51e5ce8a405b90a5086a3fe73a81d72e8dfe7 (patch)
treec9c6b3b2a9af4036f6cef860cb2a83406d4fb3d4 /usr.sbin/ppp/datalink.c
parent983c1b58754695a69412a917bb2afbb268bdb467 (diff)
downloadsrc-dad51e5ce8a405b90a5086a3fe73a81d72e8dfe7.tar.gz
src-dad51e5ce8a405b90a5086a3fe73a81d72e8dfe7.zip
Don't avoid setting a 0 second timer in datalink_StartDialTimer() by
not setting any timer. Instead, set a 1 millisecond timer. This ensures that ppp will come out of it's select() call after losing carrier in -ddial mode with a reconnect period of 0 and going to ST_OPENING, rather than waiting indefinitely for some other event to wake ppp up. Bump the ppp version number to indicate the event. MFC after: 3 days
Notes
Notes: svn path=/head/; revision=85362
Diffstat (limited to 'usr.sbin/ppp/datalink.c')
-rw-r--r--usr.sbin/ppp/datalink.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/usr.sbin/ppp/datalink.c b/usr.sbin/ppp/datalink.c
index 3781023abe55..1bbf3cc9cb70 100644
--- a/usr.sbin/ppp/datalink.c
+++ b/usr.sbin/ppp/datalink.c
@@ -97,18 +97,16 @@ datalink_StartDialTimer(struct datalink *dl, int Timeout)
int result = Timeout;
timer_Stop(&dl->dial.timer);
- if (Timeout) {
- if (Timeout < 0)
- result = (random() % DIAL_TIMEOUT) + 1;
- dl->dial.timer.load = result * SECTICKS;
- dl->dial.timer.func = datalink_OpenTimeout;
- dl->dial.timer.name = "dial";
- dl->dial.timer.arg = dl;
- timer_Start(&dl->dial.timer);
- if (dl->state == DATALINK_OPENING)
- log_Printf(LogPHASE, "%s: Enter pause (%d) for redialing.\n",
- dl->name, result);
- }
+ if (Timeout < 0)
+ result = (random() % DIAL_TIMEOUT) + 1;
+ dl->dial.timer.load = result ? result * SECTICKS : 1;
+ dl->dial.timer.func = datalink_OpenTimeout;
+ dl->dial.timer.name = "dial";
+ dl->dial.timer.arg = dl;
+ timer_Start(&dl->dial.timer);
+ if (dl->state == DATALINK_OPENING)
+ log_Printf(LogPHASE, "%s: Enter pause (%d) for redialing.\n",
+ dl->name, result);
return result;
}