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):