Uploaded image for project: 'CouchDB'
  1. CouchDB
  2. COUCHDB-1403

Multipart upload fails with exception if request body is chunked

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Duplicate
    • 1.1.1
    • None
    • HTTP Interface
    • None
    • Mac OS X 10.7.3, Couchbase Single Server 2.0.0dev4 (based on CouchDB 1.1.1)

    Description

      CouchDB doesn't correctly parse MIME multipart PUT/POST requests when the HTTP transfer is chunked. It generates an Erlang exception, and the client sees that the socket was closed unexpectedly.

      [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'...

      The source looks like:

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

      Robert Newson commented on the user@ list: "Pretty obvious bug, yes. We're attempting to evaluate whether the atom 'chunked' is greater than zero."

      The obvious workaround – don't use chunked – may not be available to clients. This level of encoding is generally performed by the browser or client HTTP library, and the app level code may not have control over whether it's performed.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              snej Jens Alfke
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: