forked from auracaster/bumble_mirror
Ignore invalid local resolvable address
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user