fix empty thread title due premature HTTP connection closing

legacy/0.2
Martin Zimmermann 11 years ago
parent 319492fa42
commit 26544b69be

@ -58,7 +58,7 @@ from jinja2 import Environment, FileSystemLoader
from isso import db, migrate, views, wsgi
from isso.core import ThreadedMixin, uWSGIMixin, Config
from isso.utils import parse
from isso.utils import parse, http
from isso.views import comment, admin
logging.getLogger('werkzeug').setLevel(logging.ERROR)
@ -164,14 +164,9 @@ def make_app(conf=None):
isso = App(conf)
for line in conf.getiter("general", "host"):
try:
host, port, ssl = parse.host(line)
con = httplib.HTTPSConnection if ssl else httplib.HTTPConnection
con(host, port, timeout=5).request('GET', '/')
except (httplib.HTTPException, socket.error):
continue
else:
for host in conf.getiter("general", "host"):
with http.curl('HEAD', host, '/', 5) as resp:
if resp is not None:
logger.info("connected to HTTP server")
break
else:

@ -12,14 +12,27 @@ except ImportError:
from isso.utils import parse
def curl(method, host, path, timeout=3):
class curl(object):
host, port, ssl = parse.host(host)
def __init__(self, method, host, path, timeout=3):
self.method = method
self.host = host
self.path = path
self.timeout = timeout
def __enter__(self):
host, port, ssl = parse.host(self.host)
http = httplib.HTTPSConnection if ssl else httplib.HTTPConnection
with closing(http(host, port, timeout=timeout)) as con:
self.con = http(host, port, timeout=self.timeout)
try:
con.request(method, path)
self.con.request(self.method, self.path)
except (httplib.HTTPException, socket.error):
return None
return con.getresponse()
return self.con.getresponse()
def __exit__(self, exc_type, exc_value, traceback):
self.con.close()

@ -73,7 +73,7 @@ def new(app, environ, request, uri):
with app.lock:
if uri not in app.db.threads:
for host in app.conf.getiter('general', 'host'):
resp = http.curl('HEAD', host, uri)
with http.curl('GET', host, uri) as resp:
if resp and resp.status == 200:
title = parse.title(resp.read())
break

Loading…
Cancel
Save