From 536fbcd6f4b7aa35a689581372d70b4399ce5707 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 26 Aug 2013 14:25:51 +0200 Subject: Purge the duplication cache once per received packet. --- radsecproxy.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/radsecproxy.c b/radsecproxy.c index d05f9c9..3e4f360 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1390,6 +1390,22 @@ struct request *newrequest() { return rq; } +static void +purgedupcache(struct client *client) { + struct request *r; + struct timeval now; + int i; + + gettimeofday(&now, NULL); + for (i = 0; i < MAX_REQUESTS; i++) { + r = client->rqs[i]; + if (r && now.tv_sec - r->created.tv_sec > r->from->conf->dupinterval) { + freerq(r); + client->rqs[i] = NULL; + } + } +} + int addclientrq(struct request *rq) { struct request *r; struct timeval now; @@ -1453,6 +1469,7 @@ int radsrv(struct request *rq) { goto exit; } + purgedupcache(from); if (!addclientrq(rq)) goto exit; -- cgit v1.1