]> www.average.org Git - loctrkd.git/commitdiff
Support IPv6 on client socket
authorEugene Crosser <crosser@average.org>
Wed, 20 Apr 2022 21:32:00 +0000 (23:32 +0200)
committerEugene Crosser <crosser@average.org>
Wed, 20 Apr 2022 21:32:00 +0000 (23:32 +0200)
gps303/collector.py
gps303/zmsg.py

index 4cb7956d2809c4dfd57782d7a15b9bf57abfdbeb..be1bdeccc609c35b85bea167ceda15fed65bb6b9 100644 (file)
@@ -1,7 +1,7 @@
 """ TCP server that communicates with terminals """
 
 from logging import getLogger
-from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
+from socket import socket, AF_INET6, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
 from time import time
 from struct import pack
 import zmq
@@ -135,7 +135,7 @@ def runserver(conf):
     zpub.bind(conf.get("collector", "publishurl"))
     zsub = zctx.socket(zmq.SUB)
     zsub.connect(conf.get("collector", "listenurl"))
-    tcpl = socket(AF_INET, SOCK_STREAM)
+    tcpl = socket(AF_INET6, SOCK_STREAM)
     tcpl.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
     tcpl.bind(("", conf.getint("collector", "port")))
     tcpl.listen(5)
index cdd23fcd5eb7e1d36d02d0c5527ff3f7bc4d4074..7ab3ce4caf755271bd91531cc81f9103240d8b35 100644 (file)
@@ -6,8 +6,11 @@ from struct import pack, unpack
 __all__ = "Bcast", "Resp"
 
 def pack_peer(peeraddr):
-    saddr, port = peeraddr
-    addr = ip.ip_address(saddr)
+    saddr, port, _x, _y = peeraddr
+    addr6 = ip.ip_address(saddr)
+    addr = addr6.ipv4_mapped
+    if addr is None:
+        addr = addr6
     return pack("B", addr.version) + (addr.packed + b"\0\0\0\0\0\0\0\0\0\0\0\0")[:16] + pack("!H", port)
 
 def unpack_peer(buffer):