Merge "Fix race in TelephonyScanManager"

This commit is contained in:
Treehugger Robot
2019-10-09 18:20:14 +00:00
committed by Gerrit Code Review

View File

@@ -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() {