summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe David Borba Manana <fdmanana@apache.org>2011-04-19 20:38:59 +0000
committerFilipe David Borba Manana <fdmanana@apache.org>2011-04-19 20:38:59 +0000
commit76ce001c041d6dfef1117f14a9e1e20f77f9df39 (patch)
treecf7557687aeb413bbd2c606106acdda6393d6c34
parentcd1ddcf1c5d6ce56698fb7c2e2c1f7ec21b38a14 (diff)
Merged revision 1095200 from trunk
Don't set Content-Encoding headers with value "identity" This is dictated by RFC 2616 and causes problems with Microsoft's ISA 2006 proxy. Closes COUCHDB-1128. Thanks Paul Davis and Andrew Gleave. git-svn-id: https://svn.apache.org/repos/asf/couchdb/branches/1.1.x@1095204 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/couchdb/couch_httpd_db.erl4
-rwxr-xr-xtest/etap/140-attachment-comp.t16
2 files changed, 10 insertions, 10 deletions
diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl
index 85c439ba..0b8f891b 100644
--- a/src/couchdb/couch_httpd_db.erl
+++ b/src/couchdb/couch_httpd_db.erl
@@ -956,7 +956,9 @@ db_attachment_req(#httpd{method='GET',mochi_req=MochiReq}=Req, Db, DocId, FileNa
{"Cache-Control", "must-revalidate"},
{"Content-Type", binary_to_list(Type)}
] ++ case ReqAcceptsAttEnc of
- true ->
+ true when Enc =/= identity ->
+ % RFC 2616 says that the 'identify' encoding should not be used in
+ % the Content-Encoding header
[{"Content-Encoding", atom_to_list(Enc)}];
_ ->
[]
diff --git a/test/etap/140-attachment-comp.t b/test/etap/140-attachment-comp.t
index bf1b21c4..abe98432 100755
--- a/test/etap/140-attachment-comp.t
+++ b/test/etap/140-attachment-comp.t
@@ -19,7 +19,7 @@ test_db_name() ->
main(_) ->
test_util:init_code_path(),
- etap:plan(86),
+ etap:plan(85),
case (catch test()) of
ok ->
etap:end_tests();
@@ -254,8 +254,8 @@ test_get_1st_png_att_without_accept_encoding_header() ->
[],
[{sync, true}]),
etap:is(Code, 200, "HTTP response code is 200"),
- Gziped = lists:member({"content-encoding", "gzip"}, Headers),
- etap:is(Gziped, false, "received body is not gziped"),
+ Encoding = couch_util:get_value("content-encoding", Headers),
+ etap:is(Encoding, undefined, "received body is not gziped"),
etap:is(
Body,
test_png_data(),
@@ -270,8 +270,8 @@ test_get_1st_png_att_with_accept_encoding_gzip() ->
[],
[{sync, true}]),
etap:is(Code, 200, "HTTP response code is 200"),
- Gziped = lists:member({"content-encoding", "gzip"}, Headers),
- etap:is(Gziped, false, "received body is not gziped"),
+ Encoding = couch_util:get_value("content-encoding", Headers),
+ etap:is(Encoding, undefined, "received body is not gziped"),
etap:is(
Body,
test_png_data(),
@@ -286,10 +286,8 @@ test_get_1st_png_att_with_accept_encoding_deflate() ->
[],
[{sync, true}]),
etap:is(Code, 200, "HTTP response code is 200"),
- Deflated = lists:member({"content-encoding", "deflate"}, Headers),
- etap:is(Deflated, false, "received body is not deflated"),
- Gziped = lists:member({"content-encoding", "gzip"}, Headers),
- etap:is(Gziped, false, "received body is not gziped"),
+ Encoding = couch_util:get_value("content-encoding", Headers),
+ etap:is(Encoding, undefined, "received body is in identity form"),
etap:is(
Body,
test_png_data(),