diff --git a/service/java/com/android/server/wifi/WifiConfigStore.java b/service/java/com/android/server/wifi/WifiConfigStore.java
index 6c2f9d3..238c248 100644
--- a/service/java/com/android/server/wifi/WifiConfigStore.java
+++ b/service/java/com/android/server/wifi/WifiConfigStore.java
@@ -87,7 +87,6 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
-import java.io.EOFException;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
@@ -2410,6 +2409,7 @@
                             break;
                         case RSSI_KEY:
                             rssi = Integer.parseInt(value);
+                            Log.d("ZXZ", "rssi set to " + rssi);
                             break;
                         case BSSID_STATUS_KEY:
                             status = Integer.parseInt(value);
@@ -2460,12 +2460,8 @@
                     }
                 }
             }
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "readNetworkHistory: failed to read, revert to default, " + e, e);
-        } catch (EOFException e) {
-            // do nothing
         } catch (IOException e) {
-            Log.e(TAG, "readNetworkHistory: No config file, revert to default, " + e, e);
+            loge("readNetworkHistory: No config file, revert to default" + e);
         }
     }
 
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index b660f22..74d284a 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -423,9 +423,6 @@
         enforceChangePermission();
         synchronized (this) {
             if (mInIdleMode) {
-                // Need to send an immediate scan result broadcast in case the
-                // caller is waiting for a result ..
-                mWifiStateMachine.sendScanResultsAvailableBroadcast(/* scanSucceeded = */ false);
                 mScanPending = true;
                 return;
             }
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 5ce48f9..3c14f00 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -4457,10 +4457,9 @@
         return address;
     }
 
-    void sendScanResultsAvailableBroadcast(boolean scanSucceeded) {
+    private void sendScanResultsAvailableBroadcast() {
         Intent intent = new Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
         intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
-        intent.putExtra(WifiManager.EXTRA_RESULTS_UPDATED, scanSucceeded);
         mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
     }
 
@@ -5583,8 +5582,7 @@
                     setScanResults();
                     if (mIsFullScanOngoing || mSendScanResultsBroadcast) {
                         /* Just updated results from full scan, let apps know about this */
-                        boolean scanSucceeded = message.what == WifiMonitor.SCAN_RESULTS_EVENT;
-                        sendScanResultsAvailableBroadcast(scanSucceeded);
+                        sendScanResultsAvailableBroadcast();
                     }
                     mSendScanResultsBroadcast = false;
                     mIsScanOngoing = false;
