Commit dc37be04 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Complete the #3354-saga and also make bereq.bodybytes account only

for the actual bytes in the body, not for the (chunked) overhead.
parent 7d90528f
...@@ -157,17 +157,11 @@ V1D_Deliver(struct req *req, struct boc *boc, int sendbody) ...@@ -157,17 +157,11 @@ V1D_Deliver(struct req *req, struct boc *boc, int sendbody)
sc = V1L_Close(req->wrk, &bytes); sc = V1L_Close(req->wrk, &bytes);
AZ(req->wrk->v1l); AZ(req->wrk->v1l);
/* Bytes accounting */ req->acct.resp_hdrbytes += hdrbytes;
if (bytes < hdrbytes) req->acct.resp_bodybytes += VDP_Close(req);
req->acct.resp_hdrbytes += bytes;
else {
req->acct.resp_hdrbytes += hdrbytes;
req->acct.resp_bodybytes += bytes - hdrbytes;
}
if (sc == SC_NULL && err && req->sp->fd >= 0) if (sc == SC_NULL && err && req->sp->fd >= 0)
sc = SC_REM_CLOSE; sc = SC_REM_CLOSE;
if (sc != SC_NULL) if (sc != SC_NULL)
Req_Fail(req, sc); Req_Fail(req, sc);
(void)VDP_Close(req);
} }
...@@ -39,8 +39,7 @@ varnish v1 -vcl+backend { ...@@ -39,8 +39,7 @@ varnish v1 -vcl+backend {
logexpect l1 -v v1 -g request { logexpect l1 -v v1 -g request {
expect 0 1001 Begin "^req .* rxreq" expect 0 1001 Begin "^req .* rxreq"
# ReqAcct body counts include chunked overhead expect * = ReqAcct "^29 0 29 202 75 277$"
expect * = ReqAcct "^29 0 29 202 104 306$"
expect 0 = End expect 0 = End
} -start } -start
...@@ -62,9 +61,8 @@ logexpect l4 -v v1 -g request { ...@@ -62,9 +61,8 @@ logexpect l4 -v v1 -g request {
logexpect l5 -v v1 -g request { logexpect l5 -v v1 -g request {
expect * 1005 Begin "^req .* rxreq" expect * 1005 Begin "^req .* rxreq"
# ReqAcct body counts include chunked overhead
# Header bytes is 5 larger than in l1 due to two item X-Varnish hdr # Header bytes is 5 larger than in l1 due to two item X-Varnish hdr
expect * = ReqAcct "^29 0 29 207 104 311$" expect * = ReqAcct "^29 0 29 207 75 282$"
expect 0 = End expect 0 = End
} -start } -start
......
...@@ -43,27 +43,27 @@ varnish v1 -vcl+backend { ...@@ -43,27 +43,27 @@ varnish v1 -vcl+backend {
# Total: 93 bytes # Total: 93 bytes
# Response body: # Response body:
# Chunk len 5 bytes # Chunk len - bytes
# 123 3 bytes # 123 3 bytes
# Chunk end 2 bytes # Chunk end - bytes
# Chunk len 5 bytes # Chunk len - bytes
# abc 3 bytes # abc 3 bytes
# Chunk end 2 bytes # Chunk end - bytes
# Chunk len 5 bytes # Chunk len - bytes
# 123 3 bytes # 123 3 bytes
# Chunk end 2 bytes # Chunk end - bytes
# Chunk len 5 bytes # Chunk len - bytes
# def 3 bytes # def 3 bytes
# Chunk end 2 bytes # Chunk end - bytes
# Chunk len 5 bytes # Chunk len - bytes
# ghi 3 bytes # ghi 3 bytes
# Chunk end 2 bytes # Chunk end - bytes
# Chunked end 5 bytes # Chunked end - bytes
# Total: 55 bytes # Total: 15 bytes
logexpect l1 -v v1 -g request { logexpect l1 -v v1 -g request {
expect 0 1001 Begin "^req .* rxreq" expect 0 1001 Begin "^req .* rxreq"
expect * = ReqAcct "^29 0 29 93 55 148$" expect * = ReqAcct "^29 0 29 93 15 108$"
expect 0 = End expect 0 = End
expect * 1003 Begin "^req .* esi" expect * 1003 Begin "^req .* esi"
expect * = ReqAcct "^0 0 0 0 12 12$" expect * = ReqAcct "^0 0 0 0 12 12$"
...@@ -88,4 +88,4 @@ logexpect l1 -wait ...@@ -88,4 +88,4 @@ logexpect l1 -wait
varnish v1 -expect s_req_hdrbytes == 29 varnish v1 -expect s_req_hdrbytes == 29
varnish v1 -expect s_req_bodybytes == 0 varnish v1 -expect s_req_bodybytes == 0
varnish v1 -expect s_resp_hdrbytes == 93 varnish v1 -expect s_resp_hdrbytes == 93
varnish v1 -expect s_resp_bodybytes == 55 varnish v1 -expect s_resp_bodybytes == 15
...@@ -22,20 +22,34 @@ varnish v1 -vcl+backend { ...@@ -22,20 +22,34 @@ varnish v1 -vcl+backend {
} }
} -start } -start
varnish v1 -cliok "param.set vsl_mask +VfpAcct" varnish v1 -cliok "param.set vsl_mask +VfpAcct,+VdpAcct"
varnish v1 -cliok "param.set feature +esi_disable_xml_check"
client c1 { client c1 {
txreq -url /1 txreq -method POST -url /1 -bodylen 100
rxresp rxresp
expect resp.bodylen == 1000 expect resp.bodylen == 1000
} -run } -run
varnish v1 -expect MAIN.s_req_bodybytes == 100
varnish v1 -expect VBE.vcl1.s1.bereq_bodybytes == 100
varnish v1 -expect VBE.vcl1.s1.beresp_bodybytes == 1000 varnish v1 -expect VBE.vcl1.s1.beresp_bodybytes == 1000
varnish v1 -expect MAIN.s_resp_bodybytes == 1000
varnish v1 -vsc *bodyb*
client c1 { client c1 {
txreq -url /2 txreq -method POST -url /2 -nolen -hdr "Transfer-encoding: chunked"
chunkedlen 100
chunkedlen 100
chunkedlen 100
chunkedlen 0
rxresp rxresp
expect resp.bodylen == 500 expect resp.bodylen == 500
} -run } -run
varnish v1 -expect MAIN.s_req_bodybytes == 400
varnish v1 -expect VBE.vcl1.s1.bereq_bodybytes >= 400
varnish v1 -expect VBE.vcl1.s1.beresp_bodybytes == 1500 varnish v1 -expect VBE.vcl1.s1.beresp_bodybytes == 1500
varnish v1 -expect MAIN.s_resp_bodybytes == 1500
varnish v1 -vsc *bodyb*
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment