summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/www/script/test/uuids.js19
-rw-r--r--src/couchdb/couch_httpd_misc_handlers.erl17
2 files changed, 25 insertions, 11 deletions
diff --git a/share/www/script/test/uuids.js b/share/www/script/test/uuids.js
index 50621678..4de7ce90 100644
--- a/share/www/script/test/uuids.js
+++ b/share/www/script/test/uuids.js
@@ -11,16 +11,25 @@
// the License.
couchTests.uuids = function(debug) {
+ var etags = [];
var testHashBustingHeaders = function(xhr) {
T(xhr.getResponseHeader("Cache-Control").match(/no-cache/));
T(xhr.getResponseHeader("Pragma") == "no-cache");
- var currentTime = new Date();
- var expiresHeader = Date.parse(xhr.getResponseHeader("Expires"));
- var dateHeader = Date.parse(xhr.getResponseHeader("Date"));
+ var newetag = xhr.getResponseHeader("ETag");
+ T(etags.indexOf(newetag) < 0);
+ etags[etags.length] = newetag;
+
+ // Removing the time based tests as they break easily when
+ // running CouchDB on a remote server in regards to the browser
+ // running the Futon test suite.
+ //
+ //var currentTime = new Date();
+ //var expiresHeader = Date.parse(xhr.getResponseHeader("Expires"));
+ //var dateHeader = Date.parse(xhr.getResponseHeader("Date"));
- T(expiresHeader < currentTime);
- T(currentTime - dateHeader < 3000);
+ //T(expiresHeader < currentTime);
+ //T(currentTime - dateHeader < 3000);
};
var db = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"false"});
diff --git a/src/couchdb/couch_httpd_misc_handlers.erl b/src/couchdb/couch_httpd_misc_handlers.erl
index 37ed709f..24eaa82e 100644
--- a/src/couchdb/couch_httpd_misc_handlers.erl
+++ b/src/couchdb/couch_httpd_misc_handlers.erl
@@ -106,13 +106,18 @@ handle_restart_req(Req) ->
handle_uuids_req(#httpd{method='GET'}=Req) ->
Count = list_to_integer(couch_httpd:qs_value(Req, "count", "1")),
- CacheBustingHeaders = [{"Date", httpd_util:rfc1123_date()},
- {"Cache-Control", "no-cache"},
- % Past date, ON PURPOSE!
- {"Expires", "Fri, 01 Jan 1990 00:00:00 GMT"},
- {"Pragma", "no-cache"}],
UUIDs = [couch_uuids:new() || _ <- lists:seq(1, Count)],
- send_json(Req, 200, CacheBustingHeaders, {[{<<"uuids">>, UUIDs}]});
+ couch_httpd:etag_respond(Req, erlang:md5(UUIDs), fun() ->
+ CacheBustingHeaders = [
+ {"Date", httpd_util:rfc1123_date()},
+ {"Cache-Control", "no-cache"},
+ % Past date, ON PURPOSE!
+ {"Expires", "Fri, 01 Jan 1990 00:00:00 GMT"},
+ {"Pragma", "no-cache"},
+ {"ETag", erlang:md5(UUIDs)}
+ ],
+ send_json(Req, 200, CacheBustingHeaders, {[{<<"uuids">>, UUIDs}]})
+ end);
handle_uuids_req(Req) ->
send_method_not_allowed(Req, "GET").