On Fri, 14 Sep 2001, Ganesh Sittampalam wrote:
> I have two bug reports from using the proxy module. The patch attached
> partially fixes (2) for me.
Even more partially than I meant then, it turns out, since I forgot
actions, which are now fixed in the attached, and things like notices
which I'm less certain how to handle. Also I realised that the correct
routing of signals is actually a bit complicated and should incorporate
the fix to (1), so I'm going to go to bed instead :-) With this patch I
have something that's reasonably usable for me, so I'm happy, at any rate.
Cheers,
Ganesh
diff -u irssi-0.7.98.CVS/src/irc/proxy/dump.c
irssi-0.7.98.CVS-new/src/irc/proxy/dump.c
--- irssi-0.7.98.CVS/src/irc/proxy/dump.c Wed Jul 25 21:10:12 2001
+++ irssi-0.7.98.CVS-new/src/irc/proxy/dump.c Fri Sep 14 01:29:20 2001
@@ -88,7 +88,7 @@
va_end(args);
}
-/*void proxy_outserver_all(IRC_SERVER_REC *server, const char *data, ...)
+void proxy_outserver_all(IRC_SERVER_REC *server, const char *data, ...)
{
va_list args;
GSList *tmp;
@@ -111,7 +111,7 @@
g_free(str);
va_end(args);
-}*/
+}
void proxy_outserver_all_except(CLIENT_REC *client, const char *data, ...)
{
Only in irssi-0.7.98.CVS-new/src/irc/proxy/: libirc_proxy.a
diff -u irssi-0.7.98.CVS/src/irc/proxy/listen.c
irssi-0.7.98.CVS-new/src/irc/proxy/listen.c
--- irssi-0.7.98.CVS/src/irc/proxy/listen.c Tue Jul 10 21:10:14 2001
+++ irssi-0.7.98.CVS-new/src/irc/proxy/listen.c Fri Sep 14 02:21:01 2001
@@ -544,6 +544,18 @@
}
}
+static void sig_message_own_public(SERVER_REC *server, const char *msg,
+ const char *target)
+{
+ proxy_outserver_all(IRC_SERVER(server), "PRIVMSG %s :%s", target, msg);
+}
+
+static void sig_action_own_public(SERVER_REC *server, const char *msg,
+ const char *target)
+{
+ proxy_outserver_all(IRC_SERVER(server), "PRIVMSG %s :\001ACTION %s\001",
+target, msg);
+}
+
void plugin_proxy_listen_init(void)
{
next_line = g_string_new(NULL);
@@ -558,6 +570,8 @@
signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected);
signal_add("event nick", (SIGNAL_FUNC) event_nick);
signal_add("setup changed", (SIGNAL_FUNC) read_settings);
+ signal_add("message own_public", (SIGNAL_FUNC) sig_message_own_public);
+ signal_add("message irc own_action", (SIGNAL_FUNC) sig_action_own_public);
}
void plugin_proxy_listen_deinit(void)
@@ -574,4 +588,6 @@
signal_remove("server disconnected", (SIGNAL_FUNC) sig_server_disconnected);
signal_remove("event nick", (SIGNAL_FUNC) event_nick);
signal_remove("setup changed", (SIGNAL_FUNC) read_settings);
+ signal_remove("message own_public", (SIGNAL_FUNC) sig_message_own_public);
+ signal_remove("message irc own_action", (SIGNAL_FUNC) sig_action_own_public);
}
diff -u irssi-0.7.98.CVS/src/irc/proxy/module.h
irssi-0.7.98.CVS-new/src/irc/proxy/module.h
--- irssi-0.7.98.CVS/src/irc/proxy/module.h Tue Dec 5 01:01:53 2000
+++ irssi-0.7.98.CVS-new/src/irc/proxy/module.h Fri Sep 14 01:35:29 2001
@@ -44,5 +44,5 @@
void proxy_outdata(CLIENT_REC *client, const char *data, ...);
void proxy_outdata_all(IRC_SERVER_REC *server, const char *data, ...);
void proxy_outserver(CLIENT_REC *client, const char *data, ...);
-/*void proxy_outserver_all(const char *data, ...);*/
+void proxy_outserver_all(IRC_SERVER_REC *server, const char *data, ...);
void proxy_outserver_all_except(CLIENT_REC *client, const char *data, ...);