OK I think this is because &#39;error&#39; is not allowed in vcl_deliver.  After some google I found this guy had the same problem with me in 2008.<div><a href="http://www.mail-archive.com/varnish-dev@projects.linpro.no/msg00372.html">http://www.mail-archive.com/varnish-dev@projects.linpro.no/msg00372.html</a></div>
<div><br></div><div><a href="http://www.mail-archive.com/varnish-dev@projects.linpro.no/msg00372.html"></a>But this thread ended up with no solution. </div><div><br></div><div>Please help.</div><div><br></div><div>pahud<br>
<br><div class="gmail_quote">On Tue, Jul 6, 2010 at 6:23 PM, Pahud <span dir="ltr">&lt;<a href="mailto:pahudnet@gmail.com">pahudnet@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I tried varnishd (varnish-2.1.2 SVN 4769:4772) on Gentoo Linux today. And the VCL compilation failed:<div><div><br></div><div><div>Message from VCC-compiler:</div><div>Variable &#39;obj.http.X-Cache-Only&#39; not accessible in method &#39;vcl_fetch&#39;.</div>

<div>At: (input Line 106 Pos 21)</div><div class="im"><div>                set obj.http.X-Cache-Only = &quot;true&quot;;</div></div><div>--------------------#####################----------</div><div>Running VCC-compiler failed, exit 1</div>
<div>
VCL compilation failed</div><div><br></div><div>I also tried </div><div><div>set resp.http.X-Cache-Only = &quot;true&quot;;</div></div><div>but still failed.</div><div><br></div><div>:(</div><div><br></div><font color="#888888"><div>
pahud</div></font><div><div></div><div class="h5">
<div><br></div><br><div class="gmail_quote">On Mon, Jul 5, 2010 at 10:49 PM, Pahud <span dir="ltr">&lt;<a href="mailto:pahudnet@gmail.com" target="_blank">pahudnet@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Thanks for your quick reply. I tried your config and varnish started with no error but if I send http request in this case, varnish will have empty response. And if I comment off the vcl_deliver it responds as normal.  Can you help me a little bit more? Thanks again.<div>


<br></div><div><font color="#888888">pahud</font><div><div></div><div><br><div><br></div><div><br><div><br></div><div><br><div><div><br><div class="gmail_quote">On Mon, Jul 5, 2010 at 10:11 PM, Kristian Lyngstøl <span dir="ltr">&lt;<a href="mailto:kristian@varnish-software.com" target="_blank">kristian@varnish-software.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On Mon, Jul 5, 2010 at 3:17 PM, Pahud &lt;<a href="mailto:pahudnet@gmail.com" target="_blank">pahudnet@gmail.com</a>&gt; wrote:<br>



&gt; vcl_deliver(). So I tried this configuration<br>
&gt; sub vcl_deliver {<br>
&gt;          if (req.http.Cache-Control ~ &quot;just-cache&quot;) {<br>
&gt;                error 200 &quot;Cached&quot;;<br>
&gt;                return (pass);<br>
<br>
</div>return (pass); doesn&#39;t work from vcl_deliver, nor is it needed after<br>
an error-statement.<br>
<div><br>
&gt;          }<br>
&gt;     return (deliver);<br>
&gt; }<br>
&gt; But no good luck. I guess vcl_deliver just can&#39;t get the value of<br>
&gt;  req.http.Cache-Control.<br>
&gt; Is it still possible to achieve this just with VCL?<br>
<br>
</div>Hmm. What you could do is:<br>
<br>
In vcl_fetch: if (req.http.Cache-Control ~ &quot;just-cache&quot;) { set<br>
obj.http.X-Cache-Only = &quot;true&quot;; }<br>
In vcl_deliver:<br>
<br>
if (resp.http.X-Cache-Only == &quot;true&quot;) {<br>
    if (obj.hits == 0) {<br>
        error 795 &quot;Cached&quot;;<br>
    } else {<br>
        remove resp.http.X-Cache-Only;<br>
    }<br>
}<br>
<br>
I used the error code 795 to differentiate from 200, so you can catch<br>
it in vcl_error and strip most of the content of the error message if<br>
you want to. You may use whatever error code you want, of course.<br>
<br>
(I haven&#39;t tested this, but I don&#39;t see why it shouldn&#39;t work, except<br>
perhaps syntax typos).<br>
<font color="#888888"><br>
- Kristian<br>
</font></blockquote></div><br></div></div></div></div></div></div></div>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>