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, ...);

Reply via email to