Skip SDP check for FP rfcomm connection on Windows

The SDP checks fails but rfcomm connection works.
Skipping the SDP check does not seem to have any ill side effects.

PiperOrigin-RevId: 551370531
This commit is contained in:
Janusz Sobczak
2023-07-26 18:15:44 -07:00
committed by Copybara-Service
parent f3bbb8caeb
commit 974d4b357c
3 changed files with 9 additions and 1 deletions
+1
View File
@@ -43,6 +43,7 @@ namespace {
constexpr char kFastPairPreferencesFilePath[] = "Google/Nearby/FastPair";
constexpr FeatureFlags::Flags fast_pair_feature_flags = FeatureFlags::Flags{
.enable_scan_for_fast_pair_advertisement = true,
.skip_service_discovery_before_connecting_to_rfcomm = true,
};
constexpr absl::Duration kTimeout = absl::Seconds(3);
} // namespace
+4
View File
@@ -56,6 +56,10 @@ class FeatureFlags {
// Controls enable or disable BLE scan advertisement for fast pair
// service uuid 0x2cfe
bool enable_scan_for_fast_pair_advertisement = false;
// Skip Service Discovery Protocol check if the remote party supports the
// requested service id before attempting to connect over rfcomm. SDP fails
// on Windows when connecting to FP service id but the rfcomm is successful.
bool skip_service_discovery_before_connecting_to_rfcomm = false;
};
static const FeatureFlags& GetInstance() {
@@ -311,7 +311,10 @@ std::unique_ptr<api::BluetoothSocket> BluetoothClassicMedium::ConnectToService(
RfcommDeviceService requested_service(
GetRequestedService(current_device, service));
if (!CheckSdp(requested_service)) {
if (!FeatureFlags::GetInstance()
.GetFlags()
.skip_service_discovery_before_connecting_to_rfcomm &&
!CheckSdp(requested_service)) {
NEARBY_LOGS(ERROR) << __func__ << ": Invalid SDP.";
return nullptr;
}