Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added support for specifying the ca-certificates.crt file #379

Closed
wants to merge 5 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 8 additions & 4 deletions tornado/simple_httpclient.py
Expand Up @@ -62,8 +62,9 @@ class SimpleAsyncHTTPClient(AsyncHTTPClient):


""" """
def initialize(self, io_loop=None, max_clients=10, def initialize(self, io_loop=None, max_clients=10,
max_simultaneous_connections=None,
hostname_mapping=None, max_buffer_size=104857600, hostname_mapping=None, max_buffer_size=104857600,
resolver=None): ca_certs=_DEFAULT_CA_CERTS, resolver=None):
"""Creates a AsyncHTTPClient. """Creates a AsyncHTTPClient.


Only a single AsyncHTTPClient instance exists per IOLoop Only a single AsyncHTTPClient instance exists per IOLoop
Expand All @@ -89,6 +90,7 @@ def initialize(self, io_loop=None, max_clients=10,
self.active = {} self.active = {}
self.hostname_mapping = hostname_mapping self.hostname_mapping = hostname_mapping
self.max_buffer_size = max_buffer_size self.max_buffer_size = max_buffer_size
self.ca_certs = ca_certs
self.resolver = resolver or Resolver(io_loop=io_loop) self.resolver = resolver or Resolver(io_loop=io_loop)


def fetch(self, request, callback, **kwargs): def fetch(self, request, callback, **kwargs):
Expand All @@ -115,7 +117,8 @@ def _process_queue(self):
_HTTPConnection(self.io_loop, self, request, _HTTPConnection(self.io_loop, self, request,
functools.partial(self._release_fetch, key), functools.partial(self._release_fetch, key),
callback, callback,
self.max_buffer_size) self.max_buffer_size,
self.ca_certs)


def _release_fetch(self, key): def _release_fetch(self, key):
del self.active[key] del self.active[key]
Expand All @@ -126,7 +129,7 @@ class _HTTPConnection(object):
_SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]) _SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"])


def __init__(self, io_loop, client, request, release_callback, def __init__(self, io_loop, client, request, release_callback,
final_callback, max_buffer_size): final_callback, max_buffer_size, ca_certs=None):
self.start_time = io_loop.time() self.start_time = io_loop.time()
self.io_loop = io_loop self.io_loop = io_loop
self.client = client self.client = client
Expand All @@ -138,6 +141,7 @@ def __init__(self, io_loop, client, request, release_callback,
self.headers = None self.headers = None
self.chunks = None self.chunks = None
self._decompressor = None self._decompressor = None
self.ca_certs = ca_certs
# Timeout handle returned by IOLoop.add_timeout # Timeout handle returned by IOLoop.add_timeout
self._timeout = None self._timeout = None
with stack_context.StackContext(self.cleanup): with stack_context.StackContext(self.cleanup):
Expand Down Expand Up @@ -188,7 +192,7 @@ def _on_resolve(self, future):
if self.request.ca_certs is not None: if self.request.ca_certs is not None:
ssl_options["ca_certs"] = self.request.ca_certs ssl_options["ca_certs"] = self.request.ca_certs
else: else:
ssl_options["ca_certs"] = _DEFAULT_CA_CERTS ssl_options["ca_certs"] = self.ca_certs
if self.request.client_key is not None: if self.request.client_key is not None:
ssl_options["keyfile"] = self.request.client_key ssl_options["keyfile"] = self.request.client_key
if self.request.client_cert is not None: if self.request.client_cert is not None:
Expand Down