You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by kx...@apache.org on 2015/09/17 12:39:08 UTC
couchdb commit: updated refs/heads/1.x.x to b6638e3
Repository: couchdb
Updated Branches:
refs/heads/1.x.x 90a9dac99 -> b6638e35e
Fix duplicated Content-Type for show/update functions
COUCHDB-1876
Signed-off-by: Alexander Shorin <kx...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/b6638e35
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/b6638e35
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/b6638e35
Branch: refs/heads/1.x.x
Commit: b6638e35e326e7fafdfddce10ec3e6a990c4639f
Parents: 90a9dac
Author: Artur Mazurek <ar...@gmail.com>
Authored: Thu Sep 17 13:36:31 2015 +0300
Committer: Alexander Shorin <kx...@apache.org>
Committed: Thu Sep 17 13:37:59 2015 +0300
----------------------------------------------------------------------
src/couchdb/couch_httpd.erl | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/b6638e35/src/couchdb/couch_httpd.erl
----------------------------------------------------------------------
diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl
index 94eab7d..b73b0bd 100644
--- a/src/couchdb/couch_httpd.erl
+++ b/src/couchdb/couch_httpd.erl
@@ -752,11 +752,8 @@ start_json_response(Req, Code) ->
start_json_response(Req, Code, Headers) ->
initialize_jsonp(Req),
- DefaultHeaders = [
- {"Content-Type", negotiate_content_type(Req)},
- {"Cache-Control", "must-revalidate"}
- ],
- {ok, Resp} = start_chunked_response(Req, Code, DefaultHeaders ++ Headers),
+ AllHeaders = maybe_add_default_headers(Req, Headers),
+ {ok, Resp} = start_chunked_response(Req, Code, AllHeaders),
case start_jsonp() of
[] -> ok;
Start -> send_chunk(Resp, Start)
@@ -767,6 +764,21 @@ end_json_response(Resp) ->
send_chunk(Resp, end_jsonp() ++ [$\n]),
last_chunk(Resp).
+
+maybe_add_default_headers(ForRequest, ToHeaders) ->
+ DefaultHeaders = [
+ {"Content-Type", negotiate_content_type(ForRequest)},
+ {"Cache-Control", "must-revalidate"}
+ ],
+ lists:foldl(fun maybe_add_header/2, ToHeaders, DefaultHeaders).
+
+maybe_add_header({HeaderName, HeaderValue}, ToHeaders) ->
+ case lists:keyfind(HeaderName, 1, ToHeaders) of
+ false -> ToHeaders ++ [{HeaderName, HeaderValue}];
+ _Found -> ToHeaders
+ end.
+
+
initialize_jsonp(Req) ->
case get(jsonp) of
undefined -> put(jsonp, qs_value(Req, "callback", no_jsonp));