diff options
author | Sadie Powell <sadie@witchery.services> | 2021-05-23 19:12:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-23 13:12:10 -0500 |
commit | e4fd69e3d4ec2eb707a693ea69b8e14181249d0a (patch) | |
tree | 8469ab29009e0e5314c4637ee88706184b78e20b /src | |
parent | f0554b27df459b7794d990f9da72318e2e3d2620 (diff) |
Implement support for the IRCv3 SETNAME specification. (#2571)
Diffstat (limited to 'src')
-rw-r--r-- | src/common/inbound.c | 1 | ||||
-rw-r--r-- | src/common/proto-irc.c | 5 | ||||
-rw-r--r-- | src/common/userlist.c | 5 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/common/inbound.c b/src/common/inbound.c index 71c60357..a7cf51a4 100644 --- a/src/common/inbound.c +++ b/src/common/inbound.c @@ -1724,6 +1724,7 @@ static const char * const supported_caps[] = { "userhost-in-names", "cap-notify", "chghost", + "setname", /* ZNC */ "znc.in/server-time-iso", diff --git a/src/common/proto-irc.c b/src/common/proto-irc.c index fa2d822b..e3f4a962 100644 --- a/src/common/proto-irc.c +++ b/src/common/proto-irc.c @@ -1157,6 +1157,11 @@ process_named_msg (session *sess, char *type, char *word[], char *word_eol[], NULL, 0xff, tags_data); return; + case WORDL('S', 'E', 'T', 'N'): + inbound_user_info (sess, NULL, NULL, NULL, NULL, nick, STRIP_COLON(word, word_eol, 3), + NULL, 0xff, tags_data); + return; + case WORDL('I','N','V','I'): if (ignore_check (word[1], IG_INVI)) return; diff --git a/src/common/userlist.c b/src/common/userlist.c index 0f28a000..17719ff6 100644 --- a/src/common/userlist.c +++ b/src/common/userlist.c @@ -130,8 +130,11 @@ userlist_add_hostname (struct session *sess, char *nick, char *hostname, g_free (user->hostname); user->hostname = g_strdup (hostname); } - if (!user->realname && realname && *realname) + if (realname && *realname && g_strcmp0 (user->realname, realname) != 0) + { + g_free (user->realname); user->realname = g_strdup (realname); + } if (!user->servername && servername) user->servername = g_strdup (servername); if (!user->account && account && strcmp (account, "0") != 0) |