ipcp: try to re-send CHAP ack on timeout

If it was lost, some clients (e.g. pppd) may not try to re-send their CHAP reply.
This commit is contained in:
Samuel Thibault 2025-03-30 20:37:29 +02:00
parent b3b052a483
commit 366faaea76
3 changed files with 24 additions and 10 deletions

View file

@ -5488,6 +5488,11 @@ static void regular_cleanups(double period)
if (sess_local[s].ipcp.conf_sent < config->ppp_max_configure)
{
LOG(3, s, session[s].tunnel, "No ACK for IPCP ConfigReq... resending\n");
if (sess_local[s].lcp_authtype == AUTHCHAP && sess_local[s].ipcp.conf_sent % 3 == 2)
{
LOG(3, s, session[s].tunnel, "Trying to re-send CHAP ack\n");
resendchapack(s, session[s].tunnel, sess_local[s].auth_id);
}
sendipcp(s, session[s].tunnel);
change_state(s, ipcp, next_state);
}
@ -7780,7 +7785,7 @@ int sessionsetup(sessionidt s, tunnelidt t)
// Add the route for this session.
routesset(s, &session[s], 1);
sess_local[s].lcp_authtype = 0; // RADIUS authentication complete
sess_local[s].lcp_authdone = 1; // RADIUS authentication complete
lcp_open(s, t); // transition to Network phase and send initial IPCP
// Run the plugin's against this new session.