Skip to content

Commit 6e25708

Browse files
committed
fix: preserve pre-normalized tuple entries in multicast_addresses
1 parent 56f00c5 commit 6e25708

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

src/zeroconf/_utils/net.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ def ip6_addresses_to_indexes(
152152
result.append((interface_index_to_ip6_address(adapters, iface), iface)) # type: ignore[arg-type]
153153
elif isinstance(iface, str) and ipaddress.ip_address(iface).version == 6:
154154
result.append(ip6_to_address_and_index(adapters, iface)) # type: ignore[arg-type]
155+
elif isinstance(iface, tuple):
156+
result.append(iface)
155157

156158
return result
157159

tests/utils/test_net.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -618,3 +618,29 @@ def _new_socket(bind_addr, **kwargs):
618618

619619
joined = [c.args[1] for c in mock_add.call_args_list if c.args[0] is listen_mock]
620620
assert "192.168.1.5" in joined
621+
622+
623+
def test_create_sockets_multicast_addresses_preserves_pre_normalized_tuple() -> None:
624+
"""Pre-normalized IPv6 adapter tuples pass through to add_multicast_member."""
625+
listen_mock = Mock(spec=socket.socket)
626+
627+
pre_normalized = (("2001:db8::", 1, 1), 1)
628+
629+
with (
630+
patch("zeroconf._utils.net.new_socket", return_value=listen_mock),
631+
patch("zeroconf._utils.net.add_multicast_member", return_value=True) as mock_add,
632+
patch("zeroconf._utils.net.set_respond_socket_multicast_options"),
633+
patch(
634+
"zeroconf._utils.net.ifaddr.get_adapters",
635+
return_value=_generate_mock_adapters(),
636+
),
637+
patch("zeroconf._utils.net.socket.socket.setsockopt"),
638+
):
639+
r.create_sockets(
640+
interfaces=[],
641+
multicast_addresses=[pre_normalized],
642+
ip_version=r.IPVersion.V6Only,
643+
)
644+
645+
joined = [c.args[1] for c in mock_add.call_args_list if c.args[0] is listen_mock]
646+
assert pre_normalized in joined

0 commit comments

Comments
 (0)