MINOR: http: update the list of cacheable status codes as per RFC7231
Since RFC2616, the following codes were added to the list of codes
cacheable by default : 204, 404, 405, 414, 501. For now this it only
checked by the checkcache option to detect cacheable cookies.
diff --git a/doc/configuration.txt b/doc/configuration.txt
index a4b3652..9c22afe 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -5438,8 +5438,9 @@
proxy. When this option is enabled, the only responses which can be delivered
to the client are :
- all those without "Set-Cookie" header ;
- - all those with a return code other than 200, 203, 206, 300, 301, 410,
- provided that the server has not set a "Cache-control: public" header ;
+ - all those with a return code other than 200, 203, 204, 206, 300, 301,
+ 404, 405, 410, 414, 501, provided that the server has not set a
+ "Cache-control: public" header field ;
- all those that result from a request using a method other than GET, HEAD,
OPTIONS, TRACE, provided that the server has not set a 'Cache-Control:
public' header field ;
diff --git a/src/proto_http.c b/src/proto_http.c
index ebc72c9..3e17021 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -5388,15 +5388,24 @@
switch (txn->status) {
case 200:
case 203:
+ case 204:
case 206:
case 300:
case 301:
+ case 404:
+ case 405:
case 410:
- /* RFC2616 @13.4:
- * "A response received with a status code of
- * 200, 203, 206, 300, 301 or 410 MAY be stored
- * by a cache (...) unless a cache-control
- * directive prohibits caching."
+ case 414:
+ case 501:
+ /* RFC7231#6.1:
+ * Responses with status codes that are defined as
+ * cacheable by default (e.g., 200, 203, 204, 206,
+ * 300, 301, 404, 405, 410, 414, and 501 in this
+ * specification) can be reused by a cache with
+ * heuristic expiration unless otherwise indicated
+ * by the method definition or explicit cache
+ * controls [RFC7234]; all other status codes are
+ * not cacheable by default.
*
* RFC7234#4:
* A cache MUST write through requests with methods