diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2017-05-24 12:52:13 +0200 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2017-05-24 12:52:13 +0200 |
commit | 928085c597e900aa76fe0b05eb74dfa3380e787d (patch) | |
tree | b7b688b5281b5af9b6aeb6ddcfb1264acd690b76 | |
parent | c9529ffe45fc2794492f1ca37f8788183dd4157b (diff) | |
download | mitmproxy-928085c597e900aa76fe0b05eb74dfa3380e787d.tar.gz mitmproxy-928085c597e900aa76fe0b05eb74dfa3380e787d.tar.bz2 mitmproxy-928085c597e900aa76fe0b05eb74dfa3380e787d.zip |
proxy tests: fix leaking sockets
-rw-r--r-- | mitmproxy/proxy/server.py | 2 | ||||
-rw-r--r-- | mitmproxy/tools/main.py | 24 | ||||
-rw-r--r-- | 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): |