[master] 9ec14234c Don't error on short range response

Poul-Henning Kamp phk at FreeBSD.org
Mon Jan 16 14:39:11 UTC 2023


commit 9ec14234c889324ffdc8e7362fdd1073626dbc8b
Author: Gil Pedersen <git at gpost.dk>
Date:   Wed Dec 14 13:42:55 2022 +0100

    Don't error on short range response

diff --git a/bin/varnishd/cache/cache_range.c b/bin/varnishd/cache/cache_range.c
index 695ca0211..ac1a45bc6 100644
--- a/bin/varnishd/cache/cache_range.c
+++ b/bin/varnishd/cache/cache_range.c
@@ -55,7 +55,8 @@ vrg_range_fini(struct vdp_ctx *vdc, void **priv)
 
 	CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC);
 	CAST_OBJ_NOTNULL(vrg_priv, *priv, VRG_PRIV_MAGIC);
-	if (vrg_priv->range_off < vrg_priv->range_high) {
+	if (vrg_priv->req->resp_len >= 0 &&
+	    vrg_priv->range_off < vrg_priv->range_high) {
 		Req_Fail(vrg_priv->req, SC_RANGE_SHORT);
 		vrg_priv->req->vdc->retval = -1;
 	}
diff --git a/bin/varnishtest/tests/r01506.vtc b/bin/varnishtest/tests/r01506.vtc
index 92192653a..c9f07d0e9 100644
--- a/bin/varnishtest/tests/r01506.vtc
+++ b/bin/varnishtest/tests/r01506.vtc
@@ -2,7 +2,7 @@ varnishtest "range requests on streamed response"
 
 barrier b1 cond 2 -cyclic
 
-server s1 -repeat 4 {
+server s1 -repeat 5 {
 	rxreq
 	txresp -nolen \
 	    -hdr "Transfer-Encoding: chunked" \
@@ -24,11 +24,6 @@ varnish v1 -vcl+backend {} -start
 
 varnish v1 -cliok "param.set debug +syncvsl"
 
-logexpect l1 -v v1 -g session {
-	expect 0 1000	Begin		sess
-	expect * =	SessClose	RANGE_SHORT
-} -start
-
 client c1 {
 	txreq -url /1 -hdr "Range: bytes=17-101"
 	rxresphdrs
@@ -65,7 +60,15 @@ client c1 {
 	barrier b1 sync
 	rxrespbody
 	expect resp.bodylen == 34
+	delay .1
+
+	# Keeps working after short response
+	txreq -url /5 -hdr "Range: bytes=17-101"
+	rxresphdrs
+	expect resp.status == 206
+	barrier b1 sync
+	rxrespbody
+	expect resp.bodylen == 85
 } -run
 
-varnish v1 -expect sc_range_short == 1
-logexpect l1 -wait
+varnish v1 -expect sc_range_short == 0
diff --git a/bin/varnishtest/tests/r02258.vtc b/bin/varnishtest/tests/r02258.vtc
index 552b1b47e..84eabdf8e 100644
--- a/bin/varnishtest/tests/r02258.vtc
+++ b/bin/varnishtest/tests/r02258.vtc
@@ -14,6 +14,11 @@ server s1 {
 
 varnish v1 -vcl+backend { } -start
 
+logexpect l1 -v v1 -g session {
+	expect 0 1000	Begin		sess
+	expect * =	SessClose	RANGE_SHORT
+} -start
+
 client c1 {
 	txreq -hdr "range: bytes=0-16"
 	rxresp -no_obj
@@ -24,6 +29,7 @@ client c1 {
 } -run
 
 varnish v1 -expect MAIN.sc_range_short == 1
+logexpect l1 -wait
 
 delay .3
 
@@ -43,3 +49,5 @@ client c2 {
 		expect rst.err == INTERNAL_ERROR
 	} -run
 } -run
+
+varnish v1 -expect MAIN.sc_range_short == 1


More information about the varnish-commit mailing list