summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorFred Quintana <fredq@google.com>2011-10-24 20:36:30 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-10-24 20:36:30 -0700
commit763480fbcabedfc2f425484ed74bc1e2e1392176 (patch)
tree90165c00f3b426817e2e35a7119d53a37409d4e1 /core/java/android
parent5657b7399eb94429a8cc00ad9f79eaad0c26b93b (diff)
parent166466d483cc3d57e7d3d465fd92ce62409c8455 (diff)
Merge "Fixed a bug that causes AccountManager calls to hang forever, eventually exhausting the binder threads in the gapps process, making it unusable." into ics-mr0
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/accounts/AccountManagerService.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java
index 1ba8eee3d3b2..4f3405b852c9 100644
--- a/core/java/android/accounts/AccountManagerService.java
+++ b/core/java/android/accounts/AccountManagerService.java
@@ -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,
- "disconnected");
+ 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,
- "timeout");
+ 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);
+ }
+ }
}
}