From 8ec92b6fe76229dfe6ef543577a7dcc699c159b9 Mon Sep 17 00:00:00 2001 From: Sylvain Rochet Date: Sun, 22 Jul 2012 23:37:35 +0200 Subject: [PATCH] don't call ppp_hup() and ppp_stop() if PPPoE or PPPoL2TP failed to connect This is useless because PPP is not started yet, it confuses the PPP phase state machine. --- src/netif/ppp/ppp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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); }