Slightly lower impact way of cleaning up old sessions
authorAlan T. DeKok <aland@freeradius.org>
Mon, 9 Aug 2010 09:36:03 +0000 (11:36 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 9 Aug 2010 12:06:56 +0000 (14:06 +0200)
src/modules/rlm_eap/mem.c

index 992337f..4f1c3fd 100644 (file)
@@ -229,10 +229,15 @@ static void eaplist_expire(rlm_eap_t *inst, time_t timestamp)
         *      handlers to be deleted.
         *
         */
-       for (i = 0; i < 2; i++) {
+       for (i = 0; i < 3; i++) {
                handler = inst->session_head;
-               if (handler &&
-                   ((timestamp - handler->timestamp) > inst->timer_limit)) {
+               if (!handler) break;
+
+               /*
+                *      Expire entries from the start of the list.
+                *      They should be the oldest ones.
+                */
+               if ((timestamp - handler->timestamp) > inst->timer_limit) {
                        rbnode_t *node;
                        node = rbtree_find(inst->session_tree, handler);
                        rad_assert(node != NULL);