<div dir="ltr">because you return deliver, you are bypassing the builtin.vcl section that usually calls synthetic() (<a href="https://github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/builtin.vcl#L113">https://github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/builtin.vcl#L113</a>), that is why you have a 0-length body.<div><br></div><div>Also, the "Invalidated..." message is the reason (like the "OK" for a 200), not the body. Check the response line of your response (i.e. the first line, before the headers)</div><div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>-- <br></div>Guillaume Quintard<br></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 29, 2019 at 11:38 AM Tim Kelty <<a href="mailto:timkelty@gmail.com">timkelty@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div>
<div name="messageBodySection">
<div dir="auto">Within my vcl_recv, I have something like this:
<div dir="auto"><br></div>
<div dir="auto"><br></div>
<div dir="auto">
<div style="color:rgb(204,204,204);background-color:rgb(45,45,45);font-size:18px;line-height:27px;white-space:pre-wrap">
<div><span style="color:rgb(153,153,153)"># Allow purging</span></div>
<div><span style="color:rgb(204,153,204)">if</span> (<span style="color:rgb(242,119,122)">req.method</span> == <span style="color:rgb(153,204,153)">"PURGE"</span>) {</div>
<div><span style="color:rgb(204,153,204)">if</span> (!<span style="color:rgb(242,119,122)">client.ip</span> ~ <span style="color:rgb(102,153,204)">purge</span>) {</div>
<div><span style="color:rgb(204,153,204)">return</span> (<span style="color:rgb(249,145,87)">synth</span>(403, "Forbidden"));</div>
<div>}</div>
<br>
<div><span style="color:rgb(204,153,204)">if</span> (<span style="color:rgb(242,119,122)">req.http.xkey-purge</span>) {</div>
<div><span style="color:rgb(204,153,204)">set</span> <span style="color:rgb(242,119,122)">req.http.n-gone</span> = xkey.<span style="color:rgb(102,153,204)">purge</span>(<span style="color:rgb(242,119,122)">req.http.xkey-purge</span>);</div>
<div><span style="color:rgb(153,153,153)"># If you got this stage (and didn't error out above), purge the cached result</span></div>
<div><span style="color:rgb(204,153,204)">return</span> (<span style="color:rgb(249,145,87)">synth</span>(200, "Invalidated "+req.http.n-gone+" objects"));</div>
<div>} <span style="color:rgb(204,153,204)">else</span> {</div>
<div><span style="color:rgb(204,153,204)">return</span> (<span style="color:rgb(249,145,87)">purge</span>);</div>
<div>}</div>
<br>
<div>}</div>
</div>
</div>
</div>
</div>
<div name="messageSignatureSection"><br>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto">…and a a vcl_synth like:</div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto"><br></div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto">
<div style="color:rgb(204,204,204);background-color:rgb(45,45,45);line-height:27px;white-space:pre-wrap">
<div><span style="color:rgb(204,153,204)">sub</span> vcl_synth {</div>
<div><span style="color:rgb(204,153,204)">if</span> (<span style="color:rgb(242,119,122)">resp.status</span> == <span style="color:rgb(249,145,87)">720</span>) {</div>
<div><span style="color:rgb(153,153,153)"># We use this special error status 720 to force redirects with 301 (permanent) redirects</span></div>
<div><span style="color:rgb(153,153,153)"># To use this, call the following from anywhere in vcl_recv: return (synth(720, "<a href="http://host/new.html" target="_blank">http://host/new.html</a>"));</span></div>
<div><span style="color:rgb(204,153,204)">set</span> <span style="color:rgb(242,119,122)">resp.http.Location</span> = <span style="color:rgb(242,119,122)">resp.reason</span>;</div>
<div><span style="color:rgb(204,153,204)">set</span> <span style="color:rgb(242,119,122)">resp.status</span> = <span style="color:rgb(249,145,87)">301</span>;</div>
<div><span style="color:rgb(204,153,204)">return</span> (<span style="color:rgb(249,145,87)">deliver</span>);</div>
<div>} <span style="color:rgb(204,153,204)">elseif</span> (<span style="color:rgb(242,119,122)">resp.status</span> == <span style="color:rgb(249,145,87)">721</span>) {</div>
<div><span style="color:rgb(153,153,153)"># And we use error status 721 to force redirects with a 302 (temporary) redirect</span></div>
<div><span style="color:rgb(153,153,153)"># To use this, call the following from anywhere in vcl_recv: return (synth(720, "<a href="http://host/new.html" target="_blank">http://host/new.html</a>"));</span></div>
<div><span style="color:rgb(204,153,204)">set</span> <span style="color:rgb(242,119,122)">resp.http.Location</span> = <span style="color:rgb(242,119,122)">resp.reason</span>;</div>
<div><span style="color:rgb(204,153,204)">set</span> <span style="color:rgb(242,119,122)">resp.status</span> = <span style="color:rgb(249,145,87)">302</span>;</div>
<div><span style="color:rgb(204,153,204)">return</span> (<span style="color:rgb(249,145,87)">deliver</span>);</div>
<div>}</div>
<br>
<div><span style="color:rgb(204,153,204)">return</span> (<span style="color:rgb(249,145,87)">deliver</span>);</div>
<div>}</div>
</div>
</div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto"><br></div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto"><br></div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto">When I perform the xkey-purge request, I get back a 200, and can confirm that the purging is working, but the content-length is always 0 (I don't get the "Invalidated n objects" message).</div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto"><br></div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto">Not sure where to start debugging…any idea what could cause this?</div>
<div class="gmail-m_-1709242024992442460matchFont" dir="auto"><br></div>
<div class="gmail-m_-1709242024992442460matchFont">—<br>
Tim Kelty</div>
</div>
</div>

_______________________________________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org" target="_blank">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a><br>
</blockquote></div>