BUG found

Satoshi Abe a3104 at accelia.net
Wed Feb 17 14:15:26 CET 2010

Dear varnish developpers.

I found the bug.

I use ESI function  by HTTP 1.0. I send http-request with "Connection:
keep-alive" header.
When the content length is not understood, it is necessary to close
the connection in HTTP/1.0 or less.

However, varnish returned "Connection: keep-alive", and keep the connection.
Then, HTTP-Client is waited for until the time-out because the end of
contents is not understood.

I hope to add the following codes to correct this bug.

cache_response.c  line 144

                // Http 1.0 should be connection close. by a3104
                if (sp->http->protover <= 1.0){
                        sp->doclose = "Connection: close";

        /* Only HTTP 1.1 can do Chunked encoding */
        if (!sp->disable_esi && !VTAILQ_EMPTY(&sp->obj->esibits)) {
                http_Unset(sp->http, H_Content_Length);
                if(sp->http->protover >= 1.1)
                        http_PrintfHeader(sp->wrk, sp->fd, sp->http,
"Transfer-Encoding: chunked");

                // Http 1.0 should be disconnect http session. by a3104
                if (sp->http->protover == 1.0){
                        sp->doclose = "Connection: close";

Thanks and regards.

More information about the varnish-bugs mailing list