From 47895d920228edfb195e62ff04d5aa8ef667ed5b Mon Sep 17 00:00:00 2001 From: Noah Slater Date: Tue, 24 Feb 2009 18:10:19 +0000 Subject: added newline to JSON responses, closes COUCHDB-107 git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@747465 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/test/config.js | 7 ++++--- share/www/script/test/content_negotiation.js | 4 ++++ src/couchdb/couch_httpd.erl | 4 +++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/share/www/script/test/config.js b/share/www/script/test/config.js index a156be37..debe499a 100644 --- a/share/www/script/test/config.js +++ b/share/www/script/test/config.js @@ -15,7 +15,7 @@ couchTests.config = function(debug) { db.deleteDb(); db.createDb(); if (debug) debugger; - + // test that /_config returns all the settings var xhr = CouchDB.request("GET", "/_config"); var config = JSON.parse(xhr.responseText); @@ -49,7 +49,7 @@ couchTests.config = function(debug) { T(config.httpd_global_handlers._config); T(config.log.level); T(config.query_servers.javascript); - + // test that settings can be altered xhr = CouchDB.request("PUT", "/_config/test/foo",{ body : JSON.stringify("bar"), @@ -62,5 +62,6 @@ couchTests.config = function(debug) { // you can get a single key xhr = CouchDB.request("GET", "/_config/test/foo"); - T(xhr.responseText == '"bar"'); + config = JSON.parse(xhr.responseText); + T(config == "bar"); }; diff --git a/share/www/script/test/content_negotiation.js b/share/www/script/test/content_negotiation.js index 757105ff..9df79bcd 100644 --- a/share/www/script/test/content_negotiation.js +++ b/share/www/script/test/content_negotiation.js @@ -20,6 +20,10 @@ couchTests.content_negotiation = function(debug) { xhr = CouchDB.request("GET", "/test_suite_db/"); T(xhr.getResponseHeader("Content-Type") == "text/plain;charset=utf-8"); + // make sure JSON responses end in a newline + var text = xhr.responseText; + T(text[text.length-1] == "\n"); + xhr = CouchDB.request("GET", "/test_suite_db/", { headers: {"Accept": "text/html;text/plain;*/*"} }); diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl index 9b175825..3365e88c 100644 --- a/src/couchdb/couch_httpd.erl +++ b/src/couchdb/couch_httpd.erl @@ -367,7 +367,8 @@ send_json(Req, Code, Headers, Value) -> {"Content-Type", negotiate_content_type(Req)}, {"Cache-Control", "must-revalidate"} ], - send_response(Req, Code, DefaultHeaders ++ Headers, ?JSON_ENCODE(Value)). + send_response(Req, Code, DefaultHeaders ++ Headers, + list_to_binary([?JSON_ENCODE(Value), $\n])). start_json_response(Req, Code) -> start_json_response(Req, Code, []). @@ -380,6 +381,7 @@ start_json_response(Req, Code, Headers) -> start_chunked_response(Req, Code, DefaultHeaders ++ Headers). end_json_response(Resp) -> + send_chunk(Resp, [$\n]), send_chunk(Resp, []). -- cgit v1.2.3