From 54c7ead605bfe793bac7d9b6aff12cbf7fd06081 Mon Sep 17 00:00:00 2001 From: Ed Kellett Date: Sun, 18 Oct 2020 12:47:27 +0100 Subject: [PATCH] m_names: honour userhost-in-names for global NAMES --- modules/m_names.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/modules/m_names.c b/modules/m_names.c index b1e4b279..bbebb8a4 100644 --- a/modules/m_names.c +++ b/modules/m_names.c @@ -172,14 +172,31 @@ names_global(struct Client *source_p) if(dont_show) continue; - if((cur_len + NICKLEN + 2) > (BUFSIZE - 3)) + if (IsCapable(source_p, CLICAP_USERHOST_IN_NAMES)) { - sendto_one(source_p, "%s", buf); - cur_len = mlen; - t = buf + mlen; + if (cur_len + strlen(target_p->name) + strlen(target_p->username) + strlen(target_p->host) + strlen(" !@") >= BUFSIZE - strlen("\r\n")) + { + *(t - 1) = '\0'; + sendto_one(source_p, "%s", buf); + cur_len = mlen; + t = buf + mlen; + } + + tlen = sprintf(t, "%s!%s@%s ", target_p->name, target_p->username, target_p->host); + } + else + { + if(cur_len + strlen(target_p->name) + strlen(" ") >= BUFSIZE - strlen("\r\n")) + { + *(t - 1) = '\0'; + sendto_one(source_p, "%s", buf); + cur_len = mlen; + t = buf + mlen; + } + + tlen = sprintf(t, "%s ", target_p->name); } - tlen = sprintf(t, "%s ", target_p->name); cur_len += tlen; t += tlen; }