Mercurial > prosody-hg
comparison plugins/mod_http_errors.lua @ 13964:36d361722889
mod_http_errors: Fix traceback on missing Accept header
Also guards against the request being missing from the event entirely,
as is the case with errors from net.http.server runner_callbacks:error()
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 28 Sep 2025 00:55:41 +0200 |
| parents | 1b95d50cfa18 |
| children |
comparison
equal
deleted
inserted
replaced
| 13963:44f859531df7 | 13964:36d361722889 |
|---|---|
| 81 return get_page(event.code, (show_private and event.private_message) or event.message or (event.error and event.error.text)); | 81 return get_page(event.code, (show_private and event.private_message) or event.message or (event.error and event.error.text)); |
| 82 end); | 82 end); |
| 83 | 83 |
| 84 -- Return error object as JSON if that's what requester prefers | 84 -- Return error object as JSON if that's what requester prefers |
| 85 module:hook_object_event(server, "http-error", function (event) | 85 module:hook_object_event(server, "http-error", function (event) |
| 86 if event.request.headers.accept:match("^application/json") then | 86 if event.request and (event.request.headers.accept or ""):match("^application/json") then |
| 87 event.response.headers.content_type = "application/json"; | 87 event.response.headers.content_type = "application/json"; |
| 88 local error = event.request and event.error; | 88 local error = event.request and event.error; |
| 89 if not error then | 89 if not error then |
| 90 error = http_errors[event.response.status_code]; | 90 error = http_errors[event.response.status_code]; |
| 91 end | 91 end |
