diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2014-10-23 17:49:49 +0400 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2014-10-23 17:49:49 +0400 |
commit | 1819d99a0469b1c3fe7d1e9b6fbd593d86f5052f (patch) | |
tree | c8859d85642dc8991628b106809f61ab89a82a8d /accel-pppd/radius/acct.c | |
parent | 90125d7cad59c2c47e1a5765261af4a9d817e7e8 (diff) | |
download | accel-ppp-1819d99a0469b1c3fe7d1e9b6fbd593d86f5052f.tar.gz accel-ppp-1819d99a0469b1c3fe7d1e9b6fbd593d86f5052f.zip |
radius: fixed stuck during shutdown when radius server does not respond
Diffstat (limited to 'accel-pppd/radius/acct.c')
-rw-r--r-- | accel-pppd/radius/acct.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/accel-pppd/radius/acct.c b/accel-pppd/radius/acct.c index d6f2b182..de8ce286 100644 --- a/accel-pppd/radius/acct.c +++ b/accel-pppd/radius/acct.c @@ -303,15 +303,15 @@ out_err: static void rad_acct_stop_sent(struct rad_req_t *req, int res) { if (res) { - if (req->rpd) + if (ap_shutdown) { + struct radius_pd_t *rpd = req->rpd; + + rad_req_free(req); + + if (rpd) + rpd->acct_req = NULL; + } else if (req->rpd) rad_acct_stop_defer(req->rpd); - else { - if (ap_shutdown) { - rad_req_free(req); - req->rpd->acct_req = NULL; - } else - req->try = 0; - } return; } @@ -348,6 +348,8 @@ static void rad_acct_stop_timeout(struct triton_timer_t *t) { struct rad_req_t *req = container_of(t, typeof(*req), timeout); + log_debug("timeout %p\n", req); + if (!req->rpd) log_switch(triton_context_self(), NULL); |