weed.cc (626B)
1 #include "ipstore" 2 3 void IPStore::weed() { 4 time_t now = time(0); 5 bool done = false; 6 static int lock; 7 8 mutex_lock(&lock); 9 10 while (!done) { 11 done = true; 12 for (StoreMap::iterator iter = store.begin(); 13 iter != store.end(); 14 iter++) { 15 if (now - ((*iter).second.lastaccess) > config.ipstoretimeout()) { 16 if (config.debug()) { 17 Timestamp tm((*iter).second.lastaccess); 18 debugmsg ("Stale entry: " << inet2string(iter->first) << 19 " visited on " << tm.desc() << ", erasing\n"); 20 } 21 done = false; 22 store.erase(iter); 23 break; 24 } 25 } 26 } 27 28 mutex_unlock(&lock); 29 }