Redirect DCC messages (#163).
authorJelmer Vernooij <jelmer@samba.org>
Tue, 13 Nov 2007 02:00:59 +0000 (03:00 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 13 Nov 2007 02:00:59 +0000 (03:00 +0100)
NEWS
mods/log_irssi.c
src/network.c

diff --git a/NEWS b/NEWS
index ae5a92ab3d039dd4e1b9653a6c8af161b1f48d4a..fb88f8375321f7a6080acb216cb91b83b43acda4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -50,6 +50,8 @@ Ctrlproxy 3.0.4 UNRELEASED
 
        * Support IRCD 005 parameter. (#160)
 
+       * Redirect DCC messages to clients. (#163)
+
   NEW FEATURES
 
     * New configuration option for auto-away: "client_limit". If set,
index 43f21b69005335391a372b1bdea0445a2c6cf6b1..39e4ae5b79a335f55ff56b530de334705f63011a 100644 (file)
@@ -152,7 +152,7 @@ static gboolean log_data(struct network *n, const struct line *l,
                } else { 
                        char *channels = g_strdup(l->args[1]);
                        char *nicks = g_strdup(l->args[1]);
-                       char *p,*nx; 
+                       char *p, *nx; 
                        gboolean cont = TRUE;
                        char *_nick;
 
@@ -188,7 +188,7 @@ static gboolean log_data(struct network *n, const struct line *l,
                else 
                        target_printf(n, l->args[1], "%02d:%02d -!- %s has removed the topic\n", t->tm_hour, t->tm_min, nick);
        } else if (!g_strcasecmp(l->args[0], "NICK") && 
-                          dir == FROM_SERVER && l->args[1]) {
+                          dir == FROM_SERVER && l->args[1] != NULL) {
                struct network_nick *nn = find_network_nick(n->state, nick);
                GList *gl;
 
@@ -224,7 +224,6 @@ static void load_config(struct global *global)
        } else {
                logbasedir = g_key_file_get_string(kf, "log-irssi", "logfile", NULL);
        }
-       
 
        log_ctx = log_support_init();
 
index a1ebb693a358258ecb7d076ba2542d84efa8f05e..13ba83ccc070a5a538822646d82f5d075e8bb882 100644 (file)
@@ -259,15 +259,19 @@ static gboolean process_from_server(struct network *n, struct line *l)
                gboolean linestack_store = TRUE;
                if (atoi(l->args[0])) {
                        linestack_store &= (!redirect_response(n, l));
-               } else if (!g_strcasecmp(l->args[0], "PRIVMSG") && l->argc > 2 && 
-                       l->args[2][0] == '\001' && 
-                       g_strncasecmp(l->args[2], "\001ACTION", 7) != 0) {
-                       ctcp_process_network_request(n, l);
-               } else if (!g_strcasecmp(l->args[0], "NOTICE") && l->argc > 2 && 
-                       l->args[2][0] == '\001') {
-                       ctcp_process_network_reply(n, l);
-               } else if (run_server_filter(n, l, FROM_SERVER)) {
-                       clients_send(n->clients, l, NULL);
+               } else {
+                       if (n->clients == NULL) {
+                               if (!g_strcasecmp(l->args[0], "PRIVMSG") && l->argc > 2 && 
+                                       l->args[2][0] == '\001' && 
+                                       g_strncasecmp(l->args[2], "\001ACTION", 7) != 0) {
+                                       ctcp_process_network_request(n, l);
+                               } else if (!g_strcasecmp(l->args[0], "NOTICE") && l->argc > 2 && 
+                                       l->args[2][0] == '\001') {
+                                       ctcp_process_network_reply(n, l);
+                               }
+                       } else if (run_server_filter(n, l, FROM_SERVER)) {
+                               clients_send(n->clients, l, NULL);
+                       }
                } 
 
                if (linestack_store)