From 76ce001c041d6dfef1117f14a9e1e20f77f9df39 Mon Sep 17 00:00:00 2001 From: Filipe David Borba Manana Date: Tue, 19 Apr 2011 20:38:59 +0000 Subject: 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 --- src/couchdb/couch_httpd_db.erl | 4 +++- test/etap/140-attachment-comp.t | 16 +++++++--------- 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(), -- cgit v1.2.3