From d2e9ea0c88b7578c5fc8d4d37e5df9d078e9b884 Mon Sep 17 00:00:00 2001 From: Paul Tremberth Date: Fri, 13 Jan 2017 16:17:51 +0100 Subject: [PATCH] Enforce DNS resolution timeout --- scrapy/resolver.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scrapy/resolver.py b/scrapy/resolver.py index 3954fd977..4f4f0b04f 100644 --- a/scrapy/resolver.py +++ b/scrapy/resolver.py @@ -16,8 +16,11 @@ class CachingThreadedResolver(ThreadedResolver): def getHostByName(self, name, timeout=None): if name in dnscache: return defer.succeed(dnscache[name]) - if not timeout: - timeout = self.timeout + # in Twisted<=16.6, getHostByName() is always called with + # a default timeout of 60s (actually passed as (1, 3, 11, 45) tuple), + # so the input argument above is simply overridden + # to enforce Scrapy's DNS_TIMEOUT setting's value + timeout = (self.timeout,) d = super(CachingThreadedResolver, self).getHostByName(name, timeout) d.addCallback(self._cache_result, name) return d