diff options
author | Brian Somers <brian@FreeBSD.org> | 1999-10-07 07:32:12 +0000 |
---|---|---|
committer | Brian Somers <brian@FreeBSD.org> | 1999-10-07 07:32:12 +0000 |
commit | 14e34a55c3ab95ff7203cf7bd100ad584e505f00 (patch) | |
tree | 77151792148ee13e6f41ff0acb9dfa546318a28c /usr.sbin/ppp/datalink.c | |
parent | dbb1a3463c9c23eb17bcc57fea1e8eaf164b2468 (diff) | |
download | src-14e34a55c3ab95ff7203cf7bd100ad584e505f00.tar.gz src-14e34a55c3ab95ff7203cf7bd100ad584e505f00.zip |
Don't go from datalink state opening directly to lcp, go via
carrier instead so that we can set up our carrier detect
timer and eventually notice when we lose carrier.
Honour the script.run value when coming out of carrier state.
PR: 14145
Notes
Notes:
svn path=/head/; revision=51978
Diffstat (limited to 'usr.sbin/ppp/datalink.c')
-rw-r--r-- | usr.sbin/ppp/datalink.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/usr.sbin/ppp/datalink.c b/usr.sbin/ppp/datalink.c index 3113a1342563..4dc104eec01d 100644 --- a/usr.sbin/ppp/datalink.c +++ b/usr.sbin/ppp/datalink.c @@ -277,7 +277,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e, dl->name, dl->cfg.dial.max - dl->dial.tries, dl->cfg.dial.max); } else - datalink_LoginDone(dl); + datalink_NewState(dl, DATALINK_CARRIER); return datalink_UpdateSet(d, r, w, e, n); } else { if (!(dl->physical->type & (PHYS_DDIAL|PHYS_DEDICATED)) && @@ -316,14 +316,20 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e, return 0; /* A device timer is running to wake us up again */ case CARRIER_OK: - datalink_NewState(dl, DATALINK_LOGIN); - chat_Init(&dl->chat, dl->physical, dl->cfg.script.login, 0, NULL); + if (dl->script.run) { + datalink_NewState(dl, DATALINK_LOGIN); + chat_Init(&dl->chat, dl->physical, dl->cfg.script.login, 0, NULL); + } else + datalink_LoginDone(dl); return datalink_UpdateSet(d, r, w, e, n); case CARRIER_LOST: - datalink_NewState(dl, DATALINK_HANGUP); physical_Offline(dl->physical); /* Is this required ? */ - chat_Init(&dl->chat, dl->physical, dl->cfg.script.hangup, 1, NULL); + if (dl->script.run) { + datalink_NewState(dl, DATALINK_HANGUP); + chat_Init(&dl->chat, dl->physical, dl->cfg.script.hangup, 1, NULL); + } else + datalink_HangupDone(dl); return datalink_UpdateSet(d, r, w, e, n); } |