crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs | LICENSE

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 }