diff --git a/src/api-event.c b/src/api-event.c index 997b8bd1d..32d143caf 100644 --- a/src/api-event.c +++ b/src/api-event.c @@ -47,13 +47,15 @@ extern EVENT(unrealdns_removeoldrecords); Event *EventAdd(Module *module, char *name, vFP event, void *data, long every_msec, int count) { Event *newevent; + if (!name || (every_msec < 0) || (count < 0) || !event) { if (module) module->errorcode = MODERR_INVALID; return NULL; } - if (every_msec < 100) + + if ((every_msec < 100) && (count > 1)) { ircd_log(LOG_ERROR, "[BUG] EventAdd() from module %s with suspiciously low every_msec value (%ld). " "Note that it is in milliseconds now (1000 = 1 second)!", @@ -61,6 +63,7 @@ Event *EventAdd(Module *module, char *name, vFP event, void *data, long every_ms every_msec); every_msec = 100; } + newevent = safe_alloc(sizeof(Event)); safe_strdup(newevent->name, name); newevent->count = count; diff --git a/src/modules.c b/src/modules.c index e5ba862d6..df0b07853 100644 --- a/src/modules.c +++ b/src/modules.c @@ -1445,7 +1445,7 @@ void special_delayed_unloading(void) if (!found) { char *name = strdup(m->header->name); - config_warn("Delaying module unloading of '%s' a few seconds...", name); + config_warn("Delaying module unloading of '%s' for a millisecond...", name); m->flags |= MODFLAG_DELAYED; EventAdd(NULL, "e_unload_module_delayed", e_unload_module_delayed, name, 0, 1); }