diff --git a/src/allmydata/test/test_tor_provider.py b/src/allmydata/test/test_tor_provider.py index 0a1f589bf..21bc5878e 100644 --- a/src/allmydata/test/test_tor_provider.py +++ b/src/allmydata/test/test_tor_provider.py @@ -408,8 +408,13 @@ class ProviderListener(unittest.TestCase): p = tor_provider.Provider("basedir", FakeConfig(**{"onion.local_port": "321"}), reactor) + fake_ep = object() + with mock.patch("allmydata.util.tor_provider.TCP4ServerEndpoint", + return_value=fake_ep) as e: endpoint_or_description = p.get_listener() - self.assertEqual(endpoint_or_description, "tcp:321:interface=127.0.0.1") + self.assertIs(endpoint_or_description, fake_ep) + self.assertEqual(e.mock_calls, [mock.call(reactor, 321, + interface="127.0.0.1")]) class Provider_CheckOnionConfig(unittest.TestCase): def test_default(self): diff --git a/src/allmydata/util/tor_provider.py b/src/allmydata/util/tor_provider.py index aa79b56d2..ccb963775 100644 --- a/src/allmydata/util/tor_provider.py +++ b/src/allmydata/util/tor_provider.py @@ -3,7 +3,7 @@ from __future__ import absolute_import, print_function, with_statement import os from twisted.internet.defer import inlineCallbacks, returnValue -from twisted.internet.endpoints import clientFromString +from twisted.internet.endpoints import clientFromString, TCP4ServerEndpoint from twisted.internet.error import ConnectionRefusedError, ConnectError from twisted.application import service @@ -217,9 +217,9 @@ class Provider(service.MultiService): return self._node_for_config.get_config("tor", *args, **kwargs) def get_listener(self): - local_port = self._get_tor_config("onion.local_port") - tor_port = "tcp:%s:interface=127.0.0.1" % local_port - return tor_port + local_port = int(self._get_tor_config("onion.local_port")) + ep = TCP4ServerEndpoint(self._reactor, local_port, interface="127.0.0.1") + return ep def get_tor_handler(self): enabled = self._get_tor_config("enabled", True, boolean=True)