diff --git a/mediaapi/routing/routing.go b/mediaapi/routing/routing.go index 2a65f57e3..4e37a8bb5 100644 --- a/mediaapi/routing/routing.go +++ b/mediaapi/routing/routing.go @@ -117,13 +117,16 @@ func makeDownloadAPI( w.Header().Set("Content-Type", "application/json") // Ratelimit requests - if r := rateLimits.Limit(req); r != nil { - if err := json.NewEncoder(w).Encode(r); err != nil { - w.WriteHeader(http.StatusInternalServerError) + // NOTSPEC: The spec says everything at /media/ should be rate limited, but this causes issues with thumbnails (#2243) + if name != "thumbnail" { + if r := rateLimits.Limit(req); r != nil { + if err := json.NewEncoder(w).Encode(r); err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + w.WriteHeader(http.StatusTooManyRequests) return } - w.WriteHeader(http.StatusTooManyRequests) - return } vars, _ := httputil.URLDecodeMapValues(mux.Vars(req)) diff --git a/syncapi/routing/messages.go b/syncapi/routing/messages.go index 7cd54eef0..9aef5db14 100644 --- a/syncapi/routing/messages.go +++ b/syncapi/routing/messages.go @@ -184,16 +184,18 @@ func OnIncomingMessagesRequest( // at least fetch the membership events for the users returned in chunk if LazyLoadMembers is set state := []gomatrixserverlib.ClientEvent{} if filter.LazyLoadMembers { - memberShipToUser := make(map[string]*gomatrixserverlib.HeaderedEvent) + membershipToUser := make(map[string]*gomatrixserverlib.HeaderedEvent) for _, evt := range clientEvents { - memberShip, err := db.GetStateEvent(req.Context(), roomID, gomatrixserverlib.MRoomMember, evt.Sender) + membership, err := db.GetStateEvent(req.Context(), roomID, gomatrixserverlib.MRoomMember, evt.Sender) if err != nil { util.GetLogger(req.Context()).WithError(err).Error("failed to get membership event for user") continue } - memberShipToUser[evt.Sender] = memberShip + if membership != nil { + membershipToUser[evt.Sender] = membership + } } - for _, evt := range memberShipToUser { + for _, evt := range membershipToUser { state = append(state, gomatrixserverlib.HeaderedToClientEvent(evt, gomatrixserverlib.FormatAll)) } }