couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Joseph Davis (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COUCHDB-1123) Longpolling changes feed with filter and accidental Content-Length header stalls
Date Thu, 28 Apr 2011 21:07:03 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-1123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13026682#comment-13026682
] 

Paul Joseph Davis commented on COUCHDB-1123:
--------------------------------------------

First pass at a patch:


Index: src/couchdb/couch_httpd.erl
===================================================================
--- src/couchdb/couch_httpd.erl	(revision 1097601)
+++ src/couchdb/couch_httpd.erl	(working copy)
@@ -170,6 +170,15 @@
 handle_request(MochiReq, DefaultFun, UrlHandlers, DbUrlHandlers, 
     DesignUrlHandlers) ->
 
+    case {MochiReq:get(method), MochiReq:get(body_length)} of
+        {'GET', chunked} ->
+            throw(not_on_my_watch);
+        {'GET', Len} when is_integer(Len), Len > 0 ->
+            throw(not_on_my_watch);
+        _ ->
+            ok
+    end,
+
     MochiReq1 = couch_httpd_vhost:dispatch_host(MochiReq),
     
     handle_request_int(MochiReq1, DefaultFun,


> Longpolling changes feed with filter and accidental Content-Length header stalls
> --------------------------------------------------------------------------------
>
>                 Key: COUCHDB-1123
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1123
>             Project: CouchDB
>          Issue Type: Bug
>          Components: HTTP Interface
>    Affects Versions: 1.0.2
>         Environment: Mac OS X Snow Leopard, Ubuntu 10.10.
>            Reporter: Jyrki Pulliainen
>            Priority: Minor
>              Labels: changes, contentlength, couchdb, header, http
>
> CouchDB behaves erroneously when doing a GET request with Content-Length header to long
polling changes feed with filter set.
> Easiest way to reproduce:
> 1. Create a new DB
> 2. Create a single design doc with a filter that just returns true
> 3. Query database with curl: curl -v -H "Content-Length: 123" http://localhost:5984/database/_changes?feed=longpoll&filter=designdoc/filter
> At this point CouchDB behaves strangely. It does not wait for the client to feed the
Content-Length bytes of content (which I think is correct, since GET should not have payload),
instead, it returns 200 OK and starts the response with '{"results":['. However, no changes
done to database ever get emitted and the connection never gets closed, not even if explicit
timeout is set upon the request.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message