FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: pruy am 19 Februar 2021, 18:45:28

Titel: [patch] Vermeide TCPv6 listen auf Systemen, die v4 und v6 getrennt betrachten
Beitrag von: pruy am 19 Februar 2021, 18:45:28
Auf Systemen, auf denen ein LISTEN auf tcp6 keine Verbindungen von tcp4 annimmt (z.B. NetBSD bei mir)
führt ein blindes RPC::XML::Server->new (analog auch IO::Socket::INET->new) mit ausschließlicher Angabe eines Ports
zum Binden auf eine IPv6 Addresse, sobald IPv6 und IPv4 Adressen auf dem System eingerichtet sind.
Da meine CCU3 nur eine IPv4 Adresse hat, führt das dazu, dass der RPC Mechanismus nicht funktioniert.
(Es werden einfach keine Daten für CallBack empfangen.)

Wird beim den oben genannten Aufrufen der Host (als name oder IP-Adresse angegeben,
so wird die passende Address-Family gebunden und alles klappt, wie erwartet.

Da wohl die Meisten eine Linux-artige Umgebung haben fällt das Problem nicht auf,
da dort ein LISTEN üblicherweise beide Address-Families bedient.

Der Patch verwendet die bei der Initialisierung ermittelte localaddr, so dass auch für den Fall, dass irgendwann einmal
eine ccu mit IPv6 angesprochen wird ein geeigneter callback initialisiert wird.

Der patch behebt das Problem für mich.
Er sollte nach aktuellem Stand auch auf anderen Umgebungen funktionieren,
was ich hier allerdings nicht testen kann.