From c51e13fd3047f3d8fa4d4d69ad91bcde5185550a Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 15 Nov 2022 11:18:09 -0500 Subject: [PATCH] Ignore rings from non-admins in announcement only groups and rev feature flag. --- .../service/webrtc/IdleActionProcessor.java | 4 ++-- .../webrtc/IncomingGroupCallActionProcessor.java | 4 ++-- .../service/webrtc/SignalCallManager.java | 15 ++++++++++----- .../service/webrtc/WebRtcActionProcessor.java | 2 +- .../thoughtcrime/securesms/util/FeatureFlags.java | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IdleActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IdleActionProcessor.java index 3e4dcf5f6e..e780b5c2e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IdleActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IdleActionProcessor.java @@ -88,7 +88,7 @@ public class IdleActionProcessor extends WebRtcActionProcessor { @NonNull RemotePeer remotePeerGroup, @NonNull GroupId.V2 groupId, long ringId, - @NonNull UUID uuid, + @NonNull UUID sender, @NonNull CallManager.RingUpdate ringUpdate) { Log.i(TAG, "handleGroupCallRingUpdate(): recipient: " + remotePeerGroup.getId() + " ring: " + ringId + " update: " + ringUpdate); @@ -118,7 +118,7 @@ public class IdleActionProcessor extends WebRtcActionProcessor { return currentState; } - webRtcInteractor.peekGroupCallForRingingCheck(new GroupCallRingCheckInfo(remotePeerGroup.getId(), groupId, ringId, uuid, ringUpdate)); + webRtcInteractor.peekGroupCallForRingingCheck(new GroupCallRingCheckInfo(remotePeerGroup.getId(), groupId, ringId, sender, ringUpdate)); return currentState; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java index b50961edf1..e339141659 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java @@ -49,7 +49,7 @@ public final class IncomingGroupCallActionProcessor extends DeviceAwareActionPro @NonNull RemotePeer remotePeerGroup, @NonNull GroupId.V2 groupId, long ringId, - @NonNull UUID uuid, + @NonNull UUID sender, @NonNull CallManager.RingUpdate ringUpdate) { Log.i(TAG, "handleGroupCallRingUpdate(): recipient: " + remotePeerGroup.getId() + " ring: " + ringId + " update: " + ringUpdate); @@ -138,7 +138,7 @@ public final class IncomingGroupCallActionProcessor extends DeviceAwareActionPro .changeCallSetupState(RemotePeer.GROUP_CALL_ID) .isRemoteVideoOffer(true) .ringId(ringId) - .ringerRecipient(Recipient.externalPush(ServiceId.from(uuid))) + .ringerRecipient(Recipient.externalPush(ServiceId.from(sender))) .commit() .changeCallInfoState() .activePeer(new RemotePeer(currentState.getCallInfoState().getCallRecipient().getId(), RemotePeer.GROUP_CALL_ID)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 481de40a4f..89a7e5e349 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -741,13 +741,18 @@ private void processStateless(@NonNull Function1 p.handleGroupCallRingUpdate(s, new RemotePeer(group.getRecipientId()), groupId, ringId, uuid, ringUpdate)); + if (group != null && + group.isActive() && + !Recipient.resolved(group.getRecipientId()).isBlocked() && + (!group.isAnnouncementGroup() || group.isAdmin(senderRecipient))) + { + process((s, p) -> p.handleGroupCallRingUpdate(s, new RemotePeer(group.getRecipientId()), groupId, ringId, sender, ringUpdate)); } else { Log.w(TAG, "Unable to ring unknown/inactive/blocked group."); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java index fc1d06a57d..e9f46dec6c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java @@ -786,7 +786,7 @@ public abstract class WebRtcActionProcessor { @NonNull RemotePeer remotePeerGroup, @NonNull GroupId.V2 groupId, long ringId, - @NonNull UUID uuid, + @NonNull UUID sender, @NonNull RingUpdate ringUpdate) { Log.i(tag, "handleGroupCallRingUpdate(): recipient: " + remotePeerGroup.getId() + " ring: " + ringId + " update: " + ringUpdate); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java index 19f61383f4..23666c9eb3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -80,7 +80,7 @@ public final class FeatureFlags { private static final String SENDER_KEY_MAX_AGE = "android.senderKeyMaxAge"; private static final String RETRY_RECEIPTS = "android.retryReceipts"; private static final String MAX_GROUP_CALL_RING_SIZE = "global.calling.maxGroupCallRingSize"; - private static final String GROUP_CALL_RINGING = "android.calling.groupCallRinging"; + private static final String GROUP_CALL_RINGING = "android.calling.groupCallRinging.2"; private static final String STORIES_TEXT_FUNCTIONS = "android.stories.text.functions"; private static final String HARDWARE_AEC_BLOCKLIST_MODELS = "android.calling.hardwareAecBlockList"; private static final String SOFTWARE_AEC_BLOCKLIST_MODELS = "android.calling.softwareAecBlockList";