Mercurial > hg
changeset 17289:f2d6b4f8e78c stable
hgweb: avoid traceback when file or node parameters are missing
Previously, browsing to http://serv/diff would generate an internal
server error due to the file and node parameters being missing.
The same error also occurred for filelog, comparison and annotate.
author | Ross Lagerwall <rosslagerwall@gmail.com> |
---|---|
date | Mon, 30 Jul 2012 11:02:10 +0200 |
parents | fa223eecc6d7 |
children | 7a9246abf9fe |
files | mercurial/hgweb/webcommands.py mercurial/hgweb/webutil.py |
diffstat | 2 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hgweb/webcommands.py Mon Jul 30 08:18:25 2012 +0200 +++ b/mercurial/hgweb/webcommands.py Mon Jul 30 11:02:10 2012 +0200 @@ -586,6 +586,8 @@ def comparison(web, req, tmpl): ctx = webutil.changectx(web.repo, req) + if 'file' not in req.form: + raise ErrorResponse(HTTP_NOT_FOUND, 'file not given') path = webutil.cleanpath(web.repo, req.form['file'][0]) rename = path in ctx and webutil.renamelink(ctx[path]) or []
--- a/mercurial/hgweb/webutil.py Mon Jul 30 08:18:25 2012 +0200 +++ b/mercurial/hgweb/webutil.py Mon Jul 30 11:02:10 2012 +0200 @@ -10,6 +10,8 @@ from mercurial import match, patch, scmutil, error, ui, util from mercurial.i18n import _ from mercurial.node import hex, nullid +from common import ErrorResponse +from common import HTTP_NOT_FOUND import difflib def up(p): @@ -154,11 +156,15 @@ return ctx def filectx(repo, req): + if 'file' not in req.form: + raise ErrorResponse(HTTP_NOT_FOUND, 'file not given') path = cleanpath(repo, req.form['file'][0]) if 'node' in req.form: changeid = req.form['node'][0] + elif 'filenode' in req.form: + changeid = req.form['filenode'][0] else: - changeid = req.form['filenode'][0] + raise ErrorResponse(HTTP_NOT_FOUND, 'node or filenode not given') try: fctx = repo[changeid][path] except error.RepoError: