SM_STATE(EAP, IDLE) { SM_ENTRY(EAP, IDLE); #if 0 /* original */ sm->retransWhile = eap_sm_calculateTimeout(sm, sm->retransCount, sm->eapSRTT, sm->eapRTTVAR, sm->methodTimeout); #else /* Per RFC 4137, retransWhile is an external timeout counter * that counts down to zero. * We substitute an eloop timer callback instead; * retransWhile is simply sampled as being nonzero (not timed out) * or zero (timed out). * * Retries are only done if methodTimeout value has been * returned nonzero from the application. */ sm->retransWhile = 1; /* no retransmits will happen while nonzero */ if (sm->methodTimeout > 0) { eloop_cancel_timeout(eap_idle_timeout_handler, sm, NULL); eloop_register_timeout(sm->methodTimeout /*seconds*/, 0, eap_idle_timeout_handler, sm, NULL); } else { eloop_cancel_timeout(eap_idle_timeout_handler, sm, NULL); } #endif }
SM_STATE(EAP, IDLE2) { SM_ENTRY(EAP, IDLE2); sm->eap_if.retransWhile = eap_sm_calculateTimeout( sm, sm->retransCount, sm->eap_if.eapSRTT, sm->eap_if.eapRTTVAR, sm->methodTimeout); }