diff options
| author | 2019-10-09 12:08:46 -0700 | |
|---|---|---|
| committer | 2019-10-09 12:08:46 -0700 | |
| commit | f67ba767a072ce56b8676a21a9ce36e1266c9b9f (patch) | |
| tree | 3ab7b1e201a4746976a07fbdaf2df5f69b868f0d | |
| parent | 38c88d3f68751ee4e64faaa2e48d7da895778268 (diff) | |
| parent | 8fd8b5b234ae450227631cf4262548ab1c26a5bc (diff) | |
Merge "Fix race in TelephonyScanManager" am: 884dd0f559 am: 0c85ca1062
am: 8fd8b5b234
Change-Id: I21ba7e6502e06064a443a701b1953d3dff60b653
| -rw-r--r-- | telephony/java/android/telephony/TelephonyScanManager.java | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/telephony/java/android/telephony/TelephonyScanManager.java b/telephony/java/android/telephony/TelephonyScanManager.java index 28747dab38db..9ff851598648 100644 --- a/telephony/java/android/telephony/TelephonyScanManager.java +++ b/telephony/java/android/telephony/TelephonyScanManager.java @@ -104,7 +104,7 @@ public final class TelephonyScanManager { private final Looper mLooper; private final Messenger mMessenger; - private SparseArray<NetworkScanInfo> mScanInfo = new SparseArray<NetworkScanInfo>(); + private final SparseArray<NetworkScanInfo> mScanInfo = new SparseArray<NetworkScanInfo>(); public TelephonyScanManager() { HandlerThread thread = new HandlerThread(TAG); @@ -204,14 +204,16 @@ public final class TelephonyScanManager { try { ITelephony telephony = getITelephony(); if (telephony != null) { - int scanId = telephony.requestNetworkScan( - subId, request, mMessenger, new Binder(), callingPackage); - if (scanId == INVALID_SCAN_ID) { - Rlog.e(TAG, "Failed to initiate network scan"); - return null; + synchronized (mScanInfo) { + int scanId = telephony.requestNetworkScan( + subId, request, mMessenger, new Binder(), callingPackage); + if (scanId == INVALID_SCAN_ID) { + Rlog.e(TAG, "Failed to initiate network scan"); + return null; + } + saveScanInfo(scanId, request, executor, callback); + return new NetworkScan(scanId, subId); } - saveScanInfo(scanId, request, executor, callback); - return new NetworkScan(scanId, subId); } } catch (RemoteException ex) { Rlog.e(TAG, "requestNetworkScan RemoteException", ex); @@ -223,9 +225,7 @@ public final class TelephonyScanManager { private void saveScanInfo( int id, NetworkScanRequest request, Executor executor, NetworkScanCallback callback) { - synchronized (mScanInfo) { - mScanInfo.put(id, new NetworkScanInfo(request, executor, callback)); - } + mScanInfo.put(id, new NetworkScanInfo(request, executor, callback)); } private ITelephony getITelephony() { |