diff options
-rw-r--r-- | accel-pppd/logs/log_file.c | 2 | ||||
-rw-r--r-- | accel-pppd/session.c | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/accel-pppd/logs/log_file.c b/accel-pppd/logs/log_file.c index 42d9f3f4..481afa1e 100644 --- a/accel-pppd/logs/log_file.c +++ b/accel-pppd/logs/log_file.c @@ -268,7 +268,7 @@ static struct ap_private *find_pd(struct ap_session *ses, void *pd_key) struct list_head *pos, *next; list_for_each_safe(pos, next, &ses->pd_list) { - pd = list_entry(pos->next, typeof(*pd), entry); + pd = list_entry(pos, typeof(*pd), entry); if (pd->key == pd_key) { return pd; } diff --git a/accel-pppd/session.c b/accel-pppd/session.c index 1411f24f..78d12f95 100644 --- a/accel-pppd/session.c +++ b/accel-pppd/session.c @@ -278,6 +278,8 @@ void __export ap_session_terminate(struct ap_session *ses, int cause, int hard) if (ses->terminating) { if (hard) ses->ctrl->terminate(ses, hard); + else if (ses->state == AP_STATE_FINISHING) + ses->ctrl->terminate(ses, 1); return; } |