diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-10-12 00:15:46 +0200 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-10-12 00:19:36 +0200 |
commit | 5eae6db86b483413af605dc1fa8ff6fb1daa1dbb (patch) | |
tree | 50c3034372a74677b564e58599d07815c0b29cba /src | |
parent | c945e27465532d768cc6012c8737f4c74b59fd9e (diff) |
caching: there is a precise list of headers that belong to the updated resource
The 304 Not Modified response is expected to set exactly the
caching-related headers, but not any other.
Diffstat (limited to 'src')
-rw-r--r-- | src/scm/webid-oidc/cache.scm | 22 | ||||
-rw-r--r-- | src/scm/webid-oidc/resource-server.scm | 9 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/scm/webid-oidc/cache.scm b/src/scm/webid-oidc/cache.scm index 4bd3e09..ec4d6b2 100644 --- a/src/scm/webid-oidc/cache.scm +++ b/src/scm/webid-oidc/cache.scm @@ -232,16 +232,18 @@ (values (build-response #:headers - (append - (response-headers new-response) - (filter - (lambda (h) - (case (car h) - ((cache-control content-location date etag expires vary) - ;; These are overriden by new-response - #f) - (else #t))) - (response-headers response)))) + (let ((new-header? + (lambda (h) + (case (car h) + ((cache-control content-location date etag expires vary) + #t) + (else #f))))) + (append + (filter new-header? (response-headers new-response)) + (filter + (lambda (h) + (not (new-header? h))) + (response-headers response))))) body) (values new-response new-response-body))) ((p:anonymous-http-request) uri #:headers headers)))) diff --git a/src/scm/webid-oidc/resource-server.scm b/src/scm/webid-oidc/resource-server.scm index 989abd9..d22e2b7 100644 --- a/src/scm/webid-oidc/resource-server.scm +++ b/src/scm/webid-oidc/resource-server.scm @@ -171,7 +171,14 @@ (build-response #:code 304 #:reason-phrase (W_ "reason-phrase|Not Modified") - #:headers headers) + #:headers + (filter + (lambda (h) + (case (car h) + ((cache-control content-location date etag expires vary) + #t) + (else #f))) + headers)) #f user)) (lambda () |