Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7f82d57 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Gerrit Code Review
Browse files

Merge "Fix StorageManagerService linkToDeath more than one time when vold/storaged died."

parents cbdb10f9 b0d11d1c
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -1452,10 +1452,11 @@ class StorageManagerService extends IStorageManager.Stub
    }

    private void start() {
        connect();
        connectStoraged();
        connectVold();
    }

    private void connect() {
    private void connectStoraged() {
        IBinder binder = ServiceManager.getService("storaged");
        if (binder != null) {
            try {
@@ -1464,7 +1465,7 @@ class StorageManagerService extends IStorageManager.Stub
                    public void binderDied() {
                        Slog.w(TAG, "storaged died; reconnecting");
                        mStoraged = null;
                        connect();
                        connectStoraged();
                    }
                }, 0);
            } catch (RemoteException e) {
@@ -1478,7 +1479,17 @@ class StorageManagerService extends IStorageManager.Stub
            Slog.w(TAG, "storaged not found; trying again");
        }

        binder = ServiceManager.getService("vold");
        if (mStoraged == null) {
            BackgroundThread.getHandler().postDelayed(() -> {
                connectStoraged();
            }, DateUtils.SECOND_IN_MILLIS);
        } else {
            onDaemonConnected();
        }
    }

    private void connectVold() {
        IBinder binder = ServiceManager.getService("vold");
        if (binder != null) {
            try {
                binder.linkToDeath(new DeathRecipient() {
@@ -1486,7 +1497,7 @@ class StorageManagerService extends IStorageManager.Stub
                    public void binderDied() {
                        Slog.w(TAG, "vold died; reconnecting");
                        mVold = null;
                        connect();
                        connectVold();
                    }
                }, 0);
            } catch (RemoteException e) {
@@ -1506,9 +1517,9 @@ class StorageManagerService extends IStorageManager.Stub
            Slog.w(TAG, "vold not found; trying again");
        }

        if (mStoraged == null || mVold == null) {
        if (mVold == null) {
            BackgroundThread.getHandler().postDelayed(() -> {
                connect();
                connectVold();
            }, DateUtils.SECOND_IN_MILLIS);
        } else {
            onDaemonConnected();