From c7396d882d9816b196e50e8363af1c015342d2bc Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Fri, 25 Jan 2019 15:51:53 +0100 Subject: [PATCH] IPv6: revert to listenTCP and override createInternetSocket to have a dual stack server --- syncplayServer.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/syncplayServer.py b/syncplayServer.py index 62431fc..b8ca65a 100755 --- a/syncplayServer.py +++ b/syncplayServer.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 #coding:utf8 +import socket import sys # libpath @@ -12,16 +13,24 @@ except AttributeError: import warnings warnings.warn("You must run Syncplay with Python 3.4 or newer!") -from twisted.internet.endpoints import TCP6ServerEndpoint -from twisted.internet import reactor +from twisted.internet import reactor, tcp from syncplay.server import SyncFactory, ConfigurationGetter +class DualStackPort(tcp.Port): + + def __init__(self, port, factory, backlog=50, interface='', reactor=None): + tcp.Port.__init__(self, port, factory, backlog, interface, reactor) + + def createInternetSocket(self): + s = tcp.Port.createInternetSocket(self) + s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) + return s + if __name__ == '__main__': argsGetter = ConfigurationGetter() args = argsGetter.getConfiguration() - endpoint = TCP6ServerEndpoint(reactor, int(args.port)) - endpoint.listen( + dsp = DualStackPort(int(args.port), SyncFactory( args.port, args.password, @@ -32,5 +41,7 @@ if __name__ == '__main__': args.disable_chat, args.max_chat_message_length, args.max_username_length, - args.stats_db_file)) + args.stats_db_file), + interface='::') + dsp.startListening() reactor.run()