diff --git a/mercurial/hgweb/common.py b/mercurial/hgweb/common.py --- a/mercurial/hgweb/common.py +++ b/mercurial/hgweb/common.py @@ -197,18 +197,14 @@ directory = os.path.join(tp, b'static') fpath = os.path.join(*fname.split(b'/')) + ct = pycompat.sysbytes( + mimetypes.guess_type(pycompat.fsdecode(fpath))[0] or r"text/plain" + ) path = os.path.join(directory, fpath) try: os.stat(path) - ct = pycompat.sysbytes( - mimetypes.guess_type(pycompat.fsdecode(fpath))[0] or r"text/plain" - ) with open(path, b'rb') as fh: data = fh.read() - - res.headers[b'Content-Type'] = ct - res.setbodybytes(data) - return res except TypeError: raise ErrorResponse(HTTP_SERVER_ERROR, b'illegal filename') except OSError as err: @@ -219,6 +215,10 @@ HTTP_SERVER_ERROR, encoding.strtolocal(err.strerror) ) + res.headers[b'Content-Type'] = ct + res.setbodybytes(data) + return res + def paritygen(stripecount, offset=0): """count parity of horizontal stripes for easier reading"""