summaryrefslogtreecommitdiff
path: root/accel-pppd/radius
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2014-07-24 22:11:33 +0400
committerDmitry Kozlov <xeb@mail.ru>2014-07-24 22:11:33 +0400
commit768ad4d4f1930ffe1630e82789cd58191b651a64 (patch)
tree7db7adff9a766e5f936d9a7e68aebe5edea92d0b /accel-pppd/radius
parentcddc20689a17a1b30d491cd2021f911a669f6dbc (diff)
downloadaccel-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.c8
-rw-r--r--accel-pppd/radius/serv.c2
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);