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

Commit 5fe756e4 authored by Sarah Chin's avatar Sarah Chin
Browse files

Unregister network scan before deleting

Prevent potential race conditions when we receive the results of a
network scan after stopping all network scans. Unregister first to
ignore new scans and then stop scans

Test: atest FrameworksTelephonyTests
Test: try manual network scan and basic tests
Bug: 277876263
Change-Id: If1accf4303f9938497c73aea33864642ffae2fb9
parent 32483f4c
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -474,21 +474,21 @@ public final class NetworkScanRequestTracker {
                    notifyMessenger(nsri, notifyMsg,
                            rilErrorToScanError(nsr.scanError), nsr.networkInfos);
                    if (nsr.scanStatus == NetworkScanResult.SCAN_STATUS_COMPLETE) {
                        deleteScanAndMayNotify(nsri, NetworkScan.SUCCESS, true);
                        nsri.mPhone.mCi.unregisterForNetworkScanResult(mHandler);
                        deleteScanAndMayNotify(nsri, NetworkScan.SUCCESS, true);
                    }
                } else {
                    if (nsr.networkInfos != null) {
                        notifyMessenger(nsri, notifyMsg,
                                rilErrorToScanError(nsr.scanError), nsr.networkInfos);
                    }
                    deleteScanAndMayNotify(nsri, rilErrorToScanError(nsr.scanError), true);
                    nsri.mPhone.mCi.unregisterForNetworkScanResult(mHandler);
                    deleteScanAndMayNotify(nsri, rilErrorToScanError(nsr.scanError), true);
                }
            } else {
                logEmptyResultOrException(ar);
                deleteScanAndMayNotify(nsri, NetworkScan.ERROR_RADIO_INTERFACE_ERROR, true);
                nsri.mPhone.mCi.unregisterForNetworkScanResult(mHandler);
                deleteScanAndMayNotify(nsri, NetworkScan.ERROR_RADIO_INTERFACE_ERROR, true);
            }
        }

@@ -516,6 +516,7 @@ public final class NetworkScanRequestTracker {
                Log.e(TAG, "EVENT_STOP_NETWORK_SCAN_DONE: nsri is null");
                return;
            }
            nsri.mPhone.mCi.unregisterForNetworkScanResult(mHandler);
            if (ar.exception == null && ar.result != null) {
                deleteScanAndMayNotify(nsri, NetworkScan.SUCCESS, true);
            } else {
@@ -528,7 +529,6 @@ public final class NetworkScanRequestTracker {
                    Log.wtf(TAG, "EVENT_STOP_NETWORK_SCAN_DONE: ar.exception can not be null!");
                }
            }
            nsri.mPhone.mCi.unregisterForNetworkScanResult(mHandler);
        }

        // Interrupts the live scan is the scanId matches the mScanId of the mLiveRequestInfo.