From: Ben Darnell Date: Mon, 18 Feb 2013 00:16:14 +0000 (-0500) Subject: simple_httpclient._HTTPConnection now takes a resolver directly. X-Git-Tag: v3.0.0~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1785e0a769b7a175fd0750599b098920f1bb8931;p=thirdparty%2Ftornado.git simple_httpclient._HTTPConnection now takes a resolver directly. This makes the "client" parameter optional for websocket connections. --- diff --git a/tornado/simple_httpclient.py b/tornado/simple_httpclient.py index f4d05dbdc..01f290c2c 100644 --- a/tornado/simple_httpclient.py +++ b/tornado/simple_httpclient.py @@ -95,7 +95,7 @@ class SimpleAsyncHTTPClient(AsyncHTTPClient): _HTTPConnection(self.io_loop, self, request, functools.partial(self._release_fetch, key), callback, - self.max_buffer_size) + self.max_buffer_size, self.resolver) def _release_fetch(self, key): del self.active[key] @@ -106,7 +106,7 @@ class _HTTPConnection(object): _SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]) def __init__(self, io_loop, client, request, release_callback, - final_callback, max_buffer_size): + final_callback, max_buffer_size, resolver): self.start_time = io_loop.time() self.io_loop = io_loop self.client = client @@ -114,6 +114,7 @@ class _HTTPConnection(object): self.release_callback = release_callback self.final_callback = final_callback self.max_buffer_size = max_buffer_size + self.resolver = resolver self.code = None self.headers = None self.chunks = None @@ -149,7 +150,7 @@ class _HTTPConnection(object): # so restrict to ipv4 by default. af = socket.AF_INET - self.client.resolver.getaddrinfo( + self.resolver.getaddrinfo( host, port, af, socket.SOCK_STREAM, 0, 0, callback=self._on_resolve) diff --git a/tornado/test/httpserver_test.py b/tornado/test/httpserver_test.py index 814d54e14..87a3e3e83 100644 --- a/tornado/test/httpserver_test.py +++ b/tornado/test/httpserver_test.py @@ -8,7 +8,7 @@ from tornado.httpserver import HTTPServer from tornado.httputil import HTTPHeaders from tornado.iostream import IOStream from tornado.log import gen_log -from tornado.netutil import ssl_options_to_context +from tornado.netutil import ssl_options_to_context, Resolver from tornado.simple_httpclient import SimpleAsyncHTTPClient from tornado.testing import AsyncHTTPTestCase, AsyncHTTPSTestCase, AsyncTestCase, ExpectLog from tornado.test.util import unittest @@ -190,7 +190,7 @@ class HTTPConnectionTest(AsyncHTTPTestCase): httpclient.HTTPRequest(self.get_url("/")), dict(httpclient.HTTPRequest._DEFAULTS)), None, self.stop, - 1024 * 1024) + 1024 * 1024, Resolver(self.io_loop)) conn.set_request( b"\r\n".join(headers + [utf8("Content-Length: %d\r\n" % len(body))]) + diff --git a/tornado/websocket.py b/tornado/websocket.py index beffc9705..3c914d99b 100644 --- a/tornado/websocket.py +++ b/tornado/websocket.py @@ -40,6 +40,7 @@ from tornado.httputil import HTTPHeaders from tornado.ioloop import IOLoop from tornado.iostream import IOStream, SSLIOStream from tornado.log import gen_log, app_log +from tornado.netutil import Resolver from tornado import simple_httpclient from tornado.util import bytes_type @@ -727,7 +728,7 @@ class WebSocketProtocol13(WebSocketProtocol): class _WebSocketClientConnection(simple_httpclient._HTTPConnection): - def __init__(self, io_loop, client, request): + def __init__(self, io_loop, request): self.connect_future = Future() self.read_future = None self.read_queue = collections.deque() @@ -744,8 +745,8 @@ class _WebSocketClientConnection(simple_httpclient._HTTPConnection): }) super(_WebSocketClientConnection, self).__init__( - io_loop, client, request, lambda: None, lambda response: None, - 104857600) + io_loop, None, request, lambda: None, lambda response: None, + 104857600, Resolver(io_loop)) def _on_close(self): self.on_message(None) @@ -798,11 +799,7 @@ def WebSocketConnect(url, io_loop=None, callback=None): request = simple_httpclient.HTTPRequest(url) request = simple_httpclient._RequestProxy( request, simple_httpclient.HTTPRequest._DEFAULTS) - from tornado.util import ObjectDict - from tornado.netutil import Resolver - # TODO: refactor _HTTPConnection's client parameter - client = ObjectDict(resolver=Resolver(io_loop), hostname_mapping=None) - conn = _WebSocketClientConnection(io_loop, client, request) + conn = _WebSocketClientConnection(io_loop, request) if callback is not None: io_loop.add_future(conn.connect_future, callback) return conn.connect_future