resolved_family = socket.AF_INET6
else:
deferred = self.resolver.getHostByName(utf8(host))
- resolved = yield gen.Task(deferred.addCallback)
- if twisted.internet.abstract.isIPAddress(resolved):
+ resolved = yield gen.Task(deferred.addBoth)
+ if isinstance(resolved, failure.Failure):
+ resolved.raiseException()
+ elif twisted.internet.abstract.isIPAddress(resolved):
resolved_family = socket.AF_INET
elif twisted.internet.abstract.isIPv6Address(resolved):
resolved_family = socket.AF_INET6
import time
from tornado.netutil import BlockingResolver, ThreadedResolver, is_valid_ip
+from tornado.stack_context import ExceptionStackContext
from tornado.testing import AsyncTestCase, gen_test
from tornado.test.util import unittest
self.assertIn((socket.AF_INET, ('127.0.0.1', 80)),
addrinfo)
+ def test_bad_host(self):
+ def handler(exc_typ, exc_val, exc_tb):
+ self.stop(exc_val)
+ return True # Halt propagation.
+
+ with ExceptionStackContext(handler):
+ self.resolver.resolve('doesntexist', 80, callback=self.stop)
+
+ result = self.wait()
+ self.assertIsInstance(result, Exception)
+
+ @gen_test
+ def test_future_interface_bad_host(self):
+ with self.assertRaises(Exception):
+ yield self.resolver.resolve('doesntexist', 80,
+ socket.AF_UNSPEC)
+
class BlockingResolverTest(AsyncTestCase, _ResolverTestMixin):
def setUp(self):