Synthetic objects
Dridi Boukelmoune
dridi.boukelmoune at zenika.com
Wed Jul 3 15:38:29 CEST 2013
Hi,
I'm not sure I understand the purpose, is it for a separations of:
- true errors (from backends/varnish or hand made)
- on-the-fly static responses (redirects, static files...)
In this case it could be interesting to jump to vcl_backend_synth from vcl_recv:
if (req.url ~ "...") {
return(synth(42302));
}
The syntax looks inconsistent, I'd rather have something like:
return(transition [, args])
Examples:
return(lookup);
return(synth, 10001404);
return(error, 10001503);
return(error, 10001503, "message");
It would also help to have constants for magic status codes:
===
// outside of sub functions
const BACKEND_DOWN = 503;
const MAINTENANCE = 1503;
sub vcl_backend_response {
if (beresp looks maintenance-ish) {
return(error, MAINTENANCE);
}
}
sub vcl_error {
if (obj.status == BACKEND_DOWN) {
synthetic "dammit";
}
if (obj.status == MAINTENANCE) {
synthetic std.fileread("maintenance.html");
}
}
===
About Varnish turning into a web server, there's nothing to worry
about with just that, synthetic+std.fileread can't handle most
binary files.
Best Regards,
Dridi
On Wed, Jul 3, 2013 at 2:39 PM, Poul-Henning Kamp <phk at phk.freebsd.dk> wrote:
> In message <CANTTouWnQnqtL6N5z=roCe-zxju=wdtOie-a7xwkmo1=CijKtw at mail.gmail.com>
> , "Rogier 'DocWilco' Mulhuijzen" writes:
>
>>If we're changing things, it would be useful to have something in synth
>>other than a 3 digit status code.
>
> We came up with an idea for this in the IRC channel:
>
> We'll allow any number of digits (up to 32bits) but only the last
> three will be used for the HTTP status code.
>
> So you could for instance do
> return (synth(10001404));
>
> and that would become a 404, but you get extra bits for your
> own purposes.
>
> Also, please notice that you have bereq to look at.
>
>
> --
> Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
> phk at FreeBSD.ORG | TCP/IP since RFC 956
> FreeBSD committer | BSD since 4.3-tahoe
> Never attribute to malice what can adequately be explained by incompetence.
>
> _______________________________________________
> varnish-dev mailing list
> varnish-dev at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev
More information about the varnish-dev
mailing list