Be slightly clearer about which things are state keys and which things are tuples of event type and state key.

This commit is contained in:
Mark Haines 2017-02-09 13:51:54 +00:00
parent dba1e59f5a
commit 7ef832a6f3

View file

@ -158,20 +158,20 @@ func loadAuthEvents(
needed gomatrixserverlib.StateNeeded, needed gomatrixserverlib.StateNeeded,
state []types.StateEntry, state []types.StateEntry,
) (result authEvents, err error) { ) (result authEvents, err error) {
// Lookup the numeric IDs for the state keys // Lookup the numeric IDs for the state keys needed for auth.
var eventStateKeys []string var neededStateKeys []string
eventStateKeys = append(eventStateKeys, needed.Member...) neededStateKeys = append(neededStateKeys, needed.Member...)
eventStateKeys = append(eventStateKeys, needed.ThirdPartyInvite...) neededStateKeys = append(neededStateKeys, needed.ThirdPartyInvite...)
if result.stateKeyNIDMap, err = db.EventStateKeyNIDs(eventStateKeys); err != nil { if result.stateKeyNIDMap, err = db.EventStateKeyNIDs(neededStateKeys); err != nil {
return return
} }
// Load the events we need. // Load the events we need.
result.state = state result.state = state
var eventNIDs []int64 var eventNIDs []int64
keysNeeded := stateKeysNeeded(result.stateKeyNIDMap, needed) keyTuplesNeeded := stateKeyTuplesNeeded(result.stateKeyNIDMap, needed)
for _, keyNeeded := range keysNeeded { for _, keyTuple := range keyTuplesNeeded {
eventNID, ok := result.state.lookup(keyNeeded) eventNID, ok := result.state.lookup(keyTuple)
if ok { if ok {
eventNIDs = append(eventNIDs, eventNID) eventNIDs = append(eventNIDs, eventNID)
} }
@ -182,31 +182,31 @@ func loadAuthEvents(
return return
} }
// stateKeysNeeded works out which numeric state keys we need to authenticate some events. // stateKeyTuplesNeeded works out which numeric state key tuples we need to authenticate some events.
func stateKeysNeeded(stateKeyNIDMap map[string]int64, stateNeeded gomatrixserverlib.StateNeeded) []types.StateKeyTuple { func stateKeyTuplesNeeded(stateKeyNIDMap map[string]int64, stateNeeded gomatrixserverlib.StateNeeded) []types.StateKeyTuple {
var keys []types.StateKeyTuple var keyTuples []types.StateKeyTuple
if stateNeeded.Create { if stateNeeded.Create {
keys = append(keys, types.StateKeyTuple{types.MRoomCreateNID, types.EmptyStateKeyNID}) keyTuples = append(keyTuples, types.StateKeyTuple{types.MRoomCreateNID, types.EmptyStateKeyNID})
} }
if stateNeeded.PowerLevels { if stateNeeded.PowerLevels {
keys = append(keys, types.StateKeyTuple{types.MRoomPowerLevelsNID, types.EmptyStateKeyNID}) keyTuples = append(keyTuples, types.StateKeyTuple{types.MRoomPowerLevelsNID, types.EmptyStateKeyNID})
} }
if stateNeeded.JoinRules { if stateNeeded.JoinRules {
keys = append(keys, types.StateKeyTuple{types.MRoomJoinRulesNID, types.EmptyStateKeyNID}) keyTuples = append(keyTuples, types.StateKeyTuple{types.MRoomJoinRulesNID, types.EmptyStateKeyNID})
} }
for _, member := range stateNeeded.Member { for _, member := range stateNeeded.Member {
stateKeyNID, ok := stateKeyNIDMap[member] stateKeyNID, ok := stateKeyNIDMap[member]
if ok { if ok {
keys = append(keys, types.StateKeyTuple{types.MRoomMemberNID, stateKeyNID}) keyTuples = append(keyTuples, types.StateKeyTuple{types.MRoomMemberNID, stateKeyNID})
} }
} }
for _, token := range stateNeeded.ThirdPartyInvite { for _, token := range stateNeeded.ThirdPartyInvite {
stateKeyNID, ok := stateKeyNIDMap[token] stateKeyNID, ok := stateKeyNIDMap[token]
if ok { if ok {
keys = append(keys, types.StateKeyTuple{types.MRoomThirdPartyInviteNID, stateKeyNID}) keyTuples = append(keyTuples, types.StateKeyTuple{types.MRoomThirdPartyInviteNID, stateKeyNID})
} }
} }
return keys return keyTuples
} }
// Map from event type, state key tuple to numeric event ID. // Map from event type, state key tuple to numeric event ID.