diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2015-02-13 13:39:50 +0100 |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@gnome.org> | 2015-02-17 08:37:57 +0100 |
commit | 8dcc74e0dd278c6cf0be119aa7f6f969f8418649 (patch) | |
tree | 9a623300db5463aa1cf1db4a692889624731d7e4 /tests/cache-test.c | |
parent | 7fa8478ef8d9e00b30519df149330ce581fb2632 (diff) | |
download | libsoup-8dcc74e0dd278c6cf0be119aa7f6f969f8418649.tar.gz |
cache: Do not revalidate resources that haven't expired even if must-revalidate is present
RFC2616 14.9.4
"When the must-revalidate directive is present in a response received by
a cache, that cache MUST NOT use the entry after it becomes stale to
respond to a subsequent request without first revalidating it with the origin server.
(I.e., the cache MUST do an end-to-end revalidation every time, if,
based solely on the origin server's Expires or max-age value, the cached
response is stale.)"
Update also the unit tests, since they were checking the wrong
behaviour.
https://bugzilla.gnome.org/show_bug.cgi?id=744468
Diffstat (limited to 'tests/cache-test.c')
-rw-r--r-- | tests/cache-test.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/tests/cache-test.c b/tests/cache-test.c index 543ef022..f332a3f7 100644 --- a/tests/cache-test.c +++ b/tests/cache-test.c @@ -288,9 +288,11 @@ do_basics_test (gconstpointer data) NULL); body2 = do_request (session, base_uri, "GET", "/2", NULL, "Test-Set-Last-Modified", "Fri, 01 Jan 2010 00:00:00 GMT", + "Test-Set-Cache-Control", "must-revalidate", NULL); body3 = do_request (session, base_uri, "GET", "/3", NULL, "Test-Set-Last-Modified", "Fri, 01 Jan 2010 00:00:00 GMT", + "Test-Set-Expires", "Sat, 02 Jan 2011 00:00:00 GMT", "Test-Set-Cache-Control", "must-revalidate", NULL); body4 = do_request (session, base_uri, "GET", "/4", NULL, @@ -316,6 +318,9 @@ do_basics_test (gconstpointer data) debug_printf (1, " Heuristically-fresh cached resource\n"); cmp = do_request (session, base_uri, "GET", "/2", NULL, NULL); + /* Not validated even if it has must-revalidate, because it hasn't expired */ + soup_test_assert (!last_request_validated, + "Request for /2 was validated"); soup_test_assert (!last_request_hit_network, "Request for /2 not filled from cache"); g_assert_cmpstr (body2, ==, cmp); @@ -338,10 +343,11 @@ do_basics_test (gconstpointer data) g_free (cmp); - /* Last-Modified + must-revalidate causes a conditional request */ + /* Expired + must-revalidate causes a conditional request */ debug_printf (1, " Unchanged must-revalidate resource w/ Last-Modified\n"); cmp = do_request (session, base_uri, "GET", "/3", NULL, "Test-Set-Last-Modified", "Fri, 01 Jan 2010 00:00:00 GMT", + "Test-Set-Expires", "Sat, 02 Jan 2011 00:00:00 GMT", "Test-Set-Cache-Control", "must-revalidate", NULL); soup_test_assert (last_request_validated, @@ -356,6 +362,7 @@ do_basics_test (gconstpointer data) debug_printf (1, " Changed must-revalidate resource w/ Last-Modified\n"); cmp = do_request (session, base_uri, "GET", "/3", NULL, "Test-Set-Last-Modified", "Sat, 02 Jan 2010 00:00:00 GMT", + "Test-Set-Expires", "Sat, 02 Jan 2011 00:00:00 GMT", "Test-Set-Cache-Control", "must-revalidate", NULL); soup_test_assert (last_request_validated, @@ -455,6 +462,7 @@ do_cancel_test (gconstpointer data) NULL); body2 = do_request (session, base_uri, "GET", "/2", NULL, "Test-Set-Last-Modified", "Fri, 01 Jan 2010 00:00:00 GMT", + "Test-Set-Expires", "Fri, 01 Jan 2011 00:00:00 GMT", "Test-Set-Cache-Control", "must-revalidate", NULL); |