V4.1 HTTP/1.0 responses without Content-Length header results in empty response

Tom Anheyer Tom.Anheyer at Berlinonline.de
Wed Dec 9 13:39:12 CET 2015


Hello,

the request to the backend using netcat:

GET /tolle/api/url HTTP/1.0
User-Agent: location=XXX
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
X-Remote-IP: 212.45.105.231
X-SSL: no
X-Forwarded-For: 212.45.105.236
Host: service.berlin.de
X-Portal: service.berlin.de
X-Url: /tolle/api/url
X-Varnish: 14205995"

HTTP/1.1 200 OK
Date: Wed, 09 Dec 2015 12:10:07 GMT
Server: Apache/2.4.10 (Linux/SUSE)
X-Powered-By: PHP/5.4.20
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, 
pre-check=0
Pragma: no-cache
Strict-Transport-Security: max-age=3600;
Set-Cookie: 
PHPSESSID=fjbpu6qtnhm0l6ev6hv9ievdeptgnvk0ejqeioaito6oeghqdhh1; path=/
X-Frame-Options: SAMEORIGIN
Cache-Control: proxy-revalidate
Connection: close
Content-Type: text/html; charset=utf-8

<?xml version="1.0"?><!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
…

the varnishlog:

-   Begin          bereq 14205994 pass
-   Timestamp      Start: 1449662361.587086 0.000000 0.000000
-   BereqMethod    POST
-   BereqURL       /tolle/api/url/
-   BereqProtocol  HTTP/1.0
-   BereqHeader    User-Agent: location=XXX
-   BereqHeader    Content-Length: 0
-   BereqHeader    Content-Type: application/x-www-form-urlencoded
-   BereqHeader    X-Remote-IP: XXX.XXX.XXX.231
-   BereqHeader    X-SSL: no
-   BereqHeader    X-Forwarded-For: XXX.XXX.XXX.236
-   BereqHeader    Host: service.berlin.de
-   BereqHeader    X-Portal: service.berlin.de
-   BereqHeader    X-Url: /tolle/api/url/
-   BereqHeader    X-Varnish: 14205995
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   BackendOpen    52 git-XXXX.backend_cobe 127.0.0.2 80 127.0.0.1 47835
-   Timestamp      Bereq: 1449662361.587196 0.000111 0.000111
-   Timestamp      Beresp: 1449662364.248866 2.661780 2.661670
-   BerespProtocol HTTP/1.1
-   BerespStatus   200
-   BerespReason   OK
-   BerespHeader   Date: Wed, 09 Dec 2015 11:59:21 GMT
-   BerespHeader   Server: Apache/2.4.10 (Linux/SUSE)
-   BerespHeader   X-Powered-By: PHP/5.4.20
-   BerespHeader   Expires: Thu, 19 Nov 1981 08:52:00 GMT
-   BerespHeader   Cache-Control: no-store, no-cache, must-revalidate, 
post-check=0, pre-check=0
-   BerespHeader   Pragma: no-cache
-   BerespHeader   Strict-Transport-Security: max-age=3600;
-   BerespHeader   Set-Cookie: 
PHPSESSID=cvqmotgiq1m3ovcmm51m0gska0r19rb05029aio3nkf5t237h7v0; path=/
-   BerespHeader   X-Frame-Options: SAMEORIGIN
-   BerespHeader   Cache-Control: proxy-revalidate
-   BerespHeader   Connection: close
-   BerespHeader   Content-Type: text/html; charset=utf-8
-   TTL            RFC 0 10 -1 1449662364 1449662364 1449662361 375007920 0
-   VCL_call       BACKEND_RESPONSE
-   TTL            VCL -1 3600 0 1449662364
-   BerespUnset    Server: Apache/2.4.10 (Linux/SUSE)
-   BerespUnset    X-Powered-By: PHP/5.4.20
-   TTL            VCL 120 3600 0 1449662364
-   VCL_return     deliver
-   Storage        malloc Transient
-   ObjProtocol    HTTP/1.1
-   ObjStatus      200
-   ObjReason      OK
-   ObjHeader      Date: Wed, 09 Dec 2015 11:59:21 GMT
-   ObjHeader      Expires: Thu, 19 Nov 1981 08:52:00 GMT
-   ObjHeader      Cache-Control: no-store, no-cache, must-revalidate, 
post-check=0, pre-check=0, proxy-revalidate
-   ObjHeader      Pragma: no-cache
-   ObjHeader      Strict-Transport-Security: max-age=3600;
-   ObjHeader      Set-Cookie: 
PHPSESSID=cvqmotgiq1m3ovcmm51m0gska0r19rb05029aio3nkf5t237h7v0; path=/
-   ObjHeader      X-Frame-Options: SAMEORIGIN
-   ObjHeader      Content-Type: text/html; charset=utf-8
-   Fetch_Body     0 none -
-   BackendClose   52 
git-f6195a0-Tom-Anheyer-2015-12-09-095945-0100.backend_cobe
-   Timestamp      BerespBody: 1449662364.249002 2.661916 0.000136
-   Length         0
-   BereqAcct      400 0 400 502 0 502
-   End

The varnishlog differs from what I see yesterday. But the result is the 
same (body stripped from response). There were lines with:

* req.body read error
* Resource temporarily unavailable
* REQ_BODY_FAIL

tom

Am 09.12.2015 um 12:12 schrieb Poul-Henning Kamp:
> --------
> In message <56680894.80904 at Berlinonline.de>, Tom Anheyer writes:
>
>> An old perl LWP script uses HTTP/1.0 posts to an apache backend. The
>> generated backend response has no Content-Length header. Varnish 4.1.0
>> doesn't read the body (got a read error) and delivers a "Content-Length: 0"
>> response back to the script. I know - http/1.0 its old and
>> should/must be avoided and the problems are gone after updating the
>> script to use http/1.1.
> Please capture the varnishlog output so we can see exactly what
> happens.
>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4266 bytes
Desc: S/MIME Cryptographic Signature
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20151209/ba68b7eb/attachment.bin>


More information about the varnish-misc mailing list