diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2015-11-18 12:47:27 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2015-11-18 12:47:27 +0300 |
commit | dd6a897125a984498536466174426b18ed870bcc (patch) | |
tree | 5ad33fc1bb4f24a591f575b0a99ac0e988846eb3 /accel-pppd/session.c | |
parent | cc773ecd1776610e8789e72415cb48d2d203712b (diff) | |
download | accel-ppp-xebd-dd6a897125a984498536466174426b18ed870bcc.tar.gz accel-ppp-xebd-dd6a897125a984498536466174426b18ed870bcc.zip |
ipoe: do not send immediate Accounting Stop in soft terminate mode
Diffstat (limited to 'accel-pppd/session.c')
-rw-r--r-- | accel-pppd/session.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/accel-pppd/session.c b/accel-pppd/session.c index da18e43..247c0d7 100644 --- a/accel-pppd/session.c +++ b/accel-pppd/session.c @@ -173,6 +173,13 @@ void __export ap_session_finished(struct ap_session *ses) { ses->terminated = 1; + if (!ses->down) { + ap_session_ifdown(ses); + ap_session_read_stats(ses, NULL); + + triton_event_fire(EV_SES_FINISHING, ses); + } + triton_event_fire(EV_SES_PRE_FINISHED, ses); pthread_rwlock_wrlock(&ses_lock); @@ -275,12 +282,14 @@ void __export ap_session_terminate(struct ap_session *ses, int cause, int hard) log_ppp_debug("terminate\n"); - ap_session_ifdown(ses); - ap_session_read_stats(ses, NULL); + if (ses->ctrl->terminate(ses, hard)) { + ap_session_ifdown(ses); + ap_session_read_stats(ses, NULL); - triton_event_fire(EV_SES_FINISHING, ses); + triton_event_fire(EV_SES_FINISHING, ses); - ses->ctrl->terminate(ses, hard); + ses->down = 1; + } } void ap_shutdown_soft(void (*cb)(void)) |