OSDN Git Service

Fix BLE scan leaks
authorVinay Kalia <vinaykalia@google.com>
Fri, 28 Jul 2017 22:09:57 +0000 (15:09 -0700)
committerVinay Kalia <vinaykalia@google.com>
Wed, 9 Aug 2017 16:03:52 +0000 (09:03 -0700)
If an app starts multiple scans with same callback then
there is a collision in mLeScanClients hash map which
results in leaking first scan. This change fixes it by
not allowing the second scan with same callback.

BUG: 62389939
BUG: 38198694

Test: Tested applications which started multiple scans with
       same callback.

Change-Id: I569069a40b6f8b4b8bb070731225e732c6b23ec8
(cherry picked from commit 9722971cb4a79e37165f636f9dd057707d2e620a)

core/java/android/bluetooth/le/BluetoothLeScanner.java

index 1eac395..e3bc78e 100644 (file)
@@ -205,7 +205,8 @@ public final class BluetoothLeScanner {
         }
         synchronized (mLeScanClients) {
             if (callback != null && mLeScanClients.containsKey(callback)) {
-                postCallbackError(callback, ScanCallback.SCAN_FAILED_ALREADY_STARTED);
+                return postCallbackErrorOrReturn(callback,
+                            ScanCallback.SCAN_FAILED_ALREADY_STARTED);
             }
             IBluetoothGatt gatt;
             try {