Guard in all key consumers
MODIFY
federationsender/consumers/keychange.go
federationsender/consumers/keychange.go
@@ -84,6 +84,11 @@ func (t *KeyChangeConsumer) onMessage(msg *sarama.ConsumerMessage) error {
logrus.WithError(err).Errorf("failed to read device message from key change topic")
return nil
}
+ if m.DeviceKeys == nil && m.OutputCrossSigningKeyUpdate == nil {
+ // This probably shouldn't happen but stops us from panicking if we come
+ // across an update that doesn't satisfy either types.
+ return nil
+ }
switch m.Type {
case api.TypeCrossSigningUpdate:
return t.onCrossSigningMessage(m)
@@ -95,12 +100,6 @@ func (t *KeyChangeConsumer) onMessage(msg *sarama.ConsumerMessage) error {
}
func (t *KeyChangeConsumer) onDeviceKeyMessage(m api.DeviceMessage) error {
- if m.DeviceKeys == nil && m.OutputCrossSigningKeyUpdate == nil {
- // This probably shouldn't happen but stops us from panicking if we come
- // across an update that doesn't satisfy either types.
- return nil
- }
-
logger := logrus.WithField("user_id", m.UserID)
// only send key change events which originated from us

MODIFY
keyserver/consumers/cross_signing.go
keyserver/consumers/cross_signing.go
@@ -77,6 +77,11 @@ func (t *OutputCrossSigningKeyUpdateConsumer) onMessage(msg *sarama.ConsumerMess
logrus.WithError(err).Errorf("failed to read device message from key change topic")
return nil
}
+ if m.OutputCrossSigningKeyUpdate == nil {
+ // This probably shouldn't happen but stops us from panicking if we come
+ // across an update that doesn't satisfy either types.
+ return nil
+ }
switch m.Type {
case api.TypeCrossSigningUpdate:
return t.onCrossSigningMessage(m)

MODIFY
syncapi/consumers/keychange.go
syncapi/consumers/keychange.go
@@ -109,6 +109,11 @@ func (s *OutputKeyChangeEventConsumer) onMessage(msg *sarama.ConsumerMessage) er
logrus.WithError(err).Errorf("failed to read device message from key change topic")
return nil
}
+ if m.DeviceKeys == nil && m.OutputCrossSigningKeyUpdate == nil {
+ // This probably shouldn't happen but stops us from panicking if we come
+ // across an update that doesn't satisfy either types.
+ return nil
+ }
switch m.Type {
case api.TypeCrossSigningUpdate:
return s.onCrossSigningMessage(m, msg.Offset, msg.Partition)

Guard in all key consumers