Skip to content

Commit 84a2197

Browse files
Fix ConcurrentModificationException in MultiConnectionKeeper (#3553)
Co-authored-by: Marvin W <git@larma.de>
1 parent 33f0773 commit 84a2197

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

play-services-base/src/main/java/org/microg/gms/common/MultiConnectionKeeper.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,14 @@
3333
import java.security.MessageDigest;
3434
import java.security.NoSuchAlgorithmException;
3535
import java.util.Arrays;
36+
import java.util.Collections;
3637
import java.util.HashMap;
37-
import java.util.HashSet;
3838
import java.util.LinkedList;
3939
import java.util.List;
4040
import java.util.Map;
4141
import java.util.Objects;
4242
import java.util.Set;
43+
import java.util.concurrent.ConcurrentHashMap;
4344

4445
import static android.os.Build.VERSION.SDK_INT;
4546
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
@@ -201,11 +202,11 @@ public synchronized void unbind(String action, ServiceConnection connection) {
201202
public class Connection {
202203
private final String actionString;
203204
private final boolean requireMicrog;
204-
private final Set<ServiceConnection> connectionForwards = new HashSet<ServiceConnection>();
205-
private boolean bound = false;
206-
private boolean connected = false;
207-
private IBinder binder;
208-
private ComponentName component;
205+
private final Set<ServiceConnection> connectionForwards = Collections.newSetFromMap(new ConcurrentHashMap<>());
206+
private volatile boolean bound = false;
207+
private volatile boolean connected = false;
208+
private volatile IBinder binder;
209+
private volatile ComponentName component;
209210
private ServiceConnection serviceConnection = new ServiceConnection() {
210211
@Override
211212
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {

0 commit comments

Comments
 (0)