summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-10-12 00:15:46 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-10-12 00:19:36 +0200
commit5eae6db86b483413af605dc1fa8ff6fb1daa1dbb (patch)
tree50c3034372a74677b564e58599d07815c0b29cba
parentc945e27465532d768cc6012c8737f4c74b59fd9e (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.
-rw-r--r--po/disfluid.pot28
-rw-r--r--po/fr.po28
-rw-r--r--src/scm/webid-oidc/cache.scm22
-rw-r--r--src/scm/webid-oidc/resource-server.scm9
4 files changed, 48 insertions, 39 deletions
diff --git a/po/disfluid.pot b/po/disfluid.pot
index 1c36a1d..edce593 100644
--- a/po/disfluid.pot
+++ b/po/disfluid.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: disfluid SNAPSHOT\n"
"Report-Msgid-Bugs-To: vivien@planete-kraus.eu\n"
-"POT-Creation-Date: 2021-10-11 16:45+0200\n"
+"POT-Creation-Date: 2021-10-12 00:18+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -345,7 +345,7 @@ msgid "The application you are trying to authorize behaved unexpectedly."
msgstr ""
#: src/scm/webid-oidc/authorization-page-unsafe.scm:126
-#: src/scm/webid-oidc/resource-server.scm:291
+#: src/scm/webid-oidc/resource-server.scm:298
msgid "reason-phrase|Found"
msgstr ""
@@ -380,7 +380,7 @@ msgstr ""
msgid "Cache miss for ~a: ~s~%"
msgstr ""
-#: src/scm/webid-oidc/cache.scm:261
+#: src/scm/webid-oidc/cache.scm:263
#, scheme-format
msgid "Cache entry for ~a varies.\n"
msgstr ""
@@ -1027,7 +1027,7 @@ msgid "The port should be a number between 0 and 65535.\n"
msgstr ""
#: src/scm/webid-oidc/hello-world.scm:159
-#: src/scm/webid-oidc/resource-server.scm:312
+#: src/scm/webid-oidc/resource-server.scm:319
msgid "reason-phrase|Unauthorized"
msgstr ""
@@ -1040,7 +1040,7 @@ msgid "<p>This page requires authentication with Solid.</p>"
msgstr ""
#: src/scm/webid-oidc/hello-world.scm:179
-#: src/scm/webid-oidc/resource-server.scm:320
+#: src/scm/webid-oidc/resource-server.scm:327
msgid "reason-phrase|Method Not Allowed"
msgstr ""
@@ -2096,42 +2096,42 @@ msgid "~a: authentication failure\n"
msgstr ""
#: src/scm/webid-oidc/resource-server.scm:158
-#: src/scm/webid-oidc/resource-server.scm:343
+#: src/scm/webid-oidc/resource-server.scm:350
msgid "reason-phrase|Precondition Failed"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:188
+#: src/scm/webid-oidc/resource-server.scm:195
msgid "The owner is not defined."
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:257
+#: src/scm/webid-oidc/resource-server.scm:264
msgid "reason-phrase|Created"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:280
+#: src/scm/webid-oidc/resource-server.scm:287
#, scheme-format
msgid "~a: ignoring a group that cannot be fetched: ~a\n"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:284
+#: src/scm/webid-oidc/resource-server.scm:291
#, scheme-format
msgid "~a: ignoring a group that cannot be fetched\n"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:308
+#: src/scm/webid-oidc/resource-server.scm:315
#: src/scm/webid-oidc/token-endpoint.scm:104
msgid "reason-phrase|Forbidden"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:329
+#: src/scm/webid-oidc/resource-server.scm:336
msgid "reason-phrase|Conflict"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:336
+#: src/scm/webid-oidc/resource-server.scm:343
msgid "reason-phrase|Unsupported Media Type"
msgstr ""
-#: src/scm/webid-oidc/resource-server.scm:350
+#: src/scm/webid-oidc/resource-server.scm:357
msgid "reason-phrase|Not Acceptable"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index c99f37f..0b36920 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: webid-oidc 0.0.0\n"
"Report-Msgid-Bugs-To: vivien@planete-kraus.eu\n"
-"POT-Creation-Date: 2021-10-11 16:45+0200\n"
+"POT-Creation-Date: 2021-10-12 00:18+0200\n"
"PO-Revision-Date: 2021-10-11 16:45+0200\n"
"Last-Translator: Vivien Kraus <vivien@planete-kraus.eu>\n"
"Language-Team: French <vivien@planete-kraus.eu>\n"
@@ -377,7 +377,7 @@ msgstr ""
"L’application que vous essayez d’autoriser se comporte de façon inattendue."
#: src/scm/webid-oidc/authorization-page-unsafe.scm:126
-#: src/scm/webid-oidc/resource-server.scm:291
+#: src/scm/webid-oidc/resource-server.scm:298
msgid "reason-phrase|Found"
msgstr "Trouvé"
@@ -414,7 +414,7 @@ msgstr "En nettoyant le cache : ~a : ~a~%"
msgid "Cache miss for ~a: ~s~%"
msgstr "Échec de cache pour ~a : ~s~%"
-#: src/scm/webid-oidc/cache.scm:261
+#: src/scm/webid-oidc/cache.scm:263
#, scheme-format
msgid "Cache entry for ~a varies.\n"
msgstr "L’entrée de cache pour ~a varie.\n"
@@ -1130,7 +1130,7 @@ msgid "The port should be a number between 0 and 65535.\n"
msgstr "Le port doit être un nombre entre 0 et 65535.\n"
#: src/scm/webid-oidc/hello-world.scm:159
-#: src/scm/webid-oidc/resource-server.scm:312
+#: src/scm/webid-oidc/resource-server.scm:319
msgid "reason-phrase|Unauthorized"
msgstr "Non Autorisé"
@@ -1143,7 +1143,7 @@ msgid "<p>This page requires authentication with Solid.</p>"
msgstr "<p>Cette page requiert une authentification avec Solid.</p>"
#: src/scm/webid-oidc/hello-world.scm:179
-#: src/scm/webid-oidc/resource-server.scm:320
+#: src/scm/webid-oidc/resource-server.scm:327
msgid "reason-phrase|Method Not Allowed"
msgstr "Méthode Non Autorisée"
@@ -2477,42 +2477,42 @@ msgid "~a: authentication failure\n"
msgstr "~a : échec d’authentification\n"
#: src/scm/webid-oidc/resource-server.scm:158
-#: src/scm/webid-oidc/resource-server.scm:343
+#: src/scm/webid-oidc/resource-server.scm:350
msgid "reason-phrase|Precondition Failed"
msgstr "Échec de Précondition"
-#: src/scm/webid-oidc/resource-server.scm:188
+#: src/scm/webid-oidc/resource-server.scm:195
msgid "The owner is not defined."
msgstr "Le propriétaire n’est pas défini."
-#: src/scm/webid-oidc/resource-server.scm:257
+#: src/scm/webid-oidc/resource-server.scm:264
msgid "reason-phrase|Created"
msgstr "Créé"
-#: src/scm/webid-oidc/resource-server.scm:280
+#: src/scm/webid-oidc/resource-server.scm:287
#, scheme-format
msgid "~a: ignoring a group that cannot be fetched: ~a\n"
msgstr "~a : j’ignore un groupe qui n’a pas pu être téléchargé : ~a\n"
-#: src/scm/webid-oidc/resource-server.scm:284
+#: src/scm/webid-oidc/resource-server.scm:291
#, scheme-format
msgid "~a: ignoring a group that cannot be fetched\n"
msgstr "~a : j’ignore un groupe qui ne peut pas être téléchargé\n"
-#: src/scm/webid-oidc/resource-server.scm:308
+#: src/scm/webid-oidc/resource-server.scm:315
#: src/scm/webid-oidc/token-endpoint.scm:104
msgid "reason-phrase|Forbidden"
msgstr "Interdit"
-#: src/scm/webid-oidc/resource-server.scm:329
+#: src/scm/webid-oidc/resource-server.scm:336
msgid "reason-phrase|Conflict"
msgstr "Conflit"
-#: src/scm/webid-oidc/resource-server.scm:336
+#: src/scm/webid-oidc/resource-server.scm:343
msgid "reason-phrase|Unsupported Media Type"
msgstr "Type de Média Non Supporté"
-#: src/scm/webid-oidc/resource-server.scm:350
+#: src/scm/webid-oidc/resource-server.scm:357
msgid "reason-phrase|Not Acceptable"
msgstr "Inacceptable"
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 ()