diff options
author | John Christopher Anderson <jchris@apache.org> | 2009-02-13 03:55:36 +0000 |
---|---|---|
committer | John Christopher Anderson <jchris@apache.org> | 2009-02-13 03:55:36 +0000 |
commit | 76508853716f2c0567bb08dfb586a6f326ee54e2 (patch) | |
tree | 3826927aa79d2cb2c7ea3e3405e4c9a2538c08d6 /src/couchdb/couch_httpd.erl | |
parent | da592618240eb9b8c165905f1d9ab4c4a3665b02 (diff) |
Accept standalone attachment PUTs with Transfer-Encoding: chunked
Includes a patch to mochiweb_request that is under review for inclusion upstream.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@743971 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_httpd.erl')
-rw-r--r-- | src/couchdb/couch_httpd.erl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl index 6b9079c4..9969177e 100644 --- a/src/couchdb/couch_httpd.erl +++ b/src/couchdb/couch_httpd.erl @@ -16,7 +16,7 @@ -export([start_link/0, stop/0, handle_request/3]). -export([header_value/2,header_value/3,qs_value/2,qs_value/3,qs/1,path/1,absolute_uri/2]). --export([verify_is_server_admin/1,unquote/1,quote/1,recv/2]). +-export([verify_is_server_admin/1,unquote/1,quote/1,recv/2,recv_chunked/4]). -export([parse_form/1,json_body/1,body/1,doc_etag/1, make_etag/1, etag_respond/3]). -export([primary_header_value/2,partition/1,serve_file/3]). -export([start_chunked_response/3,send_chunk/2]). @@ -260,6 +260,12 @@ parse_form(#httpd{mochi_req=MochiReq}) -> recv(#httpd{mochi_req=MochiReq}, Len) -> MochiReq:recv(Len). +recv_chunked(#httpd{mochi_req=MochiReq}, MaxChunkSize, ChunkFun, InitState) -> + % Fun is called once with each chunk + % Fun({Length, Binary}, State) + % called with Length == 0 on the last time. + MochiReq:recv_body(MaxChunkSize, ChunkFun, InitState). + body(#httpd{mochi_req=MochiReq}) -> % Maximum size of document PUT request body (4GB) MaxSize = list_to_integer( |