diff options
author | Meng-hsuan Chung <menghsuan@google.com> | 2017-08-30 14:33:51 -0700 |
---|---|---|
committer | Meng-hsuan Chung <menghsuan@google.com> | 2017-08-30 15:13:46 -0700 |
commit | 93ef03b4649972d24b1ec4695edc5eb38ecc6e3f (patch) | |
tree | 80e3b5dc311399657603c58f24acd8f66591abb4 | |
parent | a13e8cd04993f313572e9d6699731b1a58661648 (diff) | |
download | chre-93ef03b4649972d24b1ec4695edc5eb38ecc6e3f.tar.gz |
Do not reset nanoapp instance id for scan monitor results
Bug: 65211282
Test: Reboot to trigger scan monitor results between a scan request & response.
Verify CHRE doesn't crash.
Change-Id: If65e4b3e578825e9d5ba2230d84f8d69fcfd86e0
-rw-r--r-- | core/wifi_request_manager.cc | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/core/wifi_request_manager.cc b/core/wifi_request_manager.cc index 757e009e..25efe873 100644 --- a/core/wifi_request_manager.cc +++ b/core/wifi_request_manager.cc @@ -457,23 +457,24 @@ void WifiRequestManager::handleFreeWifiScanEvent(chreWifiScanEvent *scanEvent) { mScanEventResultCountAccumulator = 0; mScanRequestResultsArePending = false; } - } - mPlatformWifi.releaseScanEvent(scanEvent); + if (!mScanRequestResultsArePending + && mScanRequestingNanoappInstanceId.has_value()) { + Nanoapp *nanoapp = EventLoopManagerSingleton::get()->getEventLoop() + .findNanoappByInstanceId(*mScanRequestingNanoappInstanceId); + if (nanoapp == nullptr) { + CHRE_ASSERT_LOG(false, "Attempted to unsubscribe unknown nanoapp from " + "WiFi scan events"); + } else if (!nanoappHasScanMonitorRequest( + *mScanRequestingNanoappInstanceId)) { + nanoapp->unregisterForBroadcastEvent(CHRE_EVENT_WIFI_SCAN_RESULT); + } - if (!mScanRequestResultsArePending - && mScanRequestingNanoappInstanceId.has_value()) { - Nanoapp *nanoapp = EventLoopManagerSingleton::get()->getEventLoop() - .findNanoappByInstanceId(*mScanRequestingNanoappInstanceId); - if (nanoapp == nullptr) { - CHRE_ASSERT_LOG(false, "Attempted to unsubscribe unknown nanoapp from " - "WiFi scan events"); - } else if (!nanoappHasScanMonitorRequest(*mScanRequestingNanoappInstanceId)) { - nanoapp->unregisterForBroadcastEvent(CHRE_EVENT_WIFI_SCAN_RESULT); + mScanRequestingNanoappInstanceId.reset(); } - - mScanRequestingNanoappInstanceId.reset(); } + + mPlatformWifi.releaseScanEvent(scanEvent); } void WifiRequestManager::freeWifiScanEventCallback(uint16_t eventType, |