• Poul-Henning Kamp's avatar
    Fix an architectural mistake: · 770fb201
    Poul-Henning Kamp authored
    What the compiled VCL code contains is not "a backend" but more
    like a specification of or a template of a backend.
    
    This matters because it controls the ownership of the backend
    structure, and to a lesser degree because it complicates the VRT
    api with a lot of pointless functions.
    
    When vcl.use switches to a different VCL program, the backends of
    the old VCL program may still be in use, and, provided the backend
    declarations of the two VCL programs are identical, should continue
    be carried over to the new VCL code.
    
    This requires the memory and state to be owned by the central backend
    code, and the VCL programs to just hold references and becomes even
    more important when we keep complex state for load balancing on
    individual backends.
    
    This commit changes the ownership of the backends to the central code,
    and moves the specification used in the compiled VCL program to a
    communication structure for just that.
    
    This also paves the way for introducing directors/policies for backend
    selection and for good measure, I have named the default (ie: current)
    backend policy "simple" for now.
    
    
    
    git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@1829 d4fa192b-c00b-0410-8231-f00ffab90ce4
    770fb201
vcc_compile.c 15.9 KB