1
0
mirror of https://github.com/irssi/irssi.git synced 2024-09-29 04:45:57 -04:00

/KNOCKOUT code was a bit stupid, and the timeout checking wasn't very

/accurate.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2551 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2002-03-10 14:31:07 +00:00 committed by cras
parent 8d245f2ddf
commit 44247af3ff
2 changed files with 5 additions and 11 deletions

View File

@ -52,7 +52,7 @@
typedef struct { typedef struct {
IRC_CHANNEL_REC *channel; IRC_CHANNEL_REC *channel;
char *ban; char *ban;
int timeleft; time_t unban_time;
} KNOCKOUT_REC; } KNOCKOUT_REC;
static GString *tmpstr; static GString *tmpstr;
@ -708,24 +708,19 @@ static void knockout_destroy(IRC_SERVER_REC *server, KNOCKOUT_REC *rec)
static void knockout_timeout_server(IRC_SERVER_REC *server) static void knockout_timeout_server(IRC_SERVER_REC *server)
{ {
GSList *tmp, *next; GSList *tmp, *next;
time_t t; time_t now;
g_return_if_fail(server != NULL); g_return_if_fail(server != NULL);
if (!IS_IRC_SERVER(server)) if (!IS_IRC_SERVER(server))
return; return;
t = server->knockout_lastcheck == 0 ? 0 : now = time(NULL);
time(NULL)-server->knockout_lastcheck;
server->knockout_lastcheck = time(NULL);
for (tmp = server->knockoutlist; tmp != NULL; tmp = next) { for (tmp = server->knockoutlist; tmp != NULL; tmp = next) {
KNOCKOUT_REC *rec = tmp->data; KNOCKOUT_REC *rec = tmp->data;
next = tmp->next; next = tmp->next;
if (rec->timeleft > t) if (rec->unban_time <= now) {
rec->timeleft -= t;
else {
/* timeout, unban. */ /* timeout, unban. */
ban_remove(rec->channel, rec->ban); ban_remove(rec->channel, rec->ban);
knockout_destroy(server, rec); knockout_destroy(server, rec);
@ -800,7 +795,7 @@ static void cmd_knockout(const char *data, IRC_SERVER_REC *server,
else { else {
/* create knockout record */ /* create knockout record */
rec = g_new(KNOCKOUT_REC, 1); rec = g_new(KNOCKOUT_REC, 1);
rec->timeleft = timeleft; rec->unban_time = time(NULL)+timeleft;
rec->channel = channel; rec->channel = channel;
rec->ban = banmasks; rec->ban = banmasks;

View File

@ -87,7 +87,6 @@ struct _IRC_SERVER_REC {
/* /knockout ban list */ /* /knockout ban list */
GSList *knockoutlist; GSList *knockoutlist;
time_t knockout_lastcheck;
GHashTable *splits; /* For keeping track of netsplits */ GHashTable *splits; /* For keeping track of netsplits */
GSList *split_servers; /* Servers that are currently in split */ GSList *split_servers; /* Servers that are currently in split */