summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2013-01-06 21:33:36 +0000
committerRobert Newson <rnewson@apache.org>2013-01-06 21:33:36 +0000
commitb2f7eaebbcb12f0f1953647c12964edcc5098d18 (patch)
treeb3c84ef7efb2d26c28fe635204976b07a313c985
parent78147f5275a73853e013168e676880a4d37ffda4 (diff)
downloadcouchdb-1637-insensitive-replicator.tar.gz
Get headers case-insensitively1637-insensitive-replicator
-rw-r--r--src/couch_replicator/src/couch_replicator_api_wrap.erl16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/couch_replicator/src/couch_replicator_api_wrap.erl b/src/couch_replicator/src/couch_replicator_api_wrap.erl
index dcd6ca8ca..29386a62d 100644
--- a/src/couch_replicator/src/couch_replicator_api_wrap.erl
+++ b/src/couch_replicator/src/couch_replicator_api_wrap.erl
@@ -169,7 +169,7 @@ open_doc_revs(#httpdb{} = HttpDb, Id, Revs, Options, Fun, Acc) ->
fun(200, Headers, StreamDataFun) ->
remote_open_doc_revs_streamer_start(Self),
{<<"--">>, _, _} = couch_httpd:parse_multipart_request(
- get_value("Content-Type", Headers),
+ header_value("Content-Type", Headers),
StreamDataFun,
fun mp_parse_mixed/1)
end),
@@ -510,7 +510,7 @@ receive_docs(Streamer, UserFun, Ref, UserAcc) ->
{started_open_doc_revs, NewRef} ->
restart_remote_open_doc_revs(Ref, NewRef);
{headers, Ref, Headers} ->
- case get_value("content-type", Headers) of
+ case header_value("content-type", Headers) of
{"multipart/related", _} = ContentType ->
case doc_from_multi_part_stream(
ContentType,
@@ -776,3 +776,15 @@ stream_doc({LenLeft, Id}) when LenLeft > 0 ->
receive {data, Ref, Data} ->
{ok, Data, {LenLeft - iolist_size(Data), Id}}
end.
+
+header_value(Key, Headers) ->
+ header_value(Key, Headers, undefined).
+
+header_value(Key, Headers, Default) ->
+ Headers1 = [{string:to_lower(K), V} || {K, V} <- Headers],
+ case lists:keyfind(string:to_lower(Key), 1, Headers1) of
+ {_, Value} ->
+ Value;
+ _ ->
+ Default
+ end.