From 8d44fa3c3fda1ec46e7b9b1b236d889dc850790c Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Wed, 25 Nov 2020 22:39:07 -0500 Subject: [PATCH] fix duplicated JOIN line sent to resuming clients Resuming clients without the resume capability would receive two JOIN lines per channel. --- irc/channel.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/irc/channel.go b/irc/channel.go index eeeb06d7..b2416d73 100644 --- a/irc/channel.go +++ b/irc/channel.go @@ -993,19 +993,19 @@ func (channel *Channel) resumeAndAnnounce(session *Session) { // but really we should send it to voiced clients if !channel.flags.HasMode(modes.Auditorium) { for _, member := range channel.Members() { - for _, session := range member.Sessions() { - if session.capabilities.Has(caps.Resume) { + for _, mSes := range member.Sessions() { + if mSes == session || mSes.capabilities.Has(caps.Resume) { continue } - if session.capabilities.Has(caps.ExtendedJoin) { - session.Send(nil, details.nickMask, "JOIN", chname, details.accountName, details.realname) + if mSes.capabilities.Has(caps.ExtendedJoin) { + mSes.Send(nil, details.nickMask, "JOIN", chname, details.accountName, details.realname) } else { - session.Send(nil, details.nickMask, "JOIN", chname) + mSes.Send(nil, details.nickMask, "JOIN", chname) } if 0 < len(oldModes) { - session.Send(nil, channel.server.name, "MODE", chname, oldModes, details.nick) + mSes.Send(nil, channel.server.name, "MODE", chname, oldModes, details.nick) } } }