Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 4fbb3ed9eb57c1195b8300907ab07f784da29e08 Author: Wim <wim@42.be> Date: Sat Dec 05 21:41:45 2020 +0000 Make handlers run async (irc) (#1325) This makes the handlers run in a seperate go-routine in girc, and makes sure that girc isn't blocked on executing PONG requests when matterbridge takes a long time handling the incoming message. This can happen when another bridge is in a backoff state where the backoff time exceeds the IRC ping timeout. diff --git a/bridge/irc/handlers.go b/bridge/irc/handlers.go index 6310f57..b90fa3a 100644 --- a/bridge/irc/handlers.go +++ b/bridge/irc/handlers.go @@ -12314 +12314 @@ func (b *Birc) handleNewConnection(client *girc.Client, event girc.Event) {   i := b.i   b.Nick = event.Params[0]   - i.Handlers.Add("PRIVMSG", b.handlePrivMsg) - i.Handlers.Add("CTCP_ACTION", b.handlePrivMsg) + i.Handlers.AddBg("PRIVMSG", b.handlePrivMsg) + i.Handlers.AddBg("CTCP_ACTION", b.handlePrivMsg)   i.Handlers.Add(girc.RPL_TOPICWHOTIME, b.handleTopicWhoTime) - i.Handlers.Add(girc.NOTICE, b.handleNotice) - i.Handlers.Add("JOIN", b.handleJoinPart) - i.Handlers.Add("PART", b.handleJoinPart) - i.Handlers.Add("QUIT", b.handleJoinPart) - i.Handlers.Add("KICK", b.handleJoinPart) + i.Handlers.AddBg(girc.NOTICE, b.handleNotice) + i.Handlers.AddBg("JOIN", b.handleJoinPart) + i.Handlers.AddBg("PART", b.handleJoinPart) + i.Handlers.AddBg("QUIT", b.handleJoinPart) + i.Handlers.AddBg("KICK", b.handleJoinPart)   i.Handlers.Add("INVITE", b.handleInvite)  }