diff --git a/appveyor.yml b/appveyor.yml index 678667ae8..80094625e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -32,6 +32,7 @@ install: pip install tox pywin32 + certifi ) - if not defined TOXENV ( pip install @@ -44,6 +45,7 @@ install: slimit setproctitle pywin32 + certifi pygame bbfreeze pefile diff --git a/deluge/common.py b/deluge/common.py index f90d58799..97d2ba441 100644 --- a/deluge/common.py +++ b/deluge/common.py @@ -40,6 +40,12 @@ except ImportError: from urlparse import urljoin # pylint: disable=ungrouped-imports from urllib import pathname2url, unquote_plus # pylint: disable=ungrouped-imports +# Windows workaround for HTTPS requests requiring certificate authority bundle. +# see: https://twistedmatrix.com/trac/ticket/9209 +if platform.system() in ('Windows', 'Microsoft'): + from certifi import where + os.environ['SSL_CERT_FILE'] = where() + DBUS_FILEMAN = None # gi makes dbus available on Window but don't import it as unused. if platform.system() not in ('Windows', 'Microsoft', 'Darwin'): diff --git a/deluge/core/core.py b/deluge/core/core.py index 76abfc8ac..691a7c0d2 100644 --- a/deluge/core/core.py +++ b/deluge/core/core.py @@ -1121,23 +1121,15 @@ class Core(component.Component): port = self.get_listen_port() url = 'https://deluge-torrent.org/test_port.php?port=%s' % port agent = Agent(reactor, connectTimeout=30) - d = agent.request( - b'GET', - url.encode('utf-8'), - ) + d = agent.request(b'GET', url.encode()) - def on_get_page(response): - d = readBody(response) - d.addCallback(on_read_body) - return d - - def on_read_body(body): + def on_get_page(body): return bool(int(body)) def on_error(failure): log.warning('Error testing listen port: %s', failure) - d.addCallback(on_get_page) + d.addCallback(readBody).addCallback(on_get_page) d.addErrback(on_error) return d