415 else: |
414 else: |
416 wsgireq.respond(HTTP_OK, ctype) |
415 wsgireq.respond(HTTP_OK, ctype) |
417 return content |
416 return content |
418 |
417 |
419 except (error.LookupError, error.RepoLookupError) as err: |
418 except (error.LookupError, error.RepoLookupError) as err: |
420 wsgireq.respond(HTTP_NOT_FOUND, ctype) |
|
421 msg = pycompat.bytestr(err) |
419 msg = pycompat.bytestr(err) |
422 if (util.safehasattr(err, 'name') and |
420 if (util.safehasattr(err, 'name') and |
423 not isinstance(err, error.ManifestLookupError)): |
421 not isinstance(err, error.ManifestLookupError)): |
424 msg = 'revision not found: %s' % err.name |
422 msg = 'revision not found: %s' % err.name |
425 return tmpl('error', error=msg) |
423 |
426 except (error.RepoError, error.RevlogError) as inst: |
424 res.status = '404 Not Found' |
427 wsgireq.respond(HTTP_SERVER_ERROR, ctype) |
425 res.headers['Content-Type'] = ctype |
428 return tmpl('error', error=pycompat.bytestr(inst)) |
426 res.setbodygen(tmpl('error', error=msg)) |
429 except ErrorResponse as inst: |
427 return res.sendresponse() |
430 wsgireq.respond(inst, ctype) |
428 except (error.RepoError, error.RevlogError) as e: |
431 return tmpl('error', error=pycompat.bytestr(inst)) |
429 res.status = '500 Internal Server Error' |
|
430 res.headers['Content-Type'] = ctype |
|
431 res.setbodygen(tmpl('error', error=pycompat.bytestr(e))) |
|
432 return res.sendresponse() |
|
433 except ErrorResponse as e: |
|
434 res.status = statusmessage(e.code, pycompat.bytestr(e)) |
|
435 res.headers['Content-Type'] = ctype |
|
436 res.setbodygen(tmpl('error', error=pycompat.bytestr(e))) |
|
437 return res.sendresponse() |
432 |
438 |
433 def check_perm(self, rctx, req, op): |
439 def check_perm(self, rctx, req, op): |
434 for permhook in permhooks: |
440 for permhook in permhooks: |
435 permhook(rctx, req, op) |
441 permhook(rctx, req, op) |
436 |
442 |