diff options
Diffstat (limited to 'src/irc/core')
-rw-r--r-- | src/irc/core/ctcp.c | 8 | ||||
-rw-r--r-- | src/irc/core/irc-server.c | 4 | ||||
-rw-r--r-- | src/irc/core/irc-special-vars.c | 14 | ||||
-rw-r--r-- | src/irc/core/query.c | 2 |
4 files changed, 15 insertions, 13 deletions
diff --git a/src/irc/core/ctcp.c b/src/irc/core/ctcp.c index 31768088..067e9aef 100644 --- a/src/irc/core/ctcp.c +++ b/src/irc/core/ctcp.c @@ -156,6 +156,7 @@ static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char * if (ptr != NULL) *ptr = '\0'; signal_emit("ctcp msg", 5, msg, server, nick, addr, target); + signal_stop(); } g_free(params); @@ -167,7 +168,7 @@ static void event_notice(const char *data, IRC_SERVER_REC *server, const char *n g_return_if_fail(data != NULL); - params = event_get_params(data, 2, &target, &msg); /* Channel or nick name */ + params = event_get_params(data, 2, &target, &msg); /* handle only ctcp replies */ if (*msg == 1) { @@ -175,6 +176,7 @@ static void event_notice(const char *data, IRC_SERVER_REC *server, const char *n if (ptr != NULL) *ptr = '\0'; signal_emit("ctcp reply", 5, msg, server, nick, addr, target); + signal_stop(); } g_free(params); @@ -193,8 +195,8 @@ void ctcp_init(void) settings_add_int("flood", "max_ctcp_queue", 5); signal_add("server disconnected", (SIGNAL_FUNC) ctcp_deinit_server); - signal_add("event privmsg", (SIGNAL_FUNC) event_privmsg); - signal_add("event notice", (SIGNAL_FUNC) event_notice); + signal_add_first("event privmsg", (SIGNAL_FUNC) event_privmsg); + signal_add_first("event notice", (SIGNAL_FUNC) event_notice); signal_add("ctcp msg", (SIGNAL_FUNC) ctcp_msg); signal_add("ctcp reply", (SIGNAL_FUNC) ctcp_reply); signal_add("ctcp msg ping", (SIGNAL_FUNC) ctcp_ping); diff --git a/src/irc/core/irc-server.c b/src/irc/core/irc-server.c index d4d58774..c747f757 100644 --- a/src/irc/core/irc-server.c +++ b/src/irc/core/irc-server.c @@ -367,7 +367,9 @@ static void event_connected(const char *data, IRC_SERVER_REC *server, const char if (server->real_address == NULL) { /* set the server address */ - server->real_address = g_strdup(from); + server->real_address = from == NULL ? + g_strdup(server->connrec->address) : /* shouldn't happen.. */ + g_strdup(from); } /* last welcome message found - commands can be sent to server now. */ diff --git a/src/irc/core/irc-special-vars.c b/src/irc/core/irc-special-vars.c index 9fcb5808..09e0db11 100644 --- a/src/irc/core/irc-special-vars.c +++ b/src/irc/core/irc-special-vars.c @@ -223,14 +223,12 @@ static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char * params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg); - if (*msg != 1) { - if (!ischannel(*target)) { - g_free_not_null(last_privmsg_from); - last_privmsg_from = g_strdup(nick); - } else { - g_free_not_null(last_public_from); - last_public_from = g_strdup(nick); - } + if (!ischannel(*target)) { + g_free_not_null(last_privmsg_from); + last_privmsg_from = g_strdup(nick); + } else { + g_free_not_null(last_public_from); + last_public_from = g_strdup(nick); } g_free(params); diff --git a/src/irc/core/query.c b/src/irc/core/query.c index 68ec1a73..89a2f9f7 100644 --- a/src/irc/core/query.c +++ b/src/irc/core/query.c @@ -113,7 +113,7 @@ static void event_privmsg(const char *data, IRC_SERVER_REC *server, const char * params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg); - if (addr != NULL && *msg != 1 && !ischannel(*target)) { + if (addr != NULL && !ischannel(*target)) { /* save nick's address to query */ query = query_find(server, nick); if (query != NULL && (query->address == NULL || strcmp(query->address, addr) != 0)) { |