1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

Extend handling of "Cache-Control" header.

* module/web/http.scm ("Cache-Control"): Value for `max-stale' is
  optional.  Strict validation for value-less directives (`no-store',
  etc.).  String values optional for "cache-extension" directives.
* test-suite/tests/web-http.test: Value for `max-stale' is optional.
This commit is contained in:
Daniel Hartwig 2011-11-27 22:37:24 +08:00 committed by Andy Wingo
parent cc8afa2b36
commit 321770b2a3
2 changed files with 11 additions and 3 deletions

View file

@ -1240,19 +1240,25 @@ phrase\"."
(declare-key-value-list-header! "Cache-Control"
(lambda (k v-str)
(case k
((max-age max-stale min-fresh s-maxage)
((max-age min-fresh s-maxage)
(parse-non-negative-integer v-str))
((max-stale)
(and v-str (parse-non-negative-integer v-str)))
((private no-cache)
(and v-str (split-header-names v-str)))
(else v-str)))
(lambda (k v)
(case k
((max-age max-stale min-fresh s-maxage)
((max-age min-fresh s-maxage)
(non-negative-integer? v))
((max-stale)
(or (not v) (non-negative-integer? v)))
((private no-cache)
(or (not v) (list-of-header-names? v)))
((no-store no-transform only-if-cache must-revalidate proxy-revalidate)
(not v))
(else
(not v))))
(or (not v) (string? v)))))
(lambda (k v port)
(cond
((string? v) (display v port))

View file

@ -83,6 +83,8 @@
'((private . (foo))))
(pass-if-parse cache-control "no-cache,max-age=10"
'(no-cache (max-age . 10)))
(pass-if-parse cache-control "max-stale" '(max-stale))
(pass-if-parse cache-control "max-stale=10" '((max-stale . 10)))
(pass-if-parse connection "close" '(close))
(pass-if-parse connection "Content-Encoding" '(content-encoding))