mirror of
https://github.com/1f349/dendrite.git
synced 2024-11-08 18:16:59 +00:00
Fix a panic in OnIncomingMessagesRequest
(#2250)
It's possible for `GetStateEvent` to return `nil` if there was no error but the state event wasn't found. Therefore we need to be prepared for that case. This should fix #2247.
This commit is contained in:
parent
f75169c353
commit
7fc62d8178
@ -184,16 +184,18 @@ func OnIncomingMessagesRequest(
|
|||||||
// at least fetch the membership events for the users returned in chunk if LazyLoadMembers is set
|
// at least fetch the membership events for the users returned in chunk if LazyLoadMembers is set
|
||||||
state := []gomatrixserverlib.ClientEvent{}
|
state := []gomatrixserverlib.ClientEvent{}
|
||||||
if filter.LazyLoadMembers {
|
if filter.LazyLoadMembers {
|
||||||
memberShipToUser := make(map[string]*gomatrixserverlib.HeaderedEvent)
|
membershipToUser := make(map[string]*gomatrixserverlib.HeaderedEvent)
|
||||||
for _, evt := range clientEvents {
|
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 {
|
if err != nil {
|
||||||
util.GetLogger(req.Context()).WithError(err).Error("failed to get membership event for user")
|
util.GetLogger(req.Context()).WithError(err).Error("failed to get membership event for user")
|
||||||
continue
|
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))
|
state = append(state, gomatrixserverlib.HeaderedToClientEvent(evt, gomatrixserverlib.FormatAll))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user