Skip to content

Commit

Permalink
signalmeow/receiving: don't send decryption error notice if content h…
Browse files Browse the repository at this point in the history
…int is implicit
  • Loading branch information
tulir committed Sep 24, 2024
1 parent ebd8114 commit ce665b2
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion pkg/signalmeow/receiving.go
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,11 @@ func (cli *Client) decryptUnidentifiedSenderEnvelope(ctx context.Context, destin
if err != nil {
return result, fmt.Errorf("failed to get sender certificate: %w", err)
}
contentHint, err := usmc.GetContentHint()
if err != nil {
return result, fmt.Errorf("failed to get content hint: %w", err)
}
result.ContentHint = signalpb.UnidentifiedSenderMessage_Message_ContentHint(contentHint)
senderUUID, err := senderCertificate.GetSenderUUID()
if err != nil {
return result, fmt.Errorf("failed to get sender UUID: %w", err)
Expand Down Expand Up @@ -609,6 +614,7 @@ func (cli *Client) handleDecryptedResult(
if result.Err != nil {
logEvt := log.Err(result.Err).
Bool("urgent", envelope.GetUrgent()).
Stringer("content_hint", result.ContentHint).
Uint64("server_ts", envelope.GetServerTimestamp()).
Uint64("client_ts", envelope.GetTimestamp())
if result.SenderAddress == nil {
Expand All @@ -624,7 +630,9 @@ func (cli *Client) handleDecryptedResult(
logEvt.Stringer("sender", theirServiceID).Msg("Decryption error with known sender")
// Only send decryption error event if the message was urgent,
// to prevent spamming errors for typing notifications and whatnot
if envelope.GetUrgent() && !strings.Contains(result.Err.Error(), "message with old counter") {
if envelope.GetUrgent() &&
result.ContentHint != signalpb.UnidentifiedSenderMessage_Message_IMPLICIT &&
!strings.Contains(result.Err.Error(), "message with old counter") {
cli.handleEvent(&events.DecryptionError{
Sender: theirServiceID.UUID,
Err: result.Err,
Expand Down Expand Up @@ -1046,6 +1054,7 @@ func (cli *Client) sendDeliveryReceipts(ctx context.Context, deliveredTimestamps
type DecryptionResult struct {
SenderAddress *libsignalgo.Address
Content *signalpb.Content
ContentHint signalpb.UnidentifiedSenderMessage_Message_ContentHint
SealedSender bool
Err error
}
Expand Down

0 comments on commit ce665b2

Please sign in to comment.