Package: xchat-gnome
Version: 0.18-2
Severity: whishlist
Hi,
it would be nice to be able to have a whitelist for the msg flood detection for
important things.
Because a patch says more than a thousand words, I attach a proof of concept.
Kind regards
T.
--
Thomas Viehmann, http://thomas.viehmann.net/
diff -urN xchat-gnome-0.18~/src/common/cfgfiles.c xchat-gnome-0.18/src/common/cfgfiles.c
--- xchat-gnome-0.18~/src/common/cfgfiles.c 2007-06-13 02:03:17.000000000 +0200
+++ xchat-gnome-0.18/src/common/cfgfiles.c 2008-02-08 18:33:21.000000000 +0100
@@ -415,6 +415,7 @@
{"flood_ctcp_time", P_OFFINT (ctcp_time_limit), TYPE_INT},
{"flood_msg_num", P_OFFINT (msg_number_limit), TYPE_INT},
{"flood_msg_time", P_OFFINT (msg_time_limit), TYPE_INT},
+ {"flood_msg_whitelist", P_OFFSET (msg_whitelist), TYPE_STR},
{"gui_auto_open_chat", P_OFFINT (autoopendccchatwindow), TYPE_BOOL},
{"gui_auto_open_dialog", P_OFFINT (autodialog), TYPE_BOOL},
diff -urN xchat-gnome-0.18~/src/common/ignore.c xchat-gnome-0.18/src/common/ignore.c
--- xchat-gnome-0.18~/src/common/ignore.c 2007-03-06 23:47:37.000000000 +0100
+++ xchat-gnome-0.18/src/common/ignore.c 2008-02-08 18:37:07.000000000 +0100
@@ -350,6 +350,7 @@
int i;
time_t current_time;
current_time = time (NULL);
+ char* j;
if (what == 0)
{
@@ -386,6 +387,11 @@
}
} else
{
+ if (((j = strstr(prefs.msg_whitelist, ip)) != NULL) &&
+ ((j == prefs.msg_whitelist) || (*(j-1)==' ')) &&
+ ((*(j += strlen(ip))=='\0' ) || (*(j += strlen(ip))==' ' ))) {
+ return 1;
+ }
if (serv->msg_last_time == 0)
{
serv->msg_last_time = time (NULL);
diff -urN xchat-gnome-0.18~/src/common/xchat.h xchat-gnome-0.18/src/common/xchat.h
--- xchat-gnome-0.18~/src/common/xchat.h 2007-06-13 02:03:19.000000000 +0200
+++ xchat-gnome-0.18/src/common/xchat.h 2008-02-08 18:34:59.000000000 +0100
@@ -295,6 +295,7 @@
unsigned int msg_number_limit; /*same deal */
unsigned int msg_time_limit;
+ char msg_whitelist[1024];
/* Tells us if we need to save, only when they've been edited.
This is so that we continue using internal defaults (which can