summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@gmail.com>2022-05-11 11:28:49 -0400
committerNick Vatamaniuc <nickva@users.noreply.github.com>2022-05-11 12:27:45 -0400
commit8b44f476fddc866826e294dee3ee0687f19877bb (patch)
tree8b3d4c1e783e2e5ee95a6acb34b246a9cc351332
parent42f2c1c534ed5c210b45ffcd9a621a31b781b5ae (diff)
downloadcouchdb-8b44f476fddc866826e294dee3ee0687f19877bb.tar.gz
Fix maybe_handle_error clauses
`{shutdown, Err}` should come before `{Err Reason}`, otherwise {Err, Reason} will always match. Also, plugin `handle_error/1` response was forced to match initial `Error`, which doesn't have to always be the case based on: https://github.com/apache/couchdb/blob/42f2c1c534ed5c210b45ffcd9a621a31b781b5ae/src/chttpd/src/chttpd_plugin.erl#L39-L41
-rw-r--r--src/chttpd/src/chttpd.erl8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/chttpd/src/chttpd.erl b/src/chttpd/src/chttpd.erl
index cd8982aa1..4f6ec06c7 100644
--- a/src/chttpd/src/chttpd.erl
+++ b/src/chttpd/src/chttpd.erl
@@ -1134,14 +1134,14 @@ maybe_handle_error(Error) ->
case chttpd_plugin:handle_error(Error) of
{_Code, _Reason, _Description} = Result ->
Result;
+ {shutdown, Err} ->
+ exit({shutdown, Err});
{Err, Reason} ->
{500, couch_util:to_binary(Err), couch_util:to_binary(Reason)};
normal ->
exit(normal);
- {shutdown, Err} ->
- exit({shutdown, Err});
- Error ->
- {500, <<"unknown_error">>, couch_util:to_binary(Error)}
+ Err ->
+ {500, <<"unknown_error">>, couch_util:to_binary(Err)}
end.
error_headers(#httpd{mochi_req = MochiReq} = Req, 401 = Code, ErrorStr, ReasonStr) ->