From c57dd004b86a90d70cb7d4d8fe5cd5dc523793e2 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 11 Aug 2020 16:30:56 +0100 Subject: [PATCH] Fix bugs --- currentstateserver/acls/acls.go | 11 ++++++++--- currentstateserver/consumers/roomserver.go | 5 ++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/currentstateserver/acls/acls.go b/currentstateserver/acls/acls.go index 8deaa1ca5..ba41dc8d0 100644 --- a/currentstateserver/acls/acls.go +++ b/currentstateserver/acls/acls.go @@ -56,13 +56,16 @@ type serverACL struct { func (s *ServerACLs) OnServerACLUpdate(state *gomatrixserverlib.Event) { acls := &serverACL{} if err := json.Unmarshal(state.Content(), &acls.ServerACL); err != nil { + logrus.WithError(err).Errorf("Failed to unmarshal state content for server ACLs") return } for _, orig := range acls.Allowed { escaped := regexp.QuoteMeta(orig) escaped = strings.Replace(escaped, "\\?", "(.)", -1) escaped = strings.Replace(escaped, "\\*", "(.*)", -1) - if expr, err := regexp.Compile(escaped); err == nil { + if expr, err := regexp.Compile(escaped); err != nil { + logrus.WithError(err).Errorf("Failed to compile allowed regex") + } else { acls.allowedRegexes = append(acls.allowedRegexes, expr) } } @@ -70,7 +73,9 @@ func (s *ServerACLs) OnServerACLUpdate(state *gomatrixserverlib.Event) { escaped := regexp.QuoteMeta(orig) escaped = strings.Replace(escaped, "\\?", "(.)", -1) escaped = strings.Replace(escaped, "\\*", "(.*)", -1) - if expr, err := regexp.Compile(escaped); err == nil { + if expr, err := regexp.Compile(escaped); err != nil { + logrus.WithError(err).Errorf("Failed to compile denied regex") + } else { acls.deniedRegexes = append(acls.deniedRegexes, expr) } } @@ -78,7 +83,7 @@ func (s *ServerACLs) OnServerACLUpdate(state *gomatrixserverlib.Event) { "allow_ip_literals": acls.AllowIPLiterals, "num_allowed": len(acls.allowedRegexes), "num_denied": len(acls.deniedRegexes), - }).Infof("Updating server ACLs for %q", state.RoomID()) + }).Debugf("Updating server ACLs for %q", state.RoomID()) s.aclsMutex.Lock() defer s.aclsMutex.Unlock() s.acls[state.RoomID()] = acls diff --git a/currentstateserver/consumers/roomserver.go b/currentstateserver/consumers/roomserver.go index e022d8efd..9535f083d 100644 --- a/currentstateserver/consumers/roomserver.go +++ b/currentstateserver/consumers/roomserver.go @@ -79,6 +79,10 @@ func (c *OutputRoomEventConsumer) onNewRoomEvent( ) error { ev := msg.Event + if ev.Type() == "m.room.server_acl" { + defer c.acls.OnServerACLUpdate(&ev.Event) + } + addsStateEvents := msg.AddsState() ev, err := c.updateStateEvent(ev) @@ -91,7 +95,6 @@ func (c *OutputRoomEventConsumer) onNewRoomEvent( if err != nil { return err } - c.acls.OnServerACLUpdate(&addsStateEvents[i].Event) } err = c.db.StoreStateEvents(