aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMeng-hsuan Chung <menghsuan@google.com>2017-08-30 14:33:51 -0700
committerMeng-hsuan Chung <menghsuan@google.com>2017-08-30 15:13:46 -0700
commit93ef03b4649972d24b1ec4695edc5eb38ecc6e3f (patch)
tree80e3b5dc311399657603c58f24acd8f66591abb4
parenta13e8cd04993f313572e9d6699731b1a58661648 (diff)
downloadchre-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.cc27
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,