Skip SDP search with an empty service class id
This fixes pairing failure with a device which has an empty service
class id along with RFCOMM protocol descriptor attribute as a service
search attribute response.
This caused SDP_FindServiceUUIDInDb() and
SDP_FindProtocolListElemInRec(UUID_PROTOCOL_RFCOMM) make true which in
turn scn_found flag is set to ture.
RFCOMM SCN is strangely handled with current AOSP implementation, means
SCN value is passed in disc_res.result field.
Typically disc_res.result should be BTA_SUCCESS or BTA_FAILURE but in
this case result value is larger than zero.
As a result, btif_dm_search_services_evt() treats this as a SDP failure
and sends an empty UUID to the Android frameworks.
To avoid this problem, SDP_FindServiceUUIDInDb() will not be excuted
with an empty UUID.
This issue is seen with JETTOUR X70 carkit:
Attribute List
Attribute: Service Record Handle
Service Record Handle: 0x 00 01 00 04
Attribute: Service Class ID List
UUID: Unknown UUID
Attribute: Protocol Descriptor List
UUID: L2CAP
UUID: RFCOMM
Channel Number: 16
Attribute: Browse Group List
UUID: Public Browse Group
Attribute: Service Name
String: Serial Port
Change-Id: Ib91a0e20621664eb3778c1716d5a40cc92edf8c9
Signed-off-by:
slki.shin <slki.shin@samsung.com>
Loading
Please register or sign in to comment