]> err.no Git - varnish/commitdiff
Move implicit reference to first backend to the xref code.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Fri, 21 Sep 2007 08:16:02 +0000 (08:16 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Fri, 21 Sep 2007 08:16:02 +0000 (08:16 +0000)
Don't panic if no backend.port is specified.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1975 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/lib/libvcl/vcc_backend.c
varnish-cache/lib/libvcl/vcc_xref.c

index 75e58fa663fc8d8f89b71a0168916678c29155e1..b770836d6a90f160ca1a122914bad122fb22c732 100644 (file)
@@ -71,12 +71,6 @@ vcc_ParseSimpleBackend(struct tokenlist *tl)
        ExpectErr(tl, ID);
        t_be = tl->t;
        vcc_AddDef(tl, tl->t, R_BACKEND);
-       /*
-        * The first backend is always referenced because that is the default
-        * at the beginning of vcl_recv
-        */
-       if (tl->nbackend == 0)
-               vcc_AddRef(tl, tl->t, R_BACKEND);
 
        /* In the compiled vcl we use these macros to refer to backends */
        Fh(tl, 1, "#define VGC_backend_%.*s (VCL_conf.backend[%d])\n",
@@ -153,7 +147,10 @@ vcc_ParseSimpleBackend(struct tokenlist *tl)
        Fc(tl, 0, "\nstatic struct vrt_simple_backend sbe_%.*s = {\n",
            PF(t_be));
        Fc(tl, 0, "\t.name = \"%.*s\",\n", PF(t_be));
-       Fc(tl, 0, "\t.port = %.*s,\n", PF(t_port));
+       if (t_port != NULL)
+               Fc(tl, 0, "\t.port = %.*s,\n", PF(t_port));
+       else
+               Fc(tl, 0, "\t.port = \"http\",\n");
        Fc(tl, 0, "\t.host = %.*s,\n", PF(t_host));
        Fc(tl, 0, "};\n");
        Fi(tl, 0, "\tVRT_init_simple_backend(&VGC_backend_%.*s , &sbe_%.*s);\n",
@@ -180,12 +177,6 @@ vcc_ParseBalancedBackend(struct tokenlist *tl)
        ExpectErr(tl, ID);
        t_be = tl->t;
        vcc_AddDef(tl, tl->t, R_BACKEND);
-       /*
-        * The first backend is always referenced because that is the default
-        * at the beginning of vcl_recv
-        */
-       if (tl->nbackend == 0)
-               vcc_AddRef(tl, tl->t, R_BACKEND);
 
        /* In the compiled vcl we use these macros to refer to backends */
        Fh(tl, 1, "#define VGC_backend_%.*s (VCL_conf.backend[%d])\n",
index 83821bf1610a988bfea9b896c60a7df03e26c70a..6755b6e3400bebfbdf1217124add50d20dbde41b 100644 (file)
@@ -139,6 +139,10 @@ vcc_AddDef(struct tokenlist *tl, struct token *t, enum ref_type type)
        }
        r->defcnt++;
        r->name = t;
+
+       /* The first backend is the default and thus has an implicit ref */
+       if (type == R_BACKEND && tl->nbackend == 0)
+               r->refcnt++;
 }
 
 /*--------------------------------------------------------------------*/