diff --git a/src/netif/ppp/ppp.c b/src/netif/ppp/ppp.c index 508ec906..f9a1cba3 100644 --- a/src/netif/ppp/ppp.c +++ b/src/netif/ppp/ppp.c @@ -1950,6 +1950,8 @@ static void ppp_over_ethernet_link_status_cb(ppp_pcb *pcb, int state) { case PPPOE_CB_STATE_DOWN: PPPDEBUG(LOG_INFO, ("ppp_over_ethernet_link_status_cb: unit %d: DOWN, disconnected\n", pcb->num)); pppoe_err_code = PPPERR_CONNECT; + ppp_hup(pcb); + ppp_stop(pcb); break; /* PPPoE link failed to setup (i.e. PADI/PADO timeout) */ @@ -1959,8 +1961,6 @@ static void ppp_over_ethernet_link_status_cb(ppp_pcb *pcb, int state) { break; } - ppp_hup(pcb); - ppp_stop(pcb); if (pcb->link_status_cb) { pcb->link_status_cb(pcb, pcb->err_code ? pcb->err_code : pppoe_err_code, pcb->link_status_ctx); } @@ -2001,6 +2001,8 @@ static void ppp_over_l2tp_link_status_cb(ppp_pcb *pcb, int state) { case PPPOL2TP_CB_STATE_DOWN: PPPDEBUG(LOG_INFO, ("ppp_over_l2tp_link_status_cb: unit %d: DOWN, disconnected\n", pcb->num)); pppol2tp_err_code = PPPERR_CONNECT; + ppp_hup(pcb); + ppp_stop(pcb); break; /* PPPoL2TP link failed to setup (i.e. L2TP timeout) */ @@ -2010,8 +2012,6 @@ static void ppp_over_l2tp_link_status_cb(ppp_pcb *pcb, int state) { break; } - ppp_hup(pcb); - ppp_stop(pcb); if (pcb->link_status_cb) { pcb->link_status_cb(pcb, pcb->err_code ? pcb->err_code : pppol2tp_err_code, pcb->link_status_ctx); }