diff options
author | brian <brian@FreeBSD.org> | 2001-10-23 13:52:19 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2001-10-23 13:52:19 +0000 |
commit | 5106c4a5345e5d56ae3c2511585b4c54be1baf2d (patch) | |
tree | c9c6b3b2a9af4036f6cef860cb2a83406d4fb3d4 /usr.sbin/ppp/datalink.c | |
parent | f907f56cde6be702a62e8bba04eecaa35b3f573c (diff) | |
download | FreeBSD-src-5106c4a5345e5d56ae3c2511585b4c54be1baf2d.zip FreeBSD-src-5106c4a5345e5d56ae3c2511585b4c54be1baf2d.tar.gz |
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
Diffstat (limited to 'usr.sbin/ppp/datalink.c')
-rw-r--r-- | usr.sbin/ppp/datalink.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/usr.sbin/ppp/datalink.c b/usr.sbin/ppp/datalink.c index 3781023..1bbf3cc 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; } |