summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorILYA Khlopotov <iilyak@apache.org>2020-11-16 04:01:21 -0800
committerILYA Khlopotov <iilyak@apache.org>2020-11-16 04:01:21 -0800
commit1be23124b7a867a966ce39ec66231bc2d2779ca9 (patch)
tree59f3fd31fb5851e51273a58831d89f03c290fab7
parent679fc835f0e52cdcbe811fc6a6b7434ecf636172 (diff)
downloadcouchdb-1be23124b7a867a966ce39ec66231bc2d2779ca9.tar.gz
Use `req_body` field if present
When we call `couch_httpd:json_body/1` we can have `req_body` already set. In this case we should return the field as is without any attempt to decompress or decode it. This PR brings the approach we use in `chttpd` into `couch_httpd`.
-rw-r--r--src/couch/src/couch_httpd.erl7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/couch/src/couch_httpd.erl b/src/couch/src/couch_httpd.erl
index 8f7fedd5e..53d14d793 100644
--- a/src/couch/src/couch_httpd.erl
+++ b/src/couch/src/couch_httpd.erl
@@ -599,13 +599,16 @@ body(#httpd{mochi_req=MochiReq, req_body=undefined}) ->
body(#httpd{req_body=ReqBody}) ->
ReqBody.
-json_body(Httpd) ->
+json_body(#httpd{req_body=undefined} = Httpd) ->
case body(Httpd) of
undefined ->
throw({bad_request, "Missing request body"});
Body ->
?JSON_DECODE(maybe_decompress(Httpd, Body))
- end.
+ end;
+
+json_body(#httpd{req_body=ReqBody}) ->
+ ReqBody.
json_body_obj(Httpd) ->
case json_body(Httpd) of