From e46caa024def3ef52e05ea41c6879f3f46c3b009 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Wed, 30 Sep 2015 12:31:47 -0700 Subject: [PATCH] Don't ring on incoming calls from blocked numbers // FREEBIE --- .../securesms/gcm/GcmBroadcastReceiver.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/org/thoughtcrime/securesms/gcm/GcmBroadcastReceiver.java b/src/org/thoughtcrime/securesms/gcm/GcmBroadcastReceiver.java index a09a7d6473..3f89000cbd 100644 --- a/src/org/thoughtcrime/securesms/gcm/GcmBroadcastReceiver.java +++ b/src/org/thoughtcrime/securesms/gcm/GcmBroadcastReceiver.java @@ -16,6 +16,8 @@ import org.thoughtcrime.redphone.signaling.signals.CompressedInitiateSignalProto import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.jobs.PushContentReceiveJob; import org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob; +import org.thoughtcrime.securesms.recipients.RecipientFactory; +import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.TextSecurePreferences; import java.io.IOException; @@ -65,15 +67,20 @@ public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { String signalingKey = TextSecurePreferences.getSignalingKey(context); EncryptedSignalMessage encryptedSignalMessage = new EncryptedSignalMessage(data, signalingKey); CompressedInitiateSignal signal = CompressedInitiateSignal.parseFrom(encryptedSignalMessage.getPlaintext()); + Recipients recipients = RecipientFactory.getRecipientsFromString(context, signal.getInitiator(), false); - Intent intent = new Intent(context, RedPhoneService.class); - intent.setAction(RedPhoneService.ACTION_INCOMING_CALL); - intent.putExtra(RedPhoneService.EXTRA_REMOTE_NUMBER, signal.getInitiator()); - intent.putExtra(RedPhoneService.EXTRA_SESSION_DESCRIPTOR, new SessionDescriptor(signal.getServerName(), - signal.getPort(), - signal.getSessionId(), - signal.getVersion())); - context.startService(intent); + if (!recipients.isBlocked()) { + Intent intent = new Intent(context, RedPhoneService.class); + intent.setAction(RedPhoneService.ACTION_INCOMING_CALL); + intent.putExtra(RedPhoneService.EXTRA_REMOTE_NUMBER, signal.getInitiator()); + intent.putExtra(RedPhoneService.EXTRA_SESSION_DESCRIPTOR, new SessionDescriptor(signal.getServerName(), + signal.getPort(), + signal.getSessionId(), + signal.getVersion())); + context.startService(intent); + } else { + Log.w(TAG, "*** Received incoming call from blocked number, ignoring..."); + } } catch (InvalidEncryptedSignalException | IOException e) { Log.w(TAG, e); }