Avoid adding expire_channels() to the timeq on !expire.
authorMichael Poole <mdpoole@troilus.org>
Sun, 30 Oct 2011 22:22:21 +0000 (18:22 -0400)
committerMichael Poole <mdpoole@troilus.org>
Sun, 30 Oct 2011 22:22:21 +0000 (18:22 -0400)
Fixes SourceForge bug #3000577.

src/chanserv.c (expire_channels): Only (re-)add this function to timeq
    if the data argument is NULL.
  (cmd_expire): Pass a non-NULL pointer when calling expire_channels().

src/chanserv.c

index 8bdad625b8f63bec3d3224049d6a7917ae0db7ad..2d3669684e9c5cb3196ab10dc0e3694a842fd450 100644 (file)
@@ -1362,7 +1362,7 @@ unregister_channel(struct chanData *channel, const char *reason)
 }
 
 static void
-expire_channels(UNUSED_ARG(void *data))
+expire_channels(void *data)
 {
     struct chanData *channel, *next;
     struct userData *user;
@@ -1392,7 +1392,7 @@ expire_channels(UNUSED_ARG(void *data))
         unregister_channel(channel, "registration expired.");
     }
 
-    if(chanserv_conf.channel_expire_frequency)
+    if(chanserv_conf.channel_expire_frequency && !data)
         timeq_add(now + chanserv_conf.channel_expire_frequency, expire_channels, NULL);
 }
 
@@ -4906,7 +4906,7 @@ chanserv_support_channels(void)
 static CHANSERV_FUNC(cmd_expire)
 {
     int channel_count = registered_channels;
-    expire_channels(NULL);
+    expire_channels(chanserv);
     reply("CSMSG_CHANNELS_EXPIRED", channel_count - registered_channels);
     return 1;
 }