Mercurial > public > src > rhodecode
changeset 124:f8ae5c1dfae2
Removed unneeded PATH_INFO manipulation, and added 404 codes on bad repositories paths
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 29 Apr 2010 00:29:49 +0200 |
parents | f57bd22d433d |
children | 2811259dc12d |
files | pylons_app/lib/simplehg.py |
diffstat | 1 files changed, 12 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/pylons_app/lib/simplehg.py Wed Apr 28 22:14:03 2010 +0200 +++ b/pylons_app/lib/simplehg.py Thu Apr 29 00:29:49 2010 +0200 @@ -2,6 +2,8 @@ from mercurial.hgweb import hgweb from mercurial.hgweb.request import wsgiapplication from pylons_app.lib.utils import make_ui +from pylons.controllers.util import abort +from webob.exc import HTTPNotFound class SimpleHg(object): def __init__(self, application, config): @@ -12,16 +14,20 @@ if not is_mercurial(environ): return self.application(environ, start_response) else: - #repo_name = environ['PATH_INFO'].replace('/', '') - repo_name = environ['PATH_INFO'].split('/')[1] - if not environ['PATH_INFO'].endswith == '/': - environ['PATH_INFO'] += '/' - #environ['SCRIPT_NAME'] = request.path + try: + repo_name = environ['PATH_INFO'].split('/')[1] + except: + return HTTPNotFound()(environ, start_response) + + #since we wrap into hgweb, just reset the path environ['PATH_INFO'] = '/' self.baseui = make_ui() self.basepath = self.baseui.configitems('paths')[0][1].replace('*', '') self.repo_path = os.path.join(self.basepath, repo_name) - app = wsgiapplication(self._make_app) + try: + app = wsgiapplication(self._make_app) + except Exception as e: + return HTTPNotFound()(environ, start_response) return app(environ, start_response) def _make_app(self):