Mailing List Archive

[6.0] 4763c778d Move the 304 logic into a separate function for clarity.
commit 4763c778dad9d54b1ed1bb3bb37ec64fbac0a067
Author: Poul-Henning Kamp <phk@FreeBSD.org>
Date: Mon Jan 13 09:11:06 2020 +0000

Move the 304 logic into a separate function for clarity.

conflicts:
bin/varnishd/cache/cache_fetch.c

diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 92f6feb70..970a10011 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -250,6 +250,43 @@ vbf_stp_retry(struct worker *wrk, struct busyobj *bo)
return (F_STP_STARTFETCH);
}

+/*--------------------------------------------------------------------
+ * 304 setup logic
+ */
+
+static int
+vbf_304_logic(struct busyobj *bo)
+{
+ if (bo->stale_oc != NULL &&
+ ObjCheckFlag(bo->wrk, bo->stale_oc, OF_IMSCAND)) {
+ AZ(bo->stale_oc->flags & (OC_F_HFM|OC_F_PRIVATE));
+ if (ObjCheckFlag(bo->wrk, bo->stale_oc, OF_CHGCE)) {
+ /*
+ * If a VFP changed C-E in the stored
+ * object, then don't overwrite C-E from
+ * the IMS fetch, and we must weaken any
+ * new ETag we get.
+ */
+ http_Unset(bo->beresp, H_Content_Encoding);
+ RFC2616_Weaken_Etag(bo->beresp);
+ }
+ http_Unset(bo->beresp, H_Content_Length);
+ HTTP_Merge(bo->wrk, bo->stale_oc, bo->beresp);
+ assert(http_IsStatus(bo->beresp, 200));
+ bo->was_304 = 1;
+ } else if (!bo->do_pass) {
+ /*
+ * Backend sent unallowed 304
+ */
+ VSLb(bo->vsl, SLT_Error,
+ "304 response but not conditional fetch");
+ bo->htc->doclose = SC_RX_BAD;
+ VDI_Finish(bo->wrk, bo);
+ return (-1);
+ }
+ return (1);
+}
+
/*--------------------------------------------------------------------
* Setup bereq from bereq0, run vcl_backend_fetch
*/
@@ -346,35 +383,8 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
AZ(bo->do_esi);
AZ(bo->was_304);

- if (http_IsStatus(bo->beresp, 304)) {
- if (bo->stale_oc != NULL &&
- ObjCheckFlag(bo->wrk, bo->stale_oc, OF_IMSCAND)) {
- AZ(bo->stale_oc->flags & (OC_F_HFM|OC_F_PRIVATE));
- if (ObjCheckFlag(bo->wrk, bo->stale_oc, OF_CHGCE)) {
- /*
- * If a VFP changed C-E in the stored
- * object, then don't overwrite C-E from
- * the IMS fetch, and we must weaken any
- * new ETag we get.
- */
- http_Unset(bo->beresp, H_Content_Encoding);
- RFC2616_Weaken_Etag(bo->beresp);
- }
- http_Unset(bo->beresp, H_Content_Length);
- HTTP_Merge(bo->wrk, bo->stale_oc, bo->beresp);
- assert(http_IsStatus(bo->beresp, 200));
- bo->was_304 = 1;
- } else if (!bo->do_pass) {
- /*
- * Backend sent unallowed 304
- */
- VSLb(bo->vsl, SLT_Error,
- "304 response but not conditional fetch");
- bo->htc->doclose = SC_RX_BAD;
- VDI_Finish(bo->wrk, bo);
- return (F_STP_ERROR);
- }
- }
+ if (http_IsStatus(bo->beresp, 304) && vbf_304_logic(bo) < 0)
+ return (F_STP_ERROR);

VCL_backend_response_method(bo->vcl, wrk, NULL, bo, NULL);

_______________________________________________
varnish-commit mailing list
varnish-commit@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit