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)
sc = V1L_Close(req->wrk, &bytes);
AZ(req->wrk->v1l);
/* Bytes accounting */
if (bytes < hdrbytes)
req->acct.resp_hdrbytes += bytes;
else {
req->acct.resp_hdrbytes += hdrbytes;
req->acct.resp_bodybytes += bytes - hdrbytes;
}
req->acct.resp_hdrbytes += hdrbytes;
req->acct.resp_bodybytes += VDP_Close(req);
if (sc == SC_NULL && err && req->sp->fd >= 0)
sc = SC_REM_CLOSE;
if (sc != SC_NULL)
Req_Fail(req, sc);
(void)VDP_Close(req);
}
......@@ -39,8 +39,7 @@ varnish v1 -vcl+backend {
logexpect l1 -v v1 -g request {
expect 0 1001 Begin "^req .* rxreq"
# ReqAcct body counts include chunked overhead
expect * = ReqAcct "^29 0 29 202 104 306$"
expect * = ReqAcct "^29 0 29 202 75 277$"
expect 0 = End
} -start
......@@ -62,9 +61,8 @@ logexpect l4 -v v1 -g request {
logexpect l5 -v v1 -g request {
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
expect * = ReqAcct "^29 0 29 207 104 311$"
expect * = ReqAcct "^29 0 29 207 75 282$"
expect 0 = End
} -start
......
......@@ -43,27 +43,27 @@ varnish v1 -vcl+backend {
# Total: 93 bytes
# Response body:
# Chunk len 5 bytes
# Chunk len - bytes
# 123 3 bytes
# Chunk end 2 bytes
# Chunk len 5 bytes
# Chunk end - bytes
# Chunk len - bytes
# abc 3 bytes
# Chunk end 2 bytes
# Chunk len 5 bytes
# Chunk end - bytes
# Chunk len - bytes
# 123 3 bytes
# Chunk end 2 bytes
# Chunk len 5 bytes
# Chunk end - bytes
# Chunk len - bytes
# def 3 bytes
# Chunk end 2 bytes
# Chunk len 5 bytes
# Chunk end - bytes
# Chunk len - bytes
# ghi 3 bytes
# Chunk end 2 bytes
# Chunked end 5 bytes
# Total: 55 bytes
# Chunk end - bytes
# Chunked end - bytes
# Total: 15 bytes
logexpect l1 -v v1 -g request {
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 * 1003 Begin "^req .* esi"
expect * = ReqAcct "^0 0 0 0 12 12$"
......@@ -88,4 +88,4 @@ logexpect l1 -wait
varnish v1 -expect s_req_hdrbytes == 29
varnish v1 -expect s_req_bodybytes == 0
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 {
}
} -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 {
txreq -url /1
txreq -method POST -url /1 -bodylen 100
rxresp
expect resp.bodylen == 1000
} -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 MAIN.s_resp_bodybytes == 1000
varnish v1 -vsc *bodyb*
client c1 {
txreq -url /2
txreq -method POST -url /2 -nolen -hdr "Transfer-encoding: chunked"
chunkedlen 100
chunkedlen 100
chunkedlen 100
chunkedlen 0
rxresp
expect resp.bodylen == 500
} -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 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