whois: show a remote user's actual server description in 312, not the literal "remote user"

This commit is contained in:
Jean Chevronnet 2026-08-21 23:43:51 +00:00
parent ddb6214b47
commit 73817eddde
No known key found for this signature in database
GPG key ID: 439666D63A9477E4

View file

@ -111,20 +111,22 @@ impl Command for Whois {
// maybe they're on another server // maybe they're on another server
if let Some((uuid, _)) = s.find_remote(&tnick) { if let Some((uuid, _)) = s.find_remote(&tnick) {
if let Some(ru) = s.remote_users.get(&uuid) { if let Some(ru) = s.remote_users.get(&uuid) {
let srv = s let (srv, sdesc) = s
.servers .servers
.get(&ru.sid) .get(&ru.sid)
.map(|sv| sv.name.clone()) .map(|sv| (sv.name.clone(), sv.desc.clone()))
.unwrap_or_else(|| ru.sid.clone()); .unwrap_or_else(|| (ru.sid.clone(), "remote server".to_string()));
s.numeric( s.numeric(
uid, uid,
RPL_WHOISUSER, RPL_WHOISUSER,
&format!("{} {} {} * :{}", ru.nick, ru.ident, ru.host, ru.realname), &format!("{} {} {} * :{}", ru.nick, ru.ident, ru.host, ru.realname),
); );
// 312: the user's server and its description (not a placeholder —
// the actual server info, so a services user reads as its server).
s.numeric( s.numeric(
uid, uid,
RPL_WHOISSERVER, RPL_WHOISSERVER,
&format!("{} {srv} :remote user", ru.nick), &format!("{} {srv} :{sdesc}", ru.nick),
); );
// 313: a user on a U-lined services server is "a network service" // 313: a user on a U-lined services server is "a network service"
// — its oper line reads as a service, not an operator. // — its oper line reads as a service, not an operator.