Thumbnail

rani/matterbridge.git

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

commit 560bea056e6d37b322c6ce140ce26eb498d7d6c0 Author: Wim <wim@42.be> Date: Sun Jul 30 16:09:05 2017 +0000 Handle same account in multiple gateways better diff --git a/gateway/gateway.go b/gateway/gateway.go index dfd0604..86fa572 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -1707 +1708 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) {  }    func (gw *Gateway) ignoreMessage(msg *config.Message) bool { - if gw.Router.getGatewayName(getChannelID(*msg)) != gw.Name { + // if we don't have the bridge, ignore it + if _, ok := gw.Bridges[msg.Account]; !ok {   return true   }   if msg.Text == "" { @@ -2407 +2417 @@ func (gw *Gateway) modifyAvatar(msg config.Message, dest *bridge.Bridge) string  func (gw *Gateway) modifyMessage(msg *config.Message) {   // replace :emoji: to unicode   msg.Text = emojilib.Replace(msg.Text) - msg.Gateway = gw.Router.getGatewayName(getChannelID(*msg)) + msg.Gateway = gw.Name  }    func getChannelID(msg config.Message) string { diff --git a/gateway/router.go b/gateway/router.go index 26c0996..eb8251e 100644 --- a/gateway/router.go +++ b/gateway/router.go @@ -7013 +7014 @@ func (r *Router) getBridge(account string) *bridge.Bridge {   return nil  }   -func (r *Router) getGatewayName(channelID string) string { +func (r *Router) getGatewayName(channelID string) []string { + var names []string   for _, gw := range r.Gateways {   if _, ok := gw.Channels[channelID]; ok { - return gw.Name + names = append(names, gw.Name)   }   } - return "" + return names  }    func (r *Router) handleReceive() { @@ -10313 +10411 @@ func (r *Router) handleReceive() {   }   }   for _, gw := range r.Gateways { - if gw.Name == r.getGatewayName(getChannelID(msg)) { - if !gw.ignoreMessage(&msg) { - msg.Timestamp = time.Now() - gw.modifyMessage(&msg) - for _, br := range gw.Bridges { - gw.handleMessage(msg, br) - } + if !gw.ignoreMessage(&msg) { + msg.Timestamp = time.Now() + gw.modifyMessage(&msg) + for _, br := range gw.Bridges { + gw.handleMessage(msg, br)   }   }   }