X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=apt_dht%2FHTTPServer.py;h=181da4e4575f20a1ab66a6fba71f70dd62b71db2;hb=85d160514bda0e66058f0fb1ac70c8cf52b4435d;hp=1e049c392a789a0f4250bf6a05ef8664e8f00709;hpb=90357051e0769aea188a30fb3341733e97b37d33;p=quix0rs-apt-p2p.git diff --git a/apt_dht/HTTPServer.py b/apt_dht/HTTPServer.py index 1e049c3..181da4e 100644 --- a/apt_dht/HTTPServer.py +++ b/apt_dht/HTTPServer.py @@ -1,6 +1,7 @@ import os.path, time from twisted.python import log +from twisted.internet import defer from twisted.web2 import server, http, resource, channel from twisted.web2 import static, http_headers, responsecode @@ -10,15 +11,21 @@ class FileDownloader(static.File): self.manager = manager super(FileDownloader, self).__init__(path, defaultType, ignoredExts, processors, indexNames) - def render(self, req): + def renderHTTP(self, req): log.msg('Got request for %s from %s' % (req.uri, req.remoteAddr)) - resp = super(FileDownloader, self).render(req) + resp = super(FileDownloader, self).renderHTTP(req) + if isinstance(resp, defer.Deferred): + resp.addCallback(self._renderHTTP_done, req) + else: + resp = self._renderHTTP_done(resp, req) + return resp + + def _renderHTTP_done(self, resp, req): log.msg('Initial response to %s: %r' % (req.uri, resp)) if self.manager: path = 'http:/' + req.uri - if resp != responsecode.NOT_FOUND: - log.msg('Checking freshness of %s' % req.uri) + if resp.code >= 200 and resp.code < 400: return self.manager.check_freshness(path, resp.headers.getHeader('Last-Modified'), resp) log.msg('Not found, trying other methods for %s' % req.uri)