Multipart vs chunked

630 views
Skip to first unread message

Jens Alfke

unread,
Feb 6, 2012, 1:21:48 PM2/6/12
to us...@couchdb.apache.org
tl;dr: CouchDB* doesn’t seem to correctly parse MIME multipart uploads when the HTTP transfer is chunked. It generates an Erlang exception.

I spent the weekend trying to implement multipart document+attachment uploads in my client code. In doing so I ran into what I think is a bug in CouchDB — after I’d gotten the client side working, every upload produced an Erlang exception on the server. I tried changing around the client-side code so it precomputed the body length instead of sending the body in ‘chunked’ encoding, and that made CouchDB happier.

The exception looks like:

[error] [emulator] Error in process <0.15079.3> with exit value: {badarith,[{couch_httpd_db,'-receive_request_data/2-fun-0-',3},{couch_httpd,read_until,3},{couch_httpd,parse_part_body,1},{couch_httpd,parse_multipart_request,3},{couch_doc,'-doc_from_multi_part_stream/2-fun-1-'...

Is this a known bug, or should I file something?

—Jens

* Well, Couchbase Single Server 2.0.0dev4, which I think is basically CouchDB 1.1.1.

Robert Newson

unread,
Feb 6, 2012, 1:33:11 PM2/6/12
to us...@couchdb.apache.org
Pretty obvious bug, yes. We're attempting to evaluate whether the atom
'chunked' is greater than zero.

>receive_request_data(Req) ->
> receive_request_data(Req, couch_httpd:body_length(Req)).
>
>receive_request_data(Req, LenLeft) when LenLeft > 0 ->

Alexander Gabriel

unread,
Feb 6, 2012, 2:19:42 PM2/6/12
to us...@couchdb.apache.org
oh, I spent my last weekend trying to get a multipart upload working
unsuccessfully too. Is it possible to see when this problem has been
solved? Or else: How is body length precomputed then communicated?

Alex

--

***********************************************************

Alexander Gabriel
Wiesenstrasse 22
8800 Thalwil
079/ 372 51 64
al...@barbalex.ch
www.barbalex.ch

Jens Alfke

unread,
Feb 6, 2012, 4:22:13 PM2/6/12
to us...@couchdb.apache.org

On Feb 6, 2012, at 11:19 AM, Alexander Gabriel wrote:

oh, I spent my last weekend trying to get a multipart upload working
unsuccessfully too. Is it possible to see when this problem has been
solved?

You can track the bug report I just filed: https://issues.apache.org/jira/browse/COUCHDB-1403

Or else: How is body length precomputed then communicated?

Not sure exactly what you mean; in my case I worked around the bug by computing the body length (by adding up the sizes of the attachment files and MIME boundary strings) then set that as a Content-Length header on the request; this tells the HTTP library I use (NSURLConnection on Mac OS) not to use chunked encoding.

—Jens

Alexander Gabriel

unread,
Feb 6, 2012, 8:49:39 PM2/6/12
to us...@couchdb.apache.org
Thanks a lot!
Alex


2012/2/6 Jens Alfke <je...@couchbase.com>

Reply all
Reply to author
Forward
0 new messages