bugfix: Fix #908 by setting the correct state after the event (#913)

* bugfix: Fix #908 by setting the correct state after the event

Previously, this would only happen if the state already existed
previously!

* Structured logging
main
Kegsay 2020-03-16 17:51:58 +00:00 committed by GitHub
parent acb505b717
commit 9f74a8798e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 0 deletions

View File

@ -116,6 +116,7 @@ func (t *txnReq) processTransaction() (*gomatrixserverlib.RespSend, error) {
results[e.EventID()] = gomatrixserverlib.PDUResult{ results[e.EventID()] = gomatrixserverlib.PDUResult{
Error: err.Error(), Error: err.Error(),
} }
util.GetLogger(t.context).WithError(err).WithField("event_id", e.EventID()).Warn("Failed to process incoming federation event, skipping it.")
} else { } else {
results[e.EventID()] = gomatrixserverlib.PDUResult{} results[e.EventID()] = gomatrixserverlib.PDUResult{}
} }

View File

@ -366,11 +366,16 @@ func (v StateResolutionV1) loadStateAfterEventsForNumericTuples(
// update that key in the result. // update that key in the result.
// If the requested event wasn't a state event then the state after // If the requested event wasn't a state event then the state after
// it is the same as the state before it. // it is the same as the state before it.
set := false
for i := range result { for i := range result {
if result[i].StateKeyTuple == prevState.StateKeyTuple { if result[i].StateKeyTuple == prevState.StateKeyTuple {
result[i] = prevState.StateEntry result[i] = prevState.StateEntry
set = true
} }
} }
if !set { // no previous state exists for this event: add new state
result = append(result, prevState.StateEntry)
}
} }
return result, nil return result, nil
} }