fix: socket sideband UDP 5602 en dual-stack IPv4+IPv6

Le socket AF_INET seul ne recevait pas les stats Pi Zero envoyées en IPv6
via Mycelium. Passage en AF_INET6 + IPV6_V6ONLY=0 pour accepter les deux
familles sur un seul socket (Freebox IPv4 en dev, Mycelium IPv6 en prod).
This commit is contained in:
nicoboy
2026-07-01 16:56:20 +02:00
parent a9e4f913ec
commit 24ae29b0d7

View File

@ -63,10 +63,13 @@ _pi_stats: dict | None = None
def sideband_loop() -> None:
"""Écoute UDP 5602, stocke le dernier JSON Pi Zero dans _pi_stats."""
global _pi_stats
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# AF_INET6 + V6ONLY=0 : socket dual-stack qui accepte l'IPv4 (Freebox, dev)
# et l'IPv6 (Mycelium, prod) sur le même port sans dupliquer le socket.
sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
sock.settimeout(1.0)
sock.bind(("0.0.0.0", SIDEBAND_PORT))
sock.bind(("::", SIDEBAND_PORT))
print(f"[SIDEBAND] Écoute UDP sur port {SIDEBAND_PORT}")
while _running:
try: