Hi, being rather new to using varnish, I don't want to file this as a bug right away.
First of all, my .vcl in use: === backend www { .host = "127.0.0.1"; .port = "4567"; } sub vcl_fetch { esi; } === I have two problems. I have an include-element of the following form: === <!-- head and everything --> <body> <esi:include src="/include" alt="/alt" onerror="continue" /> </body> </html> === First, I (accidentally) forged "/include" to return 404 and no body, which leads to the following output: === <!-- head and everything --> <body> === So, the ESI processing stops in the moment that the include is empty string. The scenario second problem is as follows: 1. "/include" returns 404 and the string "some text" as body. 2. "/alt" returns 500 and the string "some other text" as body. Reading the (rather unspecific) ESI Language Specification, I expect that the include-element is deleted silently, because: 1. "src" "is not found". 2. "ESI can fetch neither the src nor the alt" So, I would expect: === <!-- head and everything --> <body> </body> </html> === But, much to my surprise, the return is: === <!-- head and everything --> <body> some text </body> </html> === It also happens if "/include" returns 500. I checked the headers, they are okay. It happens both with 2.0.2 and trunk, OS is Gentoo Linux and OS X. So, I am beginning to wonder on how esi:include is implemented in varnish or what I am doing wrong. Because - granted - the ESI specification could be interpreted to include the element without giving much thought on what the returned entity actually represents. Then this would be the correct behaviour, as the backend is obviously responding. To potentially save you some work, i'll include my demo script (in ruby/sinatra) and the vcl below. Thank you for your time, Florian Gilcher -- esi.rb: === #!/usr/bin/env ruby # to use this, you need ruby, configured with zlib and rubygems installed # to install sinatra, run "gem install sinatra" require 'rubygems' require 'sinatra' get '/include' do response.status = 500 "some text" end get '/alt' do response.status = 500 "some other text" end get '/' do '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Page Title</title> </head> <body> <esi:include src="/include" alt="/alt" onerror="continue" /> </body> </html>' end === esi.vcl === backend www { .host = "127.0.0.1"; .port = "4567"; } sub vcl_fetch { esi; } === _______________________________________________ varnish-misc mailing list varnish-misc@projects.linpro.no http://projects.linpro.no/mailman/listinfo/varnish-misc