summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accel-pppd/auth/auth_chap_md5.c16
-rw-r--r--accel-pppd/auth/auth_mschap_v1.c16
-rw-r--r--accel-pppd/auth/auth_mschap_v2.c16
3 files changed, 30 insertions, 18 deletions
diff --git a/accel-pppd/auth/auth_chap_md5.c b/accel-pppd/auth/auth_chap_md5.c
index 309af8a6..ae062f53 100644
--- a/accel-pppd/auth/auth_chap_md5.c
+++ b/accel-pppd/auth/auth_chap_md5.c
@@ -265,14 +265,18 @@ static void auth_result(struct chap_auth_data *ad, int res)
} else
ppp_auth_failed(ad->ppp, name);
} else {
- if (ppp_auth_succeeded(ad->ppp, name)) {
- chap_send_failure(ad);
- ap_session_terminate(&ad->ppp->ses, TERM_AUTH_ERROR, 0);
+ if (!ad->started) {
+ if (ppp_auth_succeeded(ad->ppp, name)) {
+ chap_send_failure(ad);
+ ap_session_terminate(&ad->ppp->ses, TERM_AUTH_ERROR, 0);
+ } else {
+ chap_send_success(ad, ad->id);
+ ad->started = 1;
+ if (conf_interval)
+ triton_timer_add(ad->ppp->ses.ctrl->ctx, &ad->interval, 0);
+ }
} else {
chap_send_success(ad, ad->id);
- ad->started = 1;
- if (conf_interval)
- triton_timer_add(ad->ppp->ses.ctrl->ctx, &ad->interval, 0);
}
}
diff --git a/accel-pppd/auth/auth_mschap_v1.c b/accel-pppd/auth/auth_mschap_v1.c
index 10424866..67f941c6 100644
--- a/accel-pppd/auth/auth_mschap_v1.c
+++ b/accel-pppd/auth/auth_mschap_v1.c
@@ -268,14 +268,18 @@ static void auth_result(struct chap_auth_data *ad, int res)
} else
ppp_auth_failed(ad->ppp, name);
} else {
- if (ppp_auth_succeeded(ad->ppp, name)) {
- chap_send_failure(ad, ad->mschap_error);
- ap_session_terminate(&ad->ppp->ses, TERM_AUTH_ERROR, 0);
+ if (!ad->started) {
+ if (ppp_auth_succeeded(ad->ppp, name)) {
+ chap_send_failure(ad, ad->mschap_error);
+ ap_session_terminate(&ad->ppp->ses, TERM_AUTH_ERROR, 0);
+ } else {
+ chap_send_success(ad, ad->id);
+ ad->started = 1;
+ if (conf_interval)
+ triton_timer_add(ad->ppp->ses.ctrl->ctx, &ad->interval, 0);
+ }
} else {
chap_send_success(ad, ad->id);
- ad->started = 1;
- if (conf_interval)
- triton_timer_add(ad->ppp->ses.ctrl->ctx, &ad->interval, 0);
}
}
diff --git a/accel-pppd/auth/auth_mschap_v2.c b/accel-pppd/auth/auth_mschap_v2.c
index 33b95dea..5c82413c 100644
--- a/accel-pppd/auth/auth_mschap_v2.c
+++ b/accel-pppd/auth/auth_mschap_v2.c
@@ -341,14 +341,18 @@ static void auth_result(struct chap_auth_data *ad, int res)
} else
ppp_auth_failed(ad->ppp, name);
} else {
- if (ppp_auth_succeeded(ad->ppp, name)) {
- chap_send_failure(ad, ad->mschap_error, ad->reply_msg);
- ap_session_terminate(&ad->ppp->ses, TERM_AUTH_ERROR, 0);
+ if (!ad->started) {
+ if (ppp_auth_succeeded(ad->ppp, name)) {
+ chap_send_failure(ad, ad->mschap_error, ad->reply_msg);
+ ap_session_terminate(&ad->ppp->ses, TERM_AUTH_ERROR, 0);
+ } else {
+ chap_send_success(ad, ad->id, ad->authenticator);
+ ad->started = 1;
+ if (conf_interval)
+ triton_timer_add(ad->ppp->ses.ctrl->ctx, &ad->interval, 0);
+ }
} else {
chap_send_success(ad, ad->id, ad->authenticator);
- ad->started = 1;
- if (conf_interval)
- triton_timer_add(ad->ppp->ses.ctrl->ctx, &ad->interval, 0);
}
}