dircproxy is an IRC proxy server ("bouncer") designed for people who use IRC from lots of different workstations or clients, but wish to remain connected and see what they missed while they were away. You connect to IRC through dircproxy, and it keeps you connected to the server, even after you detach your client from it. While you're detached, it logs channel and private messages as well as important events, and when you re-attach it'll let you know what you missed. This can be used to give you roughly the same functionality as using ircII and screen together, except you can use whatever IRC client you like, including X ones!
GNU General Public License v2.0
11
stars
4
forks
source link
dircproxy handling of umodes screws up for umodes with a parameter (i.e. snomask) #65
On network that use an umode with a parameter dircproxy does not handle
these correctly.
For instance when setting: "-ix+IWsn +kKlodxtfgj" (here "+kKlodxtfgj" is a
parameter to +n (InspIRCd)).
Dircprocy does not understand the parameter and just proceeds to try and
add the parameter to the list of umodes. As I understand the code it is
actually specifically instructed to do this for every parameter (why!?).
This results in a stored umode of something like "+IWsnkKlodxtfgj" which
is then sent to the client upon reattach.
I think ideally dircproxy should support parameters to umodes and store
the umodes as a list of umodes+their parameter instead of a string.
Quick fix (makes dircproxy ignore parameters to umodes):
--- ./dircproxy-1.2.0-RC1/src/irc_server.c 2009-01-15
21:27:28.000000000 +0100
+++ ./dircproxy-1.2.0-RC1+raphmod-0.2/src/irc_server.c 2009-03-19
14:45:42.000000000 +0100
@@ -912,13 +940,13 @@
if (!irc_strcasecmp(p->nickname, msg.params[0])) {
/* Personal mode change */
- int param;
+ //int param;
irclog_log(p, IRC_LOG_MODE, IRC_LOGFILE_SERVER, p->servername,
"Your mode was changed: %s", msg.paramstarts[1]);
- for (param = 1; param < msg.numparams; param++)
- ircclient_change_mode(p, msg.params[param]);
+// for (param = 1; param < msg.numparams; param++)
+ ircclient_change_mode(p, msg.params[1]);
/* Check for refuse modes */
if (p->modes && p->conn_class->refuse_modes &&
Original issue reported on code.google.com by raphidae on 19 Mar 2009 at 1:50
Original issue reported on code.google.com by
raphidae
on 19 Mar 2009 at 1:50