- while( e ) {
- if( Match( e->mask, Client_Mask( Client ))) {
- if( e->onlyonce ) { /* delete entry */
- LogDebug("Deleted \"%s\" from list", e->mask);
+ while (e) {
+ next = e->next;
+ if (e->valid_until > 1 && e->valid_until < time(NULL)) {
+ /* Entry is expired, delete it */
+ LogDebug("Deleted \"%s\" from list (expired).",
+ e->mask);
+ Lists_Unlink(header, last, e);
+ e = next;
+ continue;
+ }
+ if (Match(e->mask, Client_Mask(Client))) {
+ if (e->valid_until == 1 ) {
+ /* Entry is valid only once, delete it */
+ LogDebug("Deleted \"%s\" from list (used).",
+ e->mask);