change default port= to listen on both IPv4+IPv6

The default was "tcp:4001", which happens to expand into
"tcp:4001:interface=127.0.0.1", which limits the listening socket to IPv4
connections only.

Changing it to "tcp:4001:interface=\:\:1" means "listen on ::1", which is the
IPv6 name for the loopback interface, and gets us a socket that accepts both
IPv4 and IPv6 connections.

Note: this might cause incompatibilities with IPv4-only hosts, if they don't
accept the "::1" name. For these systems, run the server as `twist
transitrelay --port=tcp:4001" to revert to the old behavior.

closes #12
This commit is contained in:
Brian Warner 2019-09-10 23:09:04 -07:00
parent e9f166cb96
commit 273c4d796c
2 changed files with 5 additions and 3 deletions

View File

@ -19,7 +19,7 @@ class Options(usage.Options):
longdesc = LONGDESC longdesc = LONGDESC
optParameters = [ optParameters = [
("port", "p", "tcp:4001", "endpoint to listen on"), ("port", "p", "tcp:4001:interface=\:\:1", "endpoint to listen on"),
("blur-usage", None, None, "blur timestamps and data sizes in logs"), ("blur-usage", None, None, "blur timestamps and data sizes in logs"),
("log-fd", None, None, "write JSON usage logs to this file descriptor"), ("log-fd", None, None, "write JSON usage logs to this file descriptor"),
("usage-db", None, None, "record usage data (SQLite)"), ("usage-db", None, None, "record usage data (SQLite)"),

View File

@ -2,17 +2,19 @@ from __future__ import unicode_literals, print_function
from twisted.trial import unittest from twisted.trial import unittest
from .. import server_tap from .. import server_tap
PORT = "tcp:4001:interface=\:\:1"
class Config(unittest.TestCase): class Config(unittest.TestCase):
def test_defaults(self): def test_defaults(self):
o = server_tap.Options() o = server_tap.Options()
o.parseOptions([]) o.parseOptions([])
self.assertEqual(o, {"blur-usage": None, "log-fd": None, self.assertEqual(o, {"blur-usage": None, "log-fd": None,
"usage-db": None, "port": "tcp:4001"}) "usage-db": None, "port": PORT})
def test_blur(self): def test_blur(self):
o = server_tap.Options() o = server_tap.Options()
o.parseOptions(["--blur-usage=60"]) o.parseOptions(["--blur-usage=60"])
self.assertEqual(o, {"blur-usage": 60, "log-fd": None, self.assertEqual(o, {"blur-usage": 60, "log-fd": None,
"usage-db": None, "port": "tcp:4001"}) "usage-db": None, "port": PORT})
def test_string(self): def test_string(self):
o = server_tap.Options() o = server_tap.Options()