state: fix undefined membership when handling MODE

Happens when the server sends a MODE message which refers to a user
who left the channel.
This commit is contained in:
Simon Ser
2025-05-23 23:52:30 +02:00
parent 02cc554df6
commit 7e785ed101
+9 -5
View File
@@ -670,12 +670,16 @@ export const State = {
let members = new irc.CaseMapMap(buf.members); let members = new irc.CaseMapMap(buf.members);
irc.forEachChannelModeUpdate(msg, client.isupport, (mode, add, arg) => { irc.forEachChannelModeUpdate(msg, client.isupport, (mode, add, arg) => {
if (prefixByMode.has(mode)) { if (!prefixByMode.has(mode)) {
let nick = arg; return;
let membership = members.get(nick);
let letter = prefixByMode.get(mode);
members.set(nick, updateMembership(membership, letter, add, client));
} }
let nick = arg;
let membership = members.get(nick);
if (membership === undefined) {
return;
}
let letter = prefixByMode.get(mode);
members.set(nick, updateMembership(membership, letter, add, client));
}); });
return { members }; return { members };