Catch IOErrors and RepoErrors when serving repositories via hgweb.
--- a/mercurial/hgweb.py Thu Nov 17 19:18:33 2005 +0100
+++ b/mercurial/hgweb.py Thu Nov 17 19:38:57 2005 +0100
@@ -1013,7 +1013,12 @@
if virtual:
real = dict(self.repos).get(virtual)
if real:
- hgweb(real).run(req)
+ try:
+ hgweb(real).run(req)
+ except IOError, inst:
+ req.write(tmpl("error", error=inst.strerror))
+ except hg.RepoError, inst:
+ req.write(tmpl("error", error=str(inst)))
else:
req.write(tmpl("notfound", repo=virtual))
else:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/error.tmpl Thu Nov 17 19:38:57 2005 +0100
@@ -0,0 +1,15 @@
+#header#
+<title>Mercurial Error</title>
+</head>
+<body>
+
+<h2>Mercurial Error</h2>
+
+<p>
+An error occured while processing your request:
+</p>
+<p>
+#error|escape#
+</p>
+
+#footer#
--- a/templates/map Thu Nov 17 19:18:33 2005 +0100
+++ b/templates/map Thu Nov 17 19:38:57 2005 +0100
@@ -39,3 +39,4 @@
index = index.tmpl
archiveentry = "<a href="?ca=#node|short#;type=#type#">#type#</a> "
notfound = notfound.tmpl
+error = error.tmpl