mirror of
https://github.com/weechat/weechat.git
synced 2026-06-28 05:46:38 +02:00
relay: fix bug with self nick when someone changes its nick on channel (bug #33739)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
WeeChat ChangeLog
|
||||
=================
|
||||
Sébastien Helleu <flashcode@flashtux.org>
|
||||
v0.3.6-dev, 2011-07-05
|
||||
v0.3.6-dev, 2011-07-10
|
||||
|
||||
|
||||
Version 0.3.6 (under dev!)
|
||||
@@ -35,6 +35,8 @@ Version 0.3.6 (under dev!)
|
||||
* irc: fix memory leak on plugin unload (free ignores)
|
||||
* irc: fix memory leak in message parser (when called from other plugins like
|
||||
relay) (bug #33387)
|
||||
* relay: fix bug with self nick when someone changes its nick on channel
|
||||
(bug #33739)
|
||||
* relay: fix memory leak (free some parsed messages) (bug #33387)
|
||||
* relay: fix memory leak on plugin load (free raw messages)
|
||||
* logger: add option logger.file.flush_delay (task #11118)
|
||||
|
||||
@@ -202,7 +202,7 @@ relay_client_irc_signal_irc_in2_cb (void *data, const char *signal,
|
||||
const char *type_data, void *signal_data)
|
||||
{
|
||||
struct t_relay_client *client;
|
||||
const char *ptr_msg, *irc_host, *irc_command, *irc_args;
|
||||
const char *ptr_msg, *irc_nick, *irc_host, *irc_command, *irc_args;
|
||||
struct t_hashtable *hash_parsed;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -223,19 +223,21 @@ relay_client_irc_signal_irc_in2_cb (void *data, const char *signal,
|
||||
hash_parsed = relay_client_irc_parse_message (ptr_msg);
|
||||
if (hash_parsed)
|
||||
{
|
||||
irc_nick = weechat_hashtable_get (hash_parsed, "nick");
|
||||
irc_host = weechat_hashtable_get (hash_parsed, "host");
|
||||
irc_command = weechat_hashtable_get (hash_parsed, "command");
|
||||
irc_args = weechat_hashtable_get (hash_parsed, "arguments");
|
||||
|
||||
/* if self nick has changed, update it in client data */
|
||||
if (irc_command && (weechat_strcasecmp (irc_command, "nick") == 0))
|
||||
if (irc_command && (weechat_strcasecmp (irc_command, "nick") == 0)
|
||||
&& irc_nick && irc_nick[0]
|
||||
&& irc_args && irc_args[0]
|
||||
&& (weechat_strcasecmp (irc_nick, RELAY_IRC_DATA(client, nick)) == 0))
|
||||
{
|
||||
if (irc_args && irc_args[0])
|
||||
{
|
||||
if (RELAY_IRC_DATA(client, nick))
|
||||
free (RELAY_IRC_DATA(client, nick));
|
||||
RELAY_IRC_DATA(client, nick) = strdup (irc_args);
|
||||
}
|
||||
if (RELAY_IRC_DATA(client, nick))
|
||||
free (RELAY_IRC_DATA(client, nick));
|
||||
RELAY_IRC_DATA(client, nick) = strdup ((irc_args[0] == ':') ?
|
||||
irc_args + 1 : irc_args);
|
||||
}
|
||||
|
||||
/* relay all commands to client, but not ping/pong */
|
||||
|
||||
Reference in New Issue
Block a user