D2795: hgweb: send errors using new response API
This revision was automatically updated to reflect the committed changes. Closed by commit rHG9675147aec06: hgweb: send errors using new response API (authored by indygreg, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2795?vs=6856=6931 REVISION DETAIL https://phab.mercurial-scm.org/D2795 AFFECTED FILES mercurial/hgweb/hgweb_mod.py CHANGE DETAILS diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -14,11 +14,10 @@ from .common import ( ErrorResponse, HTTP_BAD_REQUEST, -HTTP_NOT_FOUND, HTTP_OK, -HTTP_SERVER_ERROR, cspvalues, permhooks, +statusmessage, ) from .. import ( @@ -417,18 +416,25 @@ return content except (error.LookupError, error.RepoLookupError) as err: -wsgireq.respond(HTTP_NOT_FOUND, ctype) msg = pycompat.bytestr(err) if (util.safehasattr(err, 'name') and not isinstance(err, error.ManifestLookupError)): msg = 'revision not found: %s' % err.name -return tmpl('error', error=msg) -except (error.RepoError, error.RevlogError) as inst: -wsgireq.respond(HTTP_SERVER_ERROR, ctype) -return tmpl('error', error=pycompat.bytestr(inst)) -except ErrorResponse as inst: -wsgireq.respond(inst, ctype) -return tmpl('error', error=pycompat.bytestr(inst)) + +res.status = '404 Not Found' +res.headers['Content-Type'] = ctype +res.setbodygen(tmpl('error', error=msg)) +return res.sendresponse() +except (error.RepoError, error.RevlogError) as e: +res.status = '500 Internal Server Error' +res.headers['Content-Type'] = ctype +res.setbodygen(tmpl('error', error=pycompat.bytestr(e))) +return res.sendresponse() +except ErrorResponse as e: +res.status = statusmessage(e.code, pycompat.bytestr(e)) +res.headers['Content-Type'] = ctype +res.setbodygen(tmpl('error', error=pycompat.bytestr(e))) +return res.sendresponse() def check_perm(self, rctx, req, op): for permhook in permhooks: To: indygreg, #hg-reviewers, durin42 Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D2795: hgweb: send errors using new response API
indygreg created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY Our slow march off of wsgirequest continues. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D2795 AFFECTED FILES mercurial/hgweb/hgweb_mod.py CHANGE DETAILS diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -14,11 +14,10 @@ from .common import ( ErrorResponse, HTTP_BAD_REQUEST, -HTTP_NOT_FOUND, HTTP_OK, -HTTP_SERVER_ERROR, cspvalues, permhooks, +statusmessage, ) from .. import ( @@ -417,18 +416,25 @@ return content except (error.LookupError, error.RepoLookupError) as err: -wsgireq.respond(HTTP_NOT_FOUND, ctype) msg = pycompat.bytestr(err) if (util.safehasattr(err, 'name') and not isinstance(err, error.ManifestLookupError)): msg = 'revision not found: %s' % err.name -return tmpl('error', error=msg) -except (error.RepoError, error.RevlogError) as inst: -wsgireq.respond(HTTP_SERVER_ERROR, ctype) -return tmpl('error', error=pycompat.bytestr(inst)) -except ErrorResponse as inst: -wsgireq.respond(inst, ctype) -return tmpl('error', error=pycompat.bytestr(inst)) + +res.status = '404 Not Found' +res.headers['Content-Type'] = ctype +res.setbodygen(tmpl('error', error=msg)) +return res.sendresponse() +except (error.RepoError, error.RevlogError) as e: +res.status = '500 Internal Server Error' +res.headers['Content-Type'] = ctype +res.setbodygen(tmpl('error', error=pycompat.bytestr(e))) +return res.sendresponse() +except ErrorResponse as e: +res.status = statusmessage(e.code, pycompat.bytestr(e)) +res.headers['Content-Type'] = ctype +res.setbodygen(tmpl('error', error=pycompat.bytestr(e))) +return res.sendresponse() def check_perm(self, rctx, req, op): for permhook in permhooks: To: indygreg, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel