@@ 110,7 110,11 @@ func OnJoinElectionMessage(source mautrix.EventSource, evt *event.Event, electio
return
}
input := new(big.Int).SetBytes(bytes)
- el := elections.Get(content.CreateEventId)
+ el, exists := elections.GetOk(content.CreateEventId)
+ if !exists {
+ log.Warnf("ignoring %s's join since the election doesn't exist", evt.Sender)
+ return
+ }
el.Lock()
defer el.Unlock()
if el.Started {
@@ 135,7 139,11 @@ func OnStartElectionMessage(source mautrix.EventSource, evt *event.Event, electi
return
}
// TODO ensure election exists
- el := elections.Get(content.CreateEventId)
+ el, exists := elections.GetOk(content.CreateEventId)
+ if !exists {
+ log.Warnf("ignoring %s's election start since the election doesn't exist", evt.Sender)
+ return
+ }
el.Lock()
defer el.Unlock()
if evt.Sender != el.Creator {
@@ 149,7 157,7 @@ func OnStartElectionMessage(source mautrix.EventSource, evt *event.Event, electi
func OnEvalMessage(source mautrix.EventSource, evt *event.Event, elections *ElectionsMap, localVoter *LocalVoter) {
content, ok := evt.Content.Parsed.(*EvalMessageContent)
if !ok {
- log.Warn("ignoring eval message since we couldn't cast message content to EvalMessageContent")
+ log.Warn("ignoring %s's eval message since we couldn't cast message content to EvalMessageContent", evt.Sender)
return
}
encodedEncryptedOutput, ok := content.Outputs[localVoter.UserID]
@@ 159,13 167,21 @@ func OnEvalMessage(source mautrix.EventSource, evt *event.Event, elections *Elec
}
encryptedOutput, err := base64.StdEncoding.DecodeString(encodedEncryptedOutput)
if err != nil {
- log.Errorf("couldn't decode encrypted output: %s", err)
+ log.Errorf("couldn't decode %s's encrypted output: %s", evt.Sender, err)
+ return
+ }
+ el, exists := elections.GetOk(content.CreateEventId)
+ if !exists {
+ log.Warnf("ignoring %s's eval message since the election doesn't exist", evt.Sender)
return
}
- el := elections.Get(content.CreateEventId)
el.Lock()
defer el.Unlock()
- voter := el.Voters[evt.Sender]
+ voter, exists := el.Voters[evt.Sender]
+ if !exists {
+ log.Warnf("ignoring %s's eval message since they are not a voter", evt.Sender)
+ return
+ }
var decryptNonce [24]byte
copy(decryptNonce[:], encryptedOutput[:24])