Bug in 1.1.2: Multiple headers stripped (oops)

Adrian Otto aotto at mosso.com
Mon Aug 18 20:20:23 CEST 2008


Hello,

I found the reason why I hit this bug, but I need some tips to  
understand how to debug what's happening in the VCL code. First, I'll  
explain the bug:

1) My default.vcl is configured to strip the Cookie header in  
vcl_recv like this:

sub vcl_recv {
         if(req.http.Cookie) {
                 remove req.http.Cookie;
                 lookup;
         }
}

2) The Connection header sent from the client browser specified that  
the "TE" header should be stripped, and was so marked in position 13  
of http_DoConnection::hp->hdf, indicating that header at index 13  
should be skipped when headers are copied into the backend request.

3) The VCL code ran to strip the cookie header, removed it, and  
shifted the other elements in the array UP one position. The Host  
header followed TE at position/index 14, and became position/index 13.

4) The code for copying/morphing the client request to the backend  
ran, and skipped position/index 13, which was the Host header.

5) Varnish kindly noticed that there was no Host header present in  
the backend connection, and added one of it's own using the IP  
address of the backend server as the content of that header.

6) The incorrect document was fetched for the backend because the  
Host header was not correct.

I debugged the problem and found that the client HTTP headers change  
in this section of code:

Run till exit from #0  WSL (w=0x43c02c50, tag=SLT_VCL_call, id=13,  
fmt=0x42c8b5 "%s") at shmlog.c:248
0x00000000004183e3 in VCL_recv_method (sp=0x17bab748) at ../../ 
include/vcl_returns.h:37
37      VCL_MET_MAC(recv,RECV,(VCL_RET_ERROR|VCL_RET_PASS| 
VCL_RET_PIPE|VCL_RET_LOOKUP))
(gdb) list
32      #define VCL_RET_KEEP  (1 << 9)
33      #define VCL_RET_MAX 10
34      #endif
35
36      #ifdef VCL_MET_MAC
37      VCL_MET_MAC(recv,RECV,(VCL_RET_ERROR|VCL_RET_PASS| 
VCL_RET_PIPE|VCL_RET_LOOKUP))
38      VCL_MET_MAC(pipe,PIPE,(VCL_RET_ERROR|VCL_RET_PIPE))
39      VCL_MET_MAC(pass,PASS,(VCL_RET_ERROR|VCL_RET_PASS))
40      VCL_MET_MAC(hash,HASH,(VCL_RET_HASH))
41      VCL_MET_MAC(miss,MISS,(VCL_RET_ERROR|VCL_RET_PASS| 
VCL_RET_FETCH))
(gdb) bt
#0  VCL_recv_method (sp=0x17b955b8) at ../../include/vcl_returns.h:37
#1  0x000000000040aa43 in cnt_recv (sp=0x17b955b8) at cache_center.c:730
#2  0x000000000040af61 in CNT_Session (sp=0x17b955b8) at steps.h:34
#3  0x000000000041389b in wrk_do_one (w=0x43c02c50) at cache_pool.c:194
#4  0x0000000000413dd3 in wrk_thread (priv=0x17b7cc60) at  
cache_pool.c:248
#5  0x00000037d50062f7 in start_thread () from /lib64/libpthread.so.0
#6  0x0000003190cce85d in clone () from /lib64/libc.so.6
(gdb) print VCL_recv_method::sp->http->hd
$43 =   {[0] = {b = 0x17babc50 "GET", e = 0x17babc53 ""},
   [1] = {b = 0x17babc54 "/spacer_thin.gif", e = 0x17babc64 ""},
   [2] = {b = 0x17babc65 "HTTP/1.1", e = 0x17babc6d ""},
   [3] = {b = 0x0, e = 0x0},
   [4] = {b = 0x0, e = 0x0},
   [5] = {b = 0x17babc6f "Referer: http://www.motioncars.com/carchart/ 
index.htm", e = 0x17babca4 ""},
   [6] = {b = 0x17babca6 "Accept-Language: en-US,en;q=0.9", e =  
0x17babcc5 ""},
   [7] = {b = 0x17babcc7 "Accept-Encoding: deflate, gzip, x-gzip,  
identity, *;q=0", e = 0x17babcfe ""},
   [8] = {b = 0x17babd00 "Cookie: X-Mapping- 
caklakng=BB7BF84977E04EAA5A5B5A914FFEE25F", e = 0x17babd3b ""},
   [9] = {b = 0x17babd3d "X-Cluster-Client-Ip: 122.53.96.247", e =  
0x17babd5f ""},
   [10] = {b = 0x17babd61 "Cookie2: $Version=1", e = 0x17babd74 ""},
   [11] = {b = 0x17babd76 "Connection: Keep-Alive, TE", e =  
0x17babd90 ""},
   [12] = {b = 0x17babd92 "Accept: text/html, application/xml;q=0.9,  
application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
xbitmap, */*;q=0.1", e = 0x17babe0f ""},
   [13] = {b = 0x17babe11 "TE: deflate, gzip, chunked, identity,  
trailers", e = 0x17babe3f ""},
   [14] = {b = 0x17babe41 "Host: www.motioncars.com", e = 0x17babe59  
""},
   [15] = {b = 0x17babe5b "Accept-Charset: iso-8859-1, utf-8, utf-16,  
*;q=0.1", e = 0x17babe8d ""},
   [16] = {b = 0x17babe8f "User-Agent: Opera/9.51 (Windows NT 5.1; U;  
en)", e = 0x17babebd ""},
   [17] = {b = 0x0, e = 0x0} <repeats 15 times>}
(gdb) print VCL_recv_method::sp->http->hdf
$44 =   '\0' <repeats 13 times>, "\001", '\0' <repeats 17 times>
(gdb) step
vcl_handlingname (u=2) at cache_vcl.c:288
288             switch (u) {
(gdb) print VCL_recv_method::sp->http->hdf
$45 =   '\0' <repeats 13 times>, "\001", '\0' <repeats 17 times>
(gdb) print VCL_recv_method::sp->http->hd
$46 =   {[0] = {b = 0x17babc50 "GET", e = 0x17babc53 ""},
   [1] = {b = 0x17babc54 "/spacer_thin.gif", e = 0x17babc64 ""},
   [2] = {b = 0x17babc65 "HTTP/1.1", e = 0x17babc6d ""},
   [3] = {b = 0x0, e = 0x0},
   [4] = {b = 0x0, e = 0x0},
   [5] = {b = 0x17babc6f "Referer: http://www.motioncars.com/carchart/ 
index.htm", e = 0x17babca4 ""},
   [6] = {b = 0x17babca6 "Accept-Language: en-US,en;q=0.9", e =  
0x17babcc5 ""},
   [7] = {b = 0x17babcc7 "Accept-Encoding: deflate, gzip, x-gzip,  
identity, *;q=0", e = 0x17babcfe ""},
   [8] = {b = 0x17babd3d "X-Cluster-Client-Ip: 122.53.96.247", e =  
0x17babd5f ""},
   [9] = {b = 0x17babd61 "Cookie2: $Version=1", e = 0x17babd74 ""},
   [10] = {b = 0x17babd76 "Connection: Keep-Alive, TE", e =  
0x17babd90 ""},
   [11] = {b = 0x17babd92 "Accept: text/html, application/xml;q=0.9,  
application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
xbitmap, */*;q=0.1", e = 0x17babe0f ""},
   [12] = {b = 0x17babe11 "TE: deflate, gzip, chunked, identity,  
trailers", e = 0x17babe3f ""},
   [13] = {b = 0x17babe41 "Host: www.motioncars.com", e = 0x17babe59  
""},
   [14] = {b = 0x17babe5b "Accept-Charset: iso-8859-1, utf-8, utf-16,  
*;q=0.1", e = 0x17babe8d ""},
   [15] = {b = 0x17babe8f "User-Agent: Opera/9.51 (Windows NT 5.1; U;  
en)", e = 0x17babebd ""},
   [16] = {b = 0x17babe8f "User-Agent: Opera/9.51 (Windows NT 5.1; U;  
en)", e = 0x17babebd ""},
   [17] = {b = 0x0, e = 0x0} <repeats 15 times>}
(gdb) bt
#0  vcl_handlingname (u=2) at cache_vcl.c:288
#1  0x0000000000418407 in VCL_recv_method (sp=0x17bab748) at ../../ 
include/vcl_returns.h:37
#2  0x000000000040aa43 in cnt_recv (sp=0x17bab748) at cache_center.c:730
#3  0x000000000040af61 in CNT_Session (sp=0x17bab748) at steps.h:34
#4  0x000000000041389b in wrk_do_one (w=0x43c02c50) at cache_pool.c:194
#5  0x0000000000413dd3 in wrk_thread (priv=0x17b7cc60) at  
cache_pool.c:248
#6  0x00000037d50062f7 in start_thread () from /lib64/libpthread.so.0
#7  0x0000003190cce85d in clone () from /lib64/libc.so.6
(gdb) list
283
284     static const char *
285     vcl_handlingname(unsigned u)
286     {
287
288             switch (u) {
289     #define VCL_RET_MAC(a, b, c,d)  case VCL_RET_##b: return(#a);
290     #define VCL_RET_MAC_E(a, b, c,d)        case VCL_RET_##b:  
return(#a);
291     #include "vcl_returns.h"
292     #undef VCL_RET_MAC

Notice that sp->http->hd[8] gets removed from the array and other  
items shifted up... apparently somewhere after "VCL_recv_method  
(sp=0x17bab748) at ../../include/vcl_returns.h:37" and before  
"vcl_handlingname (u=2) at cache_vcl.c:288".  However, the sp->http- 
 >hdf variable is not adjusted accordingly. That's the bug. When it  
removes the header, it should also adjust the sp->http->hdf variable  
so that the header indexes marked for skipping with HDF_FILTER still  
refer to the correct indexes in the sp->http->hd array after it's  
modified.

Another fix might be to adjust whatever code is behind "remove" in  
vcl_recv so that it simply sets HDF_FILTER in sp->http->hdf for the  
header to be deleted, instead of actually removing it. I'm not sure  
why two different methods are used for this, so I'm not sure which  
fix is better.

Note that the workaround is to adjust the configuration to eliminate  
all "remove" statements in vcl_recv. If no headers are removed, then  
the bug is avoided. Nobody should use the "remove" configuration  
directive in the vcl_recv section of the config file until this is  
fixed, or this bug may crop up. Any header might vanish, depending on  
how the client browser forms it's request. My workaround was to  
configure a proxying firewall (before varnish in our topology) to  
strip out the Cookie header instead, eliminating the need for varnish  
to check/remove the header.

I'd like to actually submit a patch for this, but I'm having  
difficulty understanding where to find the actual C code that  
corresponds to the VCL code responsible for "remove" in vcl_recv so I  
can fix it. My gdb is not showing it to me, so I'm not sure what code  
to patch. Can anyone offer me a clue here for how to find the correct  
code to fix?

Thanks,

Adrian

On Aug 14, 2008, at 9:58 AM, Adrian Otto wrote:

> Hello,
>
> I've found, and reproduced an apparent bug in varnish 1.1.2. It  
> happens when handling a Connection header sent from the client  
> browser. The HTTP/1.1 protocol requires that any header names  
> listed in the Connection header be removed before the proxy  
> forwards the request to the backend web server. That works. It  
> removes the specified header. However, it also removes the NEXT  
> header that follows the specified one. This can lead to substantial  
> trouble if the header following the specified one is the Host  
> header. It results in a 404 result from the backend web server  
> because varnish sends a Host header with the IP address of the  
> backend web server rather than the original Host name that was sent  
> by the client. This results in the incorrect document being fetched  
> (and cached) from the backend server.
>
> I have provided two examples of the problem below. I need to do  
> some additional work to set up my dev environment to start working  
> on a patch, but if anyone else already has a patch for this, or can  
> easily produce one, I's certainly appreciate any assistance you are  
> willing to offer in the mean time.
>
> Thanks,
>
> Adrian Otto
>
> Here is an example:
>
> Notice that the Connection header from the client browser specifies  
> that the TE header should be removed. However, once the request is  
> proxied to the backend web server, the Host header has changed.
>
>  13 SessionOpen  c 10.3.0.30 49408
>     0 ExpBan         121045864 was banned
>    13 ReqStart     c 10.3.0.30 49408 121045866
>    13 RxRequest    c GET
>    13 RxURL        c /spacer_thin.gif
>    13 RxProtocol   c HTTP/1.1
>    13 RxHeader     c Referer: http://www.example.com/carchart/ 
> index.htm
>    13 RxHeader     c Accept-Language: en-US,en;q=0.9
>    13 RxHeader     c Accept-Encoding: deflate, gzip, x-gzip,  
> identity, *;q=0
>    13 RxHeader     c Cookie: X-Mapping- 
> caklakng=BB7BF84977E04EAA5A5B5A914FFEE25F
>    13 RxHeader     c X-Cluster-Client-Ip: 10.2.0.200
>    13 RxHeader     c Cookie2: $Version=1
>    13 RxHeader     c Connection: Keep-Alive, TE
>    13 RxHeader     c Accept: text/html, application/xml;q=0.9,  
> application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
> xbitmap, */*;q=0.1
>    13 RxHeader     c TE: deflate, gzip, chunked, identity, trailers
>    13 RxHeader     c Host: www.example.com
>    13 RxHeader     c Accept-Charset: iso-8859-1, utf-8, utf-16,  
> *;q=0.1
>    13 RxHeader     c User-Agent: Opera/9.51 (Windows NT 5.1; U; en)
>    13 VCL_call     c recv
>    13 VCL_return   c lookup
>    13 VCL_call     c hash
>    13 VCL_return   c hash
>    13 VCL_call     c miss
>    13 VCL_return   c fetch
>    16 BackendOpen  b default 10.0.0.100 34140 10.4.0.40 80
>    16 BackendXID   b 121045866
>    13 Backend      c 16 default
>    16 TxRequest    b GET
>    16 TxURL        b /spacer_thin.gif
>    16 TxProtocol   b HTTP/1.1
>    16 TxHeader     b Referer: http://www.example.com/carchart/ 
> index.htm
>    16 TxHeader     b Accept-Language: en-US,en;q=0.9
>    16 TxHeader     b Accept-Encoding: deflate, gzip, x-gzip,  
> identity, *;q=0
>    16 TxHeader     b X-Cluster-Client-Ip: 10.2.0.200
>    16 TxHeader     b Cookie2: $Version=1
>    16 TxHeader     b Accept: text/html, application/xml;q=0.9,  
> application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
> xbitmap, */*;q=0.1
>    16 TxHeader     b Accept-Charset: iso-8859-1, utf-8, utf-16,  
> *;q=0.1
>    16 TxHeader     b User-Agent: Opera/9.51 (Windows NT 5.1; U; en)
>    16 TxHeader     b X-Varnish: 121045866
>    16 TxHeader     b X-Forwarded-for: 10.3.0.30
>    16 TxHeader     b Host: 10.4.0.40
>    16 RxProtocol   b HTTP/1.1
>    16 RxStatus     b 404
>    16 RxResponse   b Not Found
>    16 RxHeader     b Date: Thu, 14 Aug 2008 16:41:57 GMT
>    16 RxHeader     b Server: Apache/2.0.52 (CentOS)
>    16 RxHeader     b Content-Length: 290
>    16 RxHeader     b Connection: close
>    16 RxHeader     b Content-Type: text/html; charset=iso-8859-1
>    13 ObjProtocol  c HTTP/1.1
>    13 ObjStatus    c 404
>    13 ObjResponse  c Not Found
>    13 ObjHeader    c Date: Thu, 14 Aug 2008 16:41:57 GMT
>    13 ObjHeader    c Server: Apache/2.0.52 (CentOS)
>    13 ObjHeader    c Content-Type: text/html; charset=iso-8859-1
>    16 BackendClose b default
>    13 TTL          c 121045866 RFC 1800 1218732117 1218732117 0 0 0
>    13 VCL_call     c fetch
>    13 VCL_return   c insert
>    13 Length       c 290
>    13 VCL_call     c deliver
>    13 VCL_return   c deliver
>    13 TxProtocol   c HTTP/1.1
>    13 TxStatus     c 404
>    13 TxResponse   c Not Found
>    13 TxHeader     c Server: Apache/2.0.52 (CentOS)
>    13 TxHeader     c Content-Type: text/html; charset=iso-8859-1
>    13 TxHeader     c Content-Length: 290
>    13 TxHeader     c Date: Thu, 14 Aug 2008 16:41:57 GMT
>    13 TxHeader     c X-Varnish: 121045866
>    13 TxHeader     c Age: 0
>    13 TxHeader     c Via: 1.1 varnish
>    13 TxHeader     c Connection: keep-alive
>    13 ReqEnd       c 121045866 1218732117.032603979  
> 1218732117.123506069 0.003006935 0.090833902 0.000068188
>     0 StatAddr       10.3.0.30 0 84 2 2 0 0 1 522 333
>     0 ExpKill        121045864 -1218732117
>    13 SessionClose c timeout
>    13 StatSess     c 10.3.0.30 49408 0 1 1 0 0 1 233 290
>    13 SessionOpen  c 10.3.0.30 49409
>    13 ReqStart     c 10.3.0.30 49409 121045867
>    13 RxRequest    c GET
>    13 RxURL        c /spacer_thin.gif
>    13 RxProtocol   c HTTP/1.1
>    13 RxHeader     c Referer: http://www.example.com/carchart/ 
> index.htm
>    13 RxHeader     c Accept-Language: en-US,en;q=0.9
>    13 RxHeader     c Accept-Encoding: deflate, gzip, x-gzip,  
> identity, *;q=0
>    13 RxHeader     c Cookie: X-Mapping- 
> caklakng=BB7BF84977E04EAA5A5B5A914FFEE25F
>    13 RxHeader     c X-Cluster-Client-Ip: 10.2.0.200
>    13 RxHeader     c Cookie2: $Version=1
>    13 RxHeader     c Connection: Keep-Alive, TE
>    13 RxHeader     c Accept: text/html, application/xml;q=0.9,  
> application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
> xbitmap, */*;q=0.1
>    13 RxHeader     c Host: www.example.com
>    13 RxHeader     c TE: deflate, gzip, chunked, identity, trailers
>    13 RxHeader     c Accept-Charset: iso-8859-1, utf-8, utf-16,  
> *;q=0.1
>    13 RxHeader     c User-Agent: Opera/9.51 (Windows NT 5.1; U; en)
>    13 VCL_call     c recv
>    13 VCL_return   c lookup
>    13 VCL_call     c hash
>    13 VCL_return   c hash
>    13 Hit          c 121045866
>    13 VCL_call     c hit
>    13 VCL_return   c deliver
>    13 Length       c 290
>    13 VCL_call     c deliver
>    13 VCL_return   c deliver
>    13 TxProtocol   c HTTP/1.1
>    13 TxStatus     c 404
>    13 TxResponse   c Not Found
>    13 TxHeader     c Server: Apache/2.0.52 (CentOS)
>    13 TxHeader     c Content-Type: text/html; charset=iso-8859-1
>    13 TxHeader     c Content-Length: 290
>    13 TxHeader     c Date: Thu, 14 Aug 2008 16:43:18 GMT
>    13 TxHeader     c X-Varnish: 121045867 121045866
>    13 TxHeader     c Age: 81
>    13 TxHeader     c Via: 1.1 varnish
>    13 TxHeader     c Connection: keep-alive
>    13 ReqEnd       c 121045867 1218732198.320590973  
> 1218732198.320696115 0.003068924 0.000036001 0.000069141
>     0 StatAddr       10.3.0.30 0 165 3 3 0 0 1 766 623
>    13 SessionClose c timeout
>    13 StatSess     c 10.3.0.30 49409 0 1 1 0 0 0 244 290
>     0 CLI            Rd "url.purge" "/spacer_thin.gif"
>     0 CLI            Wr 0 200 PURGE /spacer_thin.gif
>
>
> Here is another example that illustrates the same problem, but  
> actually fetches the correct document from the backend web server.  
> If the Host header is relocated to BEFORE the TE header, the Accept- 
> Charset header vanishes instead, and the Host header goes through  
> unmodified. This actually works, but we don't want to strip headers  
> that should still be there.
>
>    13 SessionOpen  c 10.3.0.30 49410
>     0 ExpBan         121045866 was banned
>    13 ReqStart     c 10.3.0.30 49410 121045868
>    13 RxRequest    c GET
>    13 RxURL        c /spacer_thin.gif
>    13 RxProtocol   c HTTP/1.1
>    13 RxHeader     c Referer: http://www.example.com/carchart/ 
> index.htm
>    13 RxHeader     c Accept-Language: en-US,en;q=0.9
>    13 RxHeader     c Accept-Encoding: deflate, gzip, x-gzip,  
> identity, *;q=0
>    13 RxHeader     c Cookie: X-Mapping- 
> caklakng=BB7BF84977E04EAA5A5B5A914FFEE25F
>    13 RxHeader     c X-Cluster-Client-Ip: 10.2.0.200
>    13 RxHeader     c Cookie2: $Version=1
>    13 RxHeader     c Connection: Keep-Alive, TE
>    13 RxHeader     c Accept: text/html, application/xml;q=0.9,  
> application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
> xbitmap, */*;q=0.1
>    13 RxHeader     c Host: www.example.com
>    13 RxHeader     c TE: deflate, gzip, chunked, identity, trailers
>    13 RxHeader     c Accept-Charset: iso-8859-1, utf-8, utf-16,  
> *;q=0.1
>    13 RxHeader     c User-Agent: Opera/9.51 (Windows NT 5.1; U; en)
>    13 VCL_call     c recv
>    13 VCL_return   c lookup
>    13 VCL_call     c hash
>    13 VCL_return   c hash
>    13 VCL_call     c miss
>    13 VCL_return   c fetch
>    16 BackendOpen  b default 10.0.0.100 39798 10.4.0.40 80
>    16 BackendXID   b 121045868
>    13 Backend      c 16 default
>    16 TxRequest    b GET
>    16 TxURL        b /spacer_thin.gif
>    16 TxProtocol   b HTTP/1.1
>    16 TxHeader     b Referer: http://www.example.com/carchart/ 
> index.htm
>    16 TxHeader     b Accept-Language: en-US,en;q=0.9
>    16 TxHeader     b Accept-Encoding: deflate, gzip, x-gzip,  
> identity, *;q=0
>    16 TxHeader     b X-Cluster-Client-Ip: 10.2.0.200
>    16 TxHeader     b Cookie2: $Version=1
>    16 TxHeader     b Accept: text/html, application/xml;q=0.9,  
> application/xhtml+xml, image/png, image/jpeg, image/gif, image/x- 
> xbitmap, */*;q=0.1
>    16 TxHeader     b Host: www.example.com
>    16 TxHeader     b User-Agent: Opera/9.51 (Windows NT 5.1; U; en)
>    16 TxHeader     b X-Varnish: 121045868
>    16 TxHeader     b X-Forwarded-for: 10.3.0.30
>    16 RxProtocol   b HTTP/1.1
>    16 RxStatus     b 200
>    16 RxResponse   b OK
>    16 RxHeader     b Date: Thu, 14 Aug 2008 16:43:35 GMT
>    16 RxHeader     b Server: Apache/2.0.52 (CentOS)
>    16 RxHeader     b Last-Modified: Fri, 02 Feb 2007 02:57:20 GMT
>    16 RxHeader     b ETag: "40d5-2b-808f4400"
>    16 RxHeader     b Accept-Ranges: bytes
>    16 RxHeader     b Content-Length: 43
>    16 RxHeader     b Connection: close
>    16 RxHeader     b Content-Type: image/gif
>    13 ObjProtocol  c HTTP/1.1
>    13 ObjStatus    c 200
>    13 ObjResponse  c OK
>    13 ObjHeader    c Date: Thu, 14 Aug 2008 16:43:35 GMT
>    13 ObjHeader    c Server: Apache/2.0.52 (CentOS)
>    13 ObjHeader    c Last-Modified: Fri, 02 Feb 2007 02:57:20 GMT
>    13 ObjHeader    c ETag: "40d5-2b-808f4400"
>    13 ObjHeader    c Content-Type: image/gif
>    16 BackendClose b default
>    13 TTL          c 121045868 RFC 1800 1218732215 1218732215 0 0 0
>    13 VCL_call     c fetch
>    13 VCL_return   c insert
>    13 Length       c 43
>    13 VCL_call     c deliver
>    13 VCL_return   c deliver
>    13 TxProtocol   c HTTP/1.1
>    13 TxStatus     c 200
>    13 TxResponse   c OK
>    13 TxHeader     c Server: Apache/2.0.52 (CentOS)
>    13 TxHeader     c Last-Modified: Fri, 02 Feb 2007 02:57:20 GMT
>    13 TxHeader     c ETag: "40d5-2b-808f4400"
>    13 TxHeader     c Content-Type: image/gif
>    13 TxHeader     c Content-Length: 43
>    13 TxHeader     c Date: Thu, 14 Aug 2008 16:43:35 GMT
>    13 TxHeader     c X-Varnish: 121045868
>    13 TxHeader     c Age: 0
>    13 TxHeader     c Via: 1.1 varnish
>    13 TxHeader     c Connection: keep-alive
>    13 ReqEnd       c 121045868 1218732215.300252914  
> 1218732215.390639067 0.005183935 0.090335131 0.000051022
>     0 StatAddr       10.3.0.30 0 182 4 4 0 0 2 1043 666
>     0 ExpKill        121045866 -1218732216
>    13 SessionClose c timeout
>    13 StatSess     c 10.3.0.30 49410 0 1 1 0 0 1 277 43

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-dev/attachments/20080818/9263706e/attachment-0001.html>


More information about the varnish-dev mailing list