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

Commit 166466d4 authored by Fred Quintana's avatar Fred Quintana
Browse files

Fixed a bug that causes AccountManager calls to hang forever, eventually

exhausting the binder threads in the gapps process, making it unusable.

Bug: 5486091

Change-Id: I82bd197e27c2be1bf82e4e5cc1468e1c6a3e4919
parent 7a962fef
Loading
Loading
Loading
Loading
+19 −5
Original line number Diff line number Diff line
@@ -499,7 +499,7 @@ public class AccountManagerService
            if (response != null) {
                try {
                    if (result == null) {
                        onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "null bundle");
                        response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "null bundle");
                        return;
                    }
                    if (Log.isLoggable(TAG, Log.VERBOSE)) {
@@ -1541,8 +1541,15 @@ public class AccountManagerService
            mAuthenticator = null;
            IAccountManagerResponse response = getResponseAndClose();
            if (response != null) {
                onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
                try {
                    response.onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
                            "disconnected");
                } catch (RemoteException e) {
                    if (Log.isLoggable(TAG, Log.VERBOSE)) {
                        Log.v(TAG, "Session.onServiceDisconnected: "
                                + "caught RemoteException while responding", e);
                    }
                }
            }
        }

@@ -1551,8 +1558,15 @@ public class AccountManagerService
        public void onTimedOut() {
            IAccountManagerResponse response = getResponseAndClose();
            if (response != null) {
                onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
                try {
                    response.onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION,
                            "timeout");
                } catch (RemoteException e) {
                    if (Log.isLoggable(TAG, Log.VERBOSE)) {
                        Log.v(TAG, "Session.onTimedOut: caught RemoteException while responding",
                                e);
                    }
                }
            }
        }