From 928085c597e900aa76fe0b05eb74dfa3380e787d Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Wed, 24 May 2017 12:52:13 +0200 Subject: proxy tests: fix leaking sockets --- mitmproxy/proxy/server.py | 2 ++ mitmproxy/tools/main.py | 24 ++++++++++++------------ test/mitmproxy/test_proxy.py | 3 +-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/mitmproxy/proxy/server.py b/mitmproxy/proxy/server.py index 50a2b76b..5171fbee 100644 --- a/mitmproxy/proxy/server.py +++ b/mitmproxy/proxy/server.py @@ -48,6 +48,8 @@ class ProxyServer(tcp.TCPServer): if config.options.mode == "transparent": platform.init_transparent_mode() except Exception as e: + if self.socket: + self.socket.close() raise exceptions.ServerException( 'Error starting proxy server: ' + repr(e) ) from e diff --git a/mitmproxy/tools/main.py b/mitmproxy/tools/main.py index d8fac077..568c5177 100644 --- a/mitmproxy/tools/main.py +++ b/mitmproxy/tools/main.py @@ -13,8 +13,7 @@ from mitmproxy.tools import cmdline # noqa from mitmproxy import exceptions # noqa from mitmproxy import options # noqa from mitmproxy import optmanager # noqa -from mitmproxy.proxy import config # noqa -from mitmproxy.proxy import server # noqa +from mitmproxy import proxy from mitmproxy.utils import version_check # noqa from mitmproxy.utils import debug # noqa @@ -49,15 +48,7 @@ def process_options(parser, opts, args): adict[n] = getattr(args, n) opts.merge(adict) - pconf = config.ProxyConfig(opts) - if opts.server: - try: - return server.ProxyServer(pconf) - except exceptions.ServerException as v: - print(str(v), file=sys.stderr) - sys.exit(1) - else: - return server.DummyServer(pconf) + return proxy.config.ProxyConfig(opts) def run(MasterKlass, args, extra=None): # pragma: no cover @@ -74,7 +65,16 @@ def run(MasterKlass, args, extra=None): # pragma: no cover master = None try: unknown = optmanager.load_paths(opts, args.conf) - server = process_options(parser, opts, args) + pconf = process_options(parser, opts, args) + if pconf.options.server: + try: + server = proxy.server.ProxyServer(pconf) + except exceptions.ServerException as v: + print(str(v), file=sys.stderr) + sys.exit(1) + else: + server = proxy.server.DummyServer(pconf) + master = MasterKlass(opts, server) master.addons.trigger("configure", opts.keys()) master.addons.trigger("tick") diff --git a/test/mitmproxy/test_proxy.py b/test/mitmproxy/test_proxy.py index e1d0da00..299abab3 100644 --- a/test/mitmproxy/test_proxy.py +++ b/test/mitmproxy/test_proxy.py @@ -32,8 +32,7 @@ class TestProcessProxyOptions: opts = options.Options() cmdline.common_options(parser, opts) args = parser.parse_args(args=args) - main.process_options(parser, opts, args) - pconf = config.ProxyConfig(opts) + pconf = main.process_options(parser, opts, args) return parser, pconf def assert_noerr(self, *args): -- cgit v1.2.3