summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp/ppp.c
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/ppp/ppp.c')
-rw-r--r--accel-pppd/ppp/ppp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/accel-pppd/ppp/ppp.c b/accel-pppd/ppp/ppp.c
index 264ae136..cfc6aca1 100644
--- a/accel-pppd/ppp/ppp.c
+++ b/accel-pppd/ppp/ppp.c
@@ -238,9 +238,8 @@ static void destablish_ppp(struct ppp_t *ppp)
{
struct pppunit_cache *uc = NULL;
- ap_session_finished(&ppp->ses);
-
if (ppp->unit_fd < 0) {
+ ap_session_finished(&ppp->ses);
destroy_ppp_channel(ppp);
return;
}
@@ -253,10 +252,15 @@ static void destablish_ppp(struct ppp_t *ppp)
strncpy(ifr.ifr_name, ppp->ses.ifname, IFNAMSIZ);
if (net->sock_ioctl(SIOCSIFNAME, &ifr)) {
triton_md_unregister_handler(&ppp->unit_hnd, 1);
+ ap_session_finished(&ppp->ses);
goto skip;
}
}
+ }
+ ap_session_finished(&ppp->ses);
+
+ if (conf_unit_cache) {
triton_md_unregister_handler(&ppp->unit_hnd, 0);
uc = mempool_alloc(uc_pool);