From fc201b8869eb22cd1ef39d11bf945283c439059c Mon Sep 17 00:00:00 2001 From: Jan Lehnardt Date: Tue, 15 Sep 2009 13:04:10 +0000 Subject: fix attachments with an undefined Content-Length header and no TE, patch by Benoit Chesneau, closes COUCHDB-497 git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@815308 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/test/attachments.js | 12 ++++++++++++ src/couchdb/couch_httpd_db.erl | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/share/www/script/test/attachments.js b/share/www/script/test/attachments.js index f279c31e..1ed81ad8 100644 --- a/share/www/script/test/attachments.js +++ b/share/www/script/test/attachments.js @@ -225,4 +225,16 @@ couchTests.attachments= function(debug) { headers: {"if-none-match": etag} }); T(xhr.status == 304); + + // test COUCHDB-497 - empty attachments + var xhr = CouchDB.request("PUT", "/test_suite_db/bin_doc5/empty.txt?rev="+rev, { + headers:{"Content-Type":"text/plain;charset=utf-8", "Content-Length": "0"}, + body:"" + }); + TEquals(201, xhr.status, "should send 201 Accepted"); + var rev = JSON.parse(xhr.responseText).rev; + var xhr = CouchDB.request("PUT", "/test_suite_db/bin_doc5/empty.txt?rev="+rev, { + headers:{"Content-Type":"text/plain;charset=utf-8"} + }); + TEquals(201, xhr.status, "should send 201 Accepted"); }; diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl index dab583e3..2ff02654 100644 --- a/src/couchdb/couch_httpd_db.erl +++ b/src/couchdb/couch_httpd_db.erl @@ -895,7 +895,7 @@ db_attachment_req(#httpd{method=Method}=Req, Db, DocId, FileNameParts) end, data = case couch_httpd:body_length(Req) of undefined -> - undefined; + <<"">>; {unknown_transfer_encoding, Unknown} -> exit({unknown_transfer_encoding, Unknown}); chunked -> @@ -904,7 +904,7 @@ db_attachment_req(#httpd{method=Method}=Req, Db, DocId, FileNameParts) ChunkFun, InitState) end; 0 -> - <<>>; + <<"">>; Length when is_integer(Length) -> fun() -> couch_httpd:recv(Req, 0) end; Length -> -- cgit v1.2.3