Ignore invalid local resolvable address

This commit is contained in:
Josh Wu
2024-08-21 00:11:14 +08:00
parent db383bb3e6
commit 597560ff80

View File

@@ -4281,6 +4281,12 @@ class Device(CompositeEventEmitter):
else self.public_address else self.public_address
) )
if advertising_set.advertising_parameters.own_address_type in (
OwnAddressType.RANDOM,
OwnAddressType.PUBLIC,
):
connection.self_resolvable_address = None
# Setup auto-restart of the advertising set if needed. # Setup auto-restart of the advertising set if needed.
if advertising_set.auto_restart: if advertising_set.auto_restart:
connection.once( connection.once(
@@ -4327,7 +4333,10 @@ class Device(CompositeEventEmitter):
# Convert all-zeros addresses into None. # Convert all-zeros addresses into None.
if self_resolvable_address == Address.ANY_RANDOM: if self_resolvable_address == Address.ANY_RANDOM:
self_resolvable_address = None self_resolvable_address = None
if peer_resolvable_address == Address.ANY_RANDOM: if (
peer_resolvable_address == Address.ANY_RANDOM
or not peer_address.is_resolved
):
peer_resolvable_address = None peer_resolvable_address = None
logger.debug( logger.debug(
@@ -4361,6 +4370,7 @@ class Device(CompositeEventEmitter):
peer_address = resolved_address peer_address = resolved_address
self_address = None self_address = None
own_address_type: Optional[int] = None
if role == HCI_CENTRAL_ROLE: if role == HCI_CENTRAL_ROLE:
own_address_type = self.connect_own_address_type own_address_type = self.connect_own_address_type
assert own_address_type is not None assert own_address_type is not None
@@ -4389,6 +4399,11 @@ class Device(CompositeEventEmitter):
else self.random_address else self.random_address
) )
# Some controllers may return local resolvable address even not using address
# generation offloading. Ignore the value to prevent SMP failure.
if own_address_type in (OwnAddressType.RANDOM, OwnAddressType.PUBLIC):
self_resolvable_address = None
# Create a connection. # Create a connection.
connection = Connection( connection = Connection(
self, self,