From: pk910 Date: Wed, 22 Aug 2012 02:29:04 +0000 (+0200) Subject: fixed IRCQueue.c crash (added missing pointer to the queue structure) X-Git-Tag: v5.5~9^2~5 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=2598baa191666be3b69e84dac557cdd8ff157e69 fixed IRCQueue.c crash (added missing pointer to the queue structure) --- diff --git a/src/IRCQueue.c b/src/IRCQueue.c index d68f098..673adff 100644 --- a/src/IRCQueue.c +++ b/src/IRCQueue.c @@ -45,6 +45,7 @@ static struct BotQueue *initialize_queue(struct ClientSocket *client) { } queue->client = client; client->queue = queue; + queue->iofd = NULL; queue->penalty = 0; queue->fastqueue_first = NULL; queue->fastqueue_last = NULL; @@ -118,9 +119,13 @@ int queue_add(struct ClientSocket *client, char* msg, int len) { if(!queue->iofd) { struct timeval timeout; gettimeofday(&timeout, NULL); - queue->rem_penalty = (MAXPENALTY - queue->penalty) + 1; + if(queue->penalty >= MAXPENALTY) + queue->rem_penalty = (queue->penalty - MAXPENALTY)+1; + else + queue->rem_penalty = queue->penalty; timeout.tv_sec += queue->rem_penalty; queue->iofd = iohandler_timer(timeout, queue_callback); + queue->iofd->data = queue; } } else { struct QueueEntry *entry = malloc(sizeof(*entry)); @@ -241,9 +246,13 @@ static IOHANDLER_CALLBACK(queue_callback) { if(queue->penalty > 0) { struct timeval timeout; gettimeofday(&timeout, NULL); - queue->rem_penalty = (MAXPENALTY - queue->penalty) + 1; + if(queue->penalty >= MAXPENALTY) + queue->rem_penalty = (queue->penalty - MAXPENALTY)+1; + else + queue->rem_penalty = queue->penalty; timeout.tv_sec += queue->rem_penalty; queue->iofd = iohandler_timer(timeout, queue_callback); + queue->iofd->data = queue; } else { queue->iofd = NULL; queue->penalty = 0;