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

View File

@@ -670,12 +670,16 @@ export const State = {
let members = new irc.CaseMapMap(buf.members);
irc.forEachChannelModeUpdate(msg, client.isupport, (mode, add, arg) => {
if (prefixByMode.has(mode)) {
let nick = arg;
let membership = members.get(nick);
let letter = prefixByMode.get(mode);
members.set(nick, updateMembership(membership, letter, add, client));
if (!prefixByMode.has(mode)) {
return;
}
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 };