chanlog: post log lines as a channel PRIVMSG from the server, not a NOTICE

This commit is contained in:
Jean Chevronnet 2026-08-21 17:41:00 +00:00
parent b8e24e2071
commit ddb6214b47
No known key found for this signature in database
GPG key ID: 439666D63A9477E4
2 changed files with 4 additions and 2 deletions

View file

@ -30,9 +30,11 @@ pub fn tee(s: &Server, cat: char, msg: &str) {
if !s.channels.contains_key(&key) { if !s.channels.contains_key(&key) {
continue; // channel not created yet — nothing to log into continue; // channel not created yet — nothing to log into
} }
// Posted as a PRIVMSG from the server, so clients show it inline in the
// channel as a normal message rather than routing it to a notices view.
// to_channel builds the line once and shares it by Arc across members (and // to_channel builds the line once and shares it by Arc across members (and
// adds the server-time tag per recipient) instead of cloning per member. // adds the server-time tag per recipient) instead of cloning per member.
let line = format!(":{} NOTICE {chan} :{msg}", s.name); let line = format!(":{} PRIVMSG {chan} :{msg}", s.name);
s.to_channel(&key, &line, None); s.to_channel(&key, &line, None);
} }
} }

View file

@ -1671,7 +1671,7 @@ mod tests {
s.snotice_c('c', "CONNMSG"); s.snotice_c('c', "CONNMSG");
let lines: Vec<String> = std::iter::from_fn(|| rx.try_recv().ok()).collect(); let lines: Vec<String> = std::iter::from_fn(|| rx.try_recv().ok()).collect();
let logged = |chan: &str, needle: &str| { let logged = |chan: &str, needle: &str| {
lines.iter().any(|l| l.contains(&format!("NOTICE {chan} :")) && l.contains(needle)) lines.iter().any(|l| l.contains(&format!("PRIVMSG {chan} :")) && l.contains(needle))
}; };
assert!(logged("#xlog", "XLINEMSG"), "x-line notice goes to #xlog: {lines:?}"); assert!(logged("#xlog", "XLINEMSG"), "x-line notice goes to #xlog: {lines:?}");
assert!(logged("#all", "XLINEMSG"), "x-line notice goes to #all: {lines:?}"); assert!(logged("#all", "XLINEMSG"), "x-line notice goes to #all: {lines:?}");