From bb427685db7a04ec2829c67cf7e3e2a3288a1811 Mon Sep 17 00:00:00 2001 From: Paul Jensen Date: Fri, 27 Jun 2014 11:05:32 -0400 Subject: [PATCH] Make sure callback handler is in place before callbacks handled. When making Network requests in ConnectivityManager, make sure we install the callback prior to a response from ConnectivityService arriving causing us to search for the callback and inadvertently not find it. bug:15928097 Change-Id: Ie5feb9cc8f5effc19870f54dba07218b2e11d82a --- core/java/android/net/ConnectivityManager.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index a8b324a58e..05e179d7ca 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -2208,15 +2208,15 @@ public class ConnectivityManager { if (need == null) throw new IllegalArgumentException("null NetworkCapabilities"); try { incCallbackHandlerRefCount(); - if (action == LISTEN) { - networkCallback.networkRequest = mService.listenForNetwork(need, - new Messenger(sCallbackHandler), new Binder()); - } else { - networkCallback.networkRequest = mService.requestNetwork(need, - new Messenger(sCallbackHandler), timeoutSec, new Binder(), legacyType); - } - if (networkCallback.networkRequest != null) { - synchronized(sNetworkCallback) { + synchronized(sNetworkCallback) { + if (action == LISTEN) { + networkCallback.networkRequest = mService.listenForNetwork(need, + new Messenger(sCallbackHandler), new Binder()); + } else { + networkCallback.networkRequest = mService.requestNetwork(need, + new Messenger(sCallbackHandler), timeoutSec, new Binder(), legacyType); + } + if (networkCallback.networkRequest != null) { sNetworkCallback.put(networkCallback.networkRequest, networkCallback); } }