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
+6 -2
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)) {
return;
}
let nick = arg; let nick = arg;
let membership = members.get(nick); let membership = members.get(nick);
if (membership === undefined) {
return;
}
let letter = prefixByMode.get(mode); let letter = prefixByMode.get(mode);
members.set(nick, updateMembership(membership, letter, add, client)); members.set(nick, updateMembership(membership, letter, add, client));
}
}); });
return { members }; return { members };