Hi there, as a long time user of Varnish I still have an annoying little issue on my todo list: It seems that when returning partial content, Varnishnsca properly logs the transfer with a code 206 'partial content', but logging the exact same transfer from VCL code, it returns code '200', which is incorrect. I have tried using VRT_r_obj_status, VRT_r_rest_status and VRT_r_beresp status to no avail. This is the case with both Varnish 2.1.5 and 3.0.0. Is this done on purpose by the code or can it be registered as a bug?
This is how I test it (examples using Varnish 3.0.0): #=== The command to do the RANGE request (note the returncode 206 'partial content) === testproxy02 ~ # http_proxy=http://127.0.0.1:80 curl -v -r 500-1000 http://vi.nl . .
Proxy-Connection: Keep-Alive
< HTTP/1.1 206 Partial Content < Server: Apache . ...<output truncated>... #=== This is the output of varnishncsa (note the code '206')=== testproxy02 ~ # varnishncsa 127.0.0.1 - - [28/Jul/2011:17:17:23 +0200] "GET http://bla.nlhttp://bla.nl HTTP/1.1" 206 501 "-" "curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5" #=== This is the output I get in syslog (note the code '200') === testproxy02 ~ # tail -f /var/log/varnish/current code:200 127.0.0.1 - - "Thu, 28 Jul 2011 15:16:56 GMT" "GET http://bla.nl" 200 58944 "-" "curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5" X:616508938 B:bla_nl V:bla.nl h:1 #=== This is the bit of inline C code used to do the loggin from VCL === int mycode = VRT_r_resp_status(sp); if (mycode == NULL) { mycode = 0; } syslog(LOG_DEBUG, "code:%u ", mycode ); . ...<output truncated>... #=== EOF === Cheers, Johnny _______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
