projects
/
NeonServV5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'origin/development'
[NeonServV5.git]
/
src
/
IRCQueue.c
diff --git
a/src/IRCQueue.c
b/src/IRCQueue.c
index d68f098b0bd9fd64c2a8baeea93cd1051e2c3903..a7cc1a4d00fd52521ba0cc108a3db83c9dbf0d69 100644
(file)
--- a/
src/IRCQueue.c
+++ b/
src/IRCQueue.c
@@
-1,4
+1,4
@@
-/* IRCQueue.c - NeonServ v5.
5
+/* IRCQueue.c - NeonServ v5.
6
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
@@
-17,6
+17,8
@@
#include "IRCQueue.h"
#include "ClientSocket.h"
#include "IOHandler.h"
#include "IRCQueue.h"
#include "ClientSocket.h"
#include "IOHandler.h"
+#include "tools.h"
+#include "log.h"
#define MAXPENALTY 8 /* 4 messages */
#define MAXPENALTY 8 /* 4 messages */
@@
-40,11
+42,12
@@
static IOHANDLER_CALLBACK(queue_callback);
static struct BotQueue *initialize_queue(struct ClientSocket *client) {
struct BotQueue *queue = malloc(sizeof(*queue));
if (!queue) {
static struct BotQueue *initialize_queue(struct ClientSocket *client) {
struct BotQueue *queue = malloc(sizeof(*queue));
if (!queue) {
- p
error("malloc() failed"
);
+ p
rintf_log("main", LOG_ERROR, "%s:%d malloc() failed", __FILE__, __LINE__
);
return NULL;
}
queue->client = client;
client->queue = queue;
return NULL;
}
queue->client = client;
client->queue = queue;
+ queue->iofd = NULL;
queue->penalty = 0;
queue->fastqueue_first = NULL;
queue->fastqueue_last = NULL;
queue->penalty = 0;
queue->fastqueue_first = NULL;
queue->fastqueue_last = NULL;
@@
-118,14
+121,18
@@
int queue_add(struct ClientSocket *client, char* msg, int len) {
if(!queue->iofd) {
struct timeval timeout;
gettimeofday(&timeout, NULL);
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);
timeout.tv_sec += queue->rem_penalty;
queue->iofd = iohandler_timer(timeout, queue_callback);
+ queue->iofd->data = queue;
}
} else {
struct QueueEntry *entry = malloc(sizeof(*entry));
if (!entry) {
}
} else {
struct QueueEntry *entry = malloc(sizeof(*entry));
if (!entry) {
- p
error("malloc() failed"
);
+ p
rintf_log("main", LOG_ERROR, "%s:%d malloc() failed", __FILE__, __LINE__
);
return 0;
}
entry->msg = strdup(msg);
return 0;
}
entry->msg = strdup(msg);
@@
-241,9
+248,13
@@
static IOHANDLER_CALLBACK(queue_callback) {
if(queue->penalty > 0) {
struct timeval timeout;
gettimeofday(&timeout, NULL);
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);
timeout.tv_sec += queue->rem_penalty;
queue->iofd = iohandler_timer(timeout, queue_callback);
+ queue->iofd->data = queue;
} else {
queue->iofd = NULL;
queue->penalty = 0;
} else {
queue->iofd = NULL;
queue->penalty = 0;