From b2df32bc819b28ca1516545275f838f5bec9b240 Mon Sep 17 00:00:00 2001 From: Bryan Davis Date: Thu, 23 May 2024 15:55:31 -0600 Subject: [PATCH] Clear existing IRC event handlers before connecting to new ones (irc) (#2138) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clear IRC event handlers that we will be registering for the new connection before registering new handlers. This prevents duplicate event handlers in the case where we are connecting via a BNC and are seeing a reconnect. Attempting to clear handlers when none have been set is a no-op. Fixes 42wim#1564 Co-authored-by: Andreas Vögele --- bridge/irc/handlers.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bridge/irc/handlers.go b/bridge/irc/handlers.go index 74db7685..e5aa1fc7 100644 --- a/bridge/irc/handlers.go +++ b/bridge/irc/handlers.go @@ -122,6 +122,17 @@ func (b *Birc) handleNewConnection(client *girc.Client, event girc.Event) { i := b.i b.Nick = event.Params[0] + b.Log.Debug("Clearing handlers before adding in case of BNC reconnect") + i.Handlers.Clear("PRIVMSG") + i.Handlers.Clear("CTCP_ACTION") + i.Handlers.Clear(girc.RPL_TOPICWHOTIME) + i.Handlers.Clear(girc.NOTICE) + i.Handlers.Clear("JOIN") + i.Handlers.Clear("PART") + i.Handlers.Clear("QUIT") + i.Handlers.Clear("KICK") + i.Handlers.Clear("INVITE") + i.Handlers.AddBg("PRIVMSG", b.handlePrivMsg) i.Handlers.AddBg("CTCP_ACTION", b.handlePrivMsg) i.Handlers.Add(girc.RPL_TOPICWHOTIME, b.handleTopicWhoTime)