Return-Path: Delivered-To: apmail-couchdb-commits-archive@www.apache.org Received: (qmail 25278 invoked from network); 21 Jul 2009 09:17:25 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 21 Jul 2009 09:17:25 -0000 Received: (qmail 82684 invoked by uid 500); 21 Jul 2009 09:18:30 -0000 Delivered-To: apmail-couchdb-commits-archive@couchdb.apache.org Received: (qmail 82604 invoked by uid 500); 21 Jul 2009 09:18:30 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 82595 invoked by uid 99); 21 Jul 2009 09:18:30 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Jul 2009 09:18:30 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Jul 2009 09:18:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id C5A612388895; Tue, 21 Jul 2009 09:18:07 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r796207 - in /couchdb/trunk: share/www/script/test/changes.js src/couchdb/couch_httpd_db.erl Date: Tue, 21 Jul 2009 09:18:07 -0000 To: commits@couchdb.apache.org From: jan@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090721091807.C5A612388895@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jan Date: Tue Jul 21 09:18:07 2009 New Revision: 796207 URL: http://svn.apache.org/viewvc?rev=796207&view=rev Log: Close jsonp response for _changes requests. Patch by Benoit Chesneau. Closes COUCHDB-418. Modified: couchdb/trunk/share/www/script/test/changes.js couchdb/trunk/src/couchdb/couch_httpd_db.erl Modified: couchdb/trunk/share/www/script/test/changes.js URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/changes.js?rev=796207&r1=796206&r2=796207&view=diff ============================================================================== --- couchdb/trunk/share/www/script/test/changes.js (original) +++ couchdb/trunk/share/www/script/test/changes.js Tue Jul 21 09:18:07 2009 @@ -10,6 +10,12 @@ // License for the specific language governing permissions and limitations under // the License. +function jsonp(obj) { + T(jsonp_flag == 0); + T(obj.results.length == 1 && obj.last_seq==1) + jsonp_flag = 1; +} + couchTests.changes = function(debug) { var db = new CouchDB("test_suite_db"); db.deleteDb(); @@ -30,6 +36,13 @@ T(resp.results.length == 1 && resp.last_seq==1) T(resp.results[0].changes[0].rev == docFoo._rev) + // test with callback + var xhr = CouchDB.request("GET", "/test_suite_db/_changes?callback=jsonp"); + T(xhr.status == 200); + jsonp_flag = 0; + eval(xhr.responseText); + T(jsonp_flag == 1); + req = CouchDB.request("GET", "/test_suite_db/_changes?continuous=true&timeout=10"); var resp = JSON.parse(req.responseText); Modified: couchdb/trunk/src/couchdb/couch_httpd_db.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_httpd_db.erl?rev=796207&r1=796206&r2=796207&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_httpd_db.erl (original) +++ couchdb/trunk/src/couchdb/couch_httpd_db.erl Tue Jul 21 09:18:07 2009 @@ -86,12 +86,11 @@ couch_db_update_notifier:stop(Notify), get_rest_db_updated() % clean out any remaining update messages end; - "false" -> {ok, {LastSeq, _Prepend}} = send_changes(Req, Resp, Db, StartSeq, <<"">>), send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [LastSeq])), - send_chunk(Resp, "") + end_json_response(Resp) end; handle_changes_req(#httpd{path_parts=[_,<<"_changes">>]}=Req, _Db) -> @@ -121,7 +120,7 @@ keep_sending_changes(Req, Resp, Db2, EndSeq, Prepend2, Timeout, TimeoutFun); stop -> send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [EndSeq])), - send_chunk(Resp, "") + end_json_response(Resp) end. send_changes(Req, Resp, Db, StartSeq, Prepend0) ->