diff --git a/signal/peer/peer.go b/signal/peer/peer.go index 0e8b7ed21..7e184812a 100644 --- a/signal/peer/peer.go +++ b/signal/peer/peer.go @@ -119,5 +119,8 @@ func (registry *Registry) Deregister(peer *Peer) { } func (peer *Peer) SendMessageAllowed(destination string, size int, arrivedTime time.Time) bool { + if peer == nil || peer.suppressor == nil { + return false + } return peer.suppressor.PackageReceived(suppressor.PeerID(destination), size, arrivedTime) } diff --git a/signal/server/signal.go b/signal/server/signal.go index 62cf2dcdb..84234077a 100644 --- a/signal/server/signal.go +++ b/signal/server/signal.go @@ -23,16 +23,17 @@ import ( ) const ( - labelType = "type" - labelTypeError = "error" - labelTypeNotConnected = "not_connected" - labelTypeNotRegistered = "not_registered" - labelTypeSenderNotRegistered = "sender_not_registered" - labelTypeMessageSuppressed = "message_suppressed" - labelTypeStream = "stream" - labelTypeMessage = "message" - labelTypeTimeout = "timeout" - labelTypeDisconnected = "disconnected" + labelType = "type" + labelTypeError = "error" + labelTypeNotConnected = "not_connected" + labelTypeNotRegistered = "not_registered" + labelTypeSenderNotRegistered = "sender_not_registered" + labelTypeMessageSuppressed = "message_suppressed" + labelTypeMessageSuppressedDisconnected = "message_suppressed_disconnected" + labelTypeStream = "stream" + labelTypeMessage = "message" + labelTypeTimeout = "timeout" + labelTypeDisconnected = "disconnected" labelError = "error" labelErrorMissingId = "missing_id" @@ -105,7 +106,11 @@ func (s *Server) Send(ctx context.Context, msg *proto.EncryptedMessage) (*proto. } if !peer.SendMessageAllowed(msg.RemoteKey, len(msg.Body), time.Now()) { - s.metrics.MessageForwardFailures.Add(ctx, 1, metric.WithAttributes(attribute.String(labelType, labelTypeMessageSuppressed))) + if peer == nil { + s.metrics.MessageForwardFailures.Add(ctx, 1, metric.WithAttributes(attribute.String(labelType, labelTypeMessageSuppressedDisconnected))) + } else { + s.metrics.MessageForwardFailures.Add(ctx, 1, metric.WithAttributes(attribute.String(labelType, labelTypeMessageSuppressed))) + } s.metrics.MessageSize.Record(ctx, int64(len(msg.Body)), metric.WithAttributes(attribute.String(labelType, labelTypeMessageSuppressed))) log.Tracef("message from peer [%s] to peer [%s] suppressed due to repetition", msg.Key, msg.RemoteKey) }