Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search Sign up Reseting focus

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

apache / couchdb Public

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JS-rewritten post/put hangs or returns bad_request #1612

ermouth opened this issue Sep 19, 2018 · 0 comments

JS-rewritten post/put hangs or returns bad_request #1612

ermouth opened this issue Sep 19, 2018 · 0 comments

Comments

Contributor ermouth commented Sep 19, 2018 •

Expected Behavior

JS rewrite, returning should send body to the rewritten endpoint.

Current Behavior

The body field of rewrite fn returned obj is in some cases dropped. If source request was POST/PUT, the rewritten requests hangs, or, if source request was GET-like, bad_request error is sent as response.

Steps to Reproduce

  1. Create empty bucket named, say, zz
  2. Put design doc with rewrites into the bucket. Below ddoc is intended to create new random doc on each request to _design/n/_rewrite endpoint:
< "_id": "_design/n", "rewrites": "function (r) ,\n\t\tbody:JSON.stringify()\n\t>\n>" > 
  1. Call http://couchdb_ip/zz/_design/n/_rewrite .

Solution

The issue is caused by cleaning-up rewritten request prematurely here:
https://github.com/apache/couchdb/blob/master/src/chttpd/src/chttpd_rewrite.erl#L67.
It should only be cleaned if we have no body to send.

That line (L67) should be replaced with this code:

 Body = case couch_util:get_value(>, Props) of undefined -> erlang:get(mochiweb_request_body); B -> B end, case Body of undefined -> NewMochiReq:cleanup(); _ -> erlang:put(mochiweb_request_body, Body) end, 

It seems to fix issue completely.

Your Environment

The text was updated successfully, but these errors were encountered: