Thumbnail

rani/matterbridge.git

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

commit bc208f2c5f43fc718c10c0aab697cee45643064e Author: Alexander <papatutuwawa@polynom.me> Date: Sun May 24 14:07:36 2020 +0000 Prevent re-requesting avatar data (xmpp) (#1117) Prevent asking the server again and again for a user's avatar if the server does not respond to our initial request. diff --git a/bridge/xmpp/xmpp.go b/bridge/xmpp/xmpp.go index 75b2b59..ed99aac 100644 --- a/bridge/xmpp/xmpp.go +++ b/bridge/xmpp/xmpp.go @@ -2414 +2416 @@ type Bxmpp struct {   connected bool   sync.RWMutex   - avatarMap map[string]string + avatarAvailability map[string]bool + avatarMap map[string]string  }    func New(cfg *bridge.Config) bridge.Bridger {   return &Bxmpp{ - Config: cfg, - xmppMap: make(map[string]string), - avatarMap: make(map[string]string), + Config: cfg, + xmppMap: make(map[string]string), + avatarAvailability: make(map[string]bool), + avatarMap: make(map[string]string),   }  }   @@ -24410 +24614 @@ func (b *Bxmpp) handleXMPP() error {   event = config.EventTopicChange   }   - avatar := getAvatar(b.avatarMap, v.Remote, b.General) - if avatar == "" { + available, sok := b.avatarAvailability[v.Remote] + avatar := "" + if !sok {   b.Log.Debugf("Requesting avatar data") + b.avatarAvailability[v.Remote] = false   b.xc.AvatarRequestData(v.Remote) + } else if available { + avatar = getAvatar(b.avatarMap, v.Remote, b.General)   }     msgID := v.ID @@ -2786 +2848 @@ func (b *Bxmpp) handleXMPP() error {   }   case xmpp.AvatarData:   b.handleDownloadAvatar(v) + b.avatarAvailability[v.From] = true + b.Log.Debugf("Avatar for %s is now available", v.From)   case xmpp.Presence:   // Do nothing.   }