diff --git a/usr.sbin/ppp/bundle.c b/usr.sbin/ppp/bundle.c index 938bbea03066..e0ec63c61dae 100644 --- a/usr.sbin/ppp/bundle.c +++ b/usr.sbin/ppp/bundle.c @@ -1076,13 +1076,12 @@ bundle_Open(struct bundle *bundle, const char *name, int mask, int force) if ((mask & dl->physical->type) && (dl->state == DATALINK_CLOSED || (force && dl->state == DATALINK_OPENING && - dl->dial.timer.state == TIMER_RUNNING))) { - if (force) /* Ignore redial timeout ? */ - timer_Stop(&dl->dial.timer); + dl->dial.timer.state == TIMER_RUNNING) || + dl->state == DATALINK_READY)) { + timer_Stop(&dl->dial.timer); /* We're finished with this */ datalink_Up(dl, 1, 1); if (mask & PHYS_AUTO) - /* Only one AUTO link at a time */ - break; + break; /* Only one AUTO link at a time */ } if (name != NULL) break; diff --git a/usr.sbin/ppp/datalink.c b/usr.sbin/ppp/datalink.c index 8a34c608bee4..3d5bc3604f4b 100644 --- a/usr.sbin/ppp/datalink.c +++ b/usr.sbin/ppp/datalink.c @@ -969,8 +969,10 @@ datalink_Up(struct datalink *dl, int runscripts, int packetmode) case DATALINK_READY: if (!dl->script.packetmode && packetmode) { dl->script.packetmode = 1; - if (dl->state == DATALINK_READY) - datalink_LoginDone(dl); + if (dl->state == DATALINK_READY) { + dl->script.run = 0; + datalink_NewState(dl, DATALINK_CARRIER); + } } break; }