[ https://issues.apache.org/jira/browse/COUCHDB-2583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14377516#comment-14377516 ]
ASF GitHub Bot commented on COUCHDB-2583: ----------------------------------------- Github user samueltardieu closed the pull request at: https://github.com/apache/couchdb/pull/304 > ensure_full_commit requires empty but typed content or it will unexpectedly > drops the connection > ------------------------------------------------------------------------------------------------ > > Key: COUCHDB-2583 > URL: https://issues.apache.org/jira/browse/COUCHDB-2583 > Project: CouchDB > Issue Type: Bug > Security Level: public(Regular issues) > Components: HTTP Interface > Affects Versions: 1.6.1 > Reporter: Samuel Tardieu > Fix For: 2.0.0, 1.7.0 > > Attachments: 0001-Consume-JSON-body-even-if-ignored.patch > > > When given an non-empty (but valid) JSON content, some methods such as > {{_ensure_full_commit}} will abruptly drop a persistent connection instead of > waiting for a new HTTP request even though no error is signaled in CouchDB > logs: > {code:title=Request} > POST /testdb1/_ensure_full_commit HTTP/1.1 > Host: localhost:5984 > Accept: application/json > Content-Type: application/json > Content-Length: 2 > {} > {code} > {code:title=Response} > HTTP/1.1 201 Created > Server: CouchDB/1.6.1 (Erlang OTP/17) > Date: Mon, 16 Feb 2015 11:49:11 GMT > Content-Type: application/json > Content-Length: 53 > Cache-Control: must-revalidate > {"ok":true,"instance_start_time":"1424085277160411"} > {code} > [connection is closed without warning by CouchDB at this point] > To remedy that, one could try to give an empty content, but some frameworks > (such as spray.io) will systematically omit the {{Content-Type}} header in > this case since it makes little sense to type empty content. However, CouchDB > will reject the request even though it does *not* want any content: > {code:title=Request} > POST /testdb1/_ensure_full_commit HTTP/1.1 > Host: localhost:5984 > Accept: application/json > Content-Length: 0 > {code} > {code:title=Response} > HTTP/1.1 415 Unsupported Media Type > Server: CouchDB/1.6.1 (Erlang OTP/17) > Date: Mon, 16 Feb 2015 11:55:52 GMT > Content-Type: application/json > Content-Length: 78 > Cache-Control: must-revalidate > {"error":"bad_content_type","reason":"Content-Type must be application/json"} > {code} > This makes it impossible to use those methods with such frameworks. CouchDB > should not drop the connection and ignore the data if {{Content-Length}} is > not 0, nor require that data be typed with {{application/json}} if it is > going to ignore it anyway or if it requires it to be empty. -- This message was sent by Atlassian JIRA (v6.3.4#6332)