diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java
index 16fe6221774f5f0ddd0bf3af4f562cf52ee458a1..fb7885bbfc8da1b304719520566529c280102a3b 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java
@@ -586,7 +586,7 @@ public class GroupsV2StateProcessor {
 
           Log.i(TAG, String.format("Added as a full member of %s by %s", groupId, addedBy.getId()));
 
-          if (addedBy.isBlocked()) {
+          if (addedBy.isBlocked() && (inputGroupState.getLocalState() == null || !DecryptedGroupUtil.isRequesting(inputGroupState.getLocalState(), selfAci.uuid()))) {
             Log.i(TAG, "Added by a blocked user. Leaving group.");
             ApplicationDependencies.getJobManager().add(new LeaveGroupV2Job(groupId));
             //noinspection UnnecessaryReturnStatement
diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java
index 37caf944eb3a4d8d71fe42268f4ad7651a4b4cf3..2ff49efcd4d496063e8fd2f96e9a54f38e8094f1 100644
--- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java
+++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/groupsv2/DecryptedGroupUtil.java
@@ -232,6 +232,10 @@ public final class DecryptedGroupUtil {
            findRequestingByUuid(group.getRequestingMembersList(), uuid).isPresent();
   }
 
+  public static boolean isRequesting(DecryptedGroup group, UUID uuid) {
+    return findRequestingByUuid(group.getRequestingMembersList(), uuid).isPresent();
+  }
+
   /**
    * Removes the uuid from the full members of a group.
    * <p>