diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2014-07-24 22:11:33 +0400 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2014-07-24 22:11:33 +0400 |
commit | 768ad4d4f1930ffe1630e82789cd58191b651a64 (patch) | |
tree | 7db7adff9a766e5f936d9a7e68aebe5edea92d0b /accel-pppd/radius | |
parent | cddc20689a17a1b30d491cd2021f911a669f6dbc (diff) | |
download | accel-ppp-768ad4d4f1930ffe1630e82789cd58191b651a64.tar.gz accel-ppp-768ad4d4f1930ffe1630e82789cd58191b651a64.zip |
radius: exit from active interim request when termination event occures
Diffstat (limited to 'accel-pppd/radius')
-rw-r--r-- | accel-pppd/radius/acct.c | 8 | ||||
-rw-r--r-- | accel-pppd/radius/serv.c | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/accel-pppd/radius/acct.c b/accel-pppd/radius/acct.c index 5816e509..fc4cae8a 100644 --- a/accel-pppd/radius/acct.c +++ b/accel-pppd/radius/acct.c @@ -382,11 +382,12 @@ void rad_acct_stop(struct radius_pd_t *rpd) if (!rpd->acct_req || !rpd->acct_req->serv) return; - if (rpd->acct_interim_timer.tpd) { + if (rpd->acct_interim_timer.tpd) triton_timer_del(&rpd->acct_interim_timer); - } - if (rpd->acct_req) { + if (rpd->acct_req->timeout.tpd) + rad_server_req_exit(rpd->acct_req); + if (rpd->acct_req->hnd.tpd) triton_md_unregister_handler(&rpd->acct_req->hnd, 0); @@ -496,6 +497,5 @@ out: rad_req_free(rpd->acct_req); rpd->acct_req = NULL; - } } diff --git a/accel-pppd/radius/serv.c b/accel-pppd/radius/serv.c index 3d01057a..0910314a 100644 --- a/accel-pppd/radius/serv.c +++ b/accel-pppd/radius/serv.c @@ -138,6 +138,7 @@ int rad_server_req_enter(struct rad_req_t *req) } req->serv->req_cnt++; + log_ppp_debug("radius(%i): req_enter %i\n", req->serv->id, req->serv->req_cnt); pthread_mutex_unlock(&req->serv->lock); return 0; @@ -152,6 +153,7 @@ void rad_server_req_exit(struct rad_req_t *req) pthread_mutex_lock(&req->serv->lock); req->serv->req_cnt--; + log_ppp_debug("radius(%i): req_exit %i\n", req->serv->id, req->serv->req_cnt); assert(req->serv->req_cnt >= 0); if (req->serv->req_cnt < req->serv->req_limit && !list_empty(&req->serv->req_queue)) { r = list_entry(req->serv->req_queue.next, typeof(*r), entry); |