diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2011-01-10 22:28:34 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2011-01-10 22:28:34 +0300 |
commit | 83537ad5c8839c6c006c4a8d5f5b0405f7ac3dae (patch) | |
tree | e60e599e366c1e50f6f175dab93b316bf9674033 | |
parent | 57ec76a3e15006c94e579662ce710bfd3f032331 (diff) | |
download | accel-ppp-xebd-83537ad5c8839c6c006c4a8d5f5b0405f7ac3dae.tar.gz accel-ppp-xebd-83537ad5c8839c6c006c4a8d5f5b0405f7ac3dae.zip |
radius: don't send interim-update if time to session timeout is less than 10 s.
-rw-r--r-- | accel-pppd/radius/acct.c | 5 | ||||
-rw-r--r-- | accel-pppd/radius/radius.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/accel-pppd/radius/acct.c b/accel-pppd/radius/acct.c index ddb3e08..cbb23d5 100644 --- a/accel-pppd/radius/acct.c +++ b/accel-pppd/radius/acct.c @@ -15,6 +15,7 @@ #include "memdebug.h" #define STAT_UPDATE_INTERVAL (10 * 60 * 1000) +#define INTERIM_SAFE_TIME 10 static int req_set_RA(struct rad_req_t *req, const char *secret) { @@ -150,6 +151,10 @@ static void rad_acct_interim_update(struct triton_timer_t *t) if (rpd->acct_req->timeout.tpd) return; + if (rpd->session_timeout.expire_tv.tv_sec && + rpd->session_timeout.expire_tv.tv_sec - (time(NULL) - rpd->ppp->start_time) < INTERIM_SAFE_TIME) + return; + req_set_stat(rpd->acct_req, rpd->ppp); if (!rpd->acct_interim_interval) return; diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c index 8976a33..04de1b7 100644 --- a/accel-pppd/radius/radius.c +++ b/accel-pppd/radius/radius.c @@ -88,7 +88,7 @@ int rad_proc_attrs(struct rad_req_t *req) req->rpd->acct_interim_interval = attr->val.integer; break; case Session_Timeout: - req->rpd->session_timeout.period = attr->val.integer * 1000; + req->rpd->session_timeout.expire_tv.tv_sec = attr->val.integer; break; case Class: if (!req->rpd->attr_class) @@ -198,7 +198,7 @@ static void ppp_acct_start(struct ppp_t *ppp) return; } - if (rpd->session_timeout.period) { + if (rpd->session_timeout.expire_tv.tv_sec) { rpd->session_timeout.expire = session_timeout; triton_timer_add(ppp->ctrl->ctx, &rpd->session_timeout, 0); } |