Commit 61a5d17f authored by Dridi Boukelmoune's avatar Dridi Boukelmoune

vtc: Make all relevant commands start varnishd

And wrap the logic in a macro to reduce duplication.
parent 76a580db
...@@ -530,6 +530,15 @@ varnish_launch(struct varnish *v) ...@@ -530,6 +530,15 @@ varnish_launch(struct varnish *v)
AZ(pthread_create(&v->tp_vsl, NULL, varnishlog_thread, v)); AZ(pthread_create(&v->tp_vsl, NULL, varnishlog_thread, v));
} }
#define VARNISH_LAUNCH(v) \
do { \
CHECK_OBJ_NOTNULL(v, VARNISH_MAGIC); \
if (v->cli_fd < 0) \
varnish_launch(v); \
if (vtc_error) \
return; \
} while (0)
/********************************************************************** /**********************************************************************
* Start a Varnish * Start a Varnish
*/ */
...@@ -598,10 +607,7 @@ varnish_start(struct varnish *v) ...@@ -598,10 +607,7 @@ varnish_start(struct varnish *v)
enum VCLI_status_e u; enum VCLI_status_e u;
char *resp = NULL; char *resp = NULL;
if (v->cli_fd < 0) VARNISH_LAUNCH(v);
varnish_launch(v);
if (vtc_error)
return;
vtc_log(v->vl, 2, "Start"); vtc_log(v->vl, 2, "Start");
u = varnish_ask_cli(v, "start", &resp); u = varnish_ask_cli(v, "start", &resp);
if (vtc_error) if (vtc_error)
...@@ -639,10 +645,8 @@ varnish_start(struct varnish *v) ...@@ -639,10 +645,8 @@ varnish_start(struct varnish *v)
static void static void
varnish_stop(struct varnish *v) varnish_stop(struct varnish *v)
{ {
if (v->cli_fd < 0)
varnish_launch(v); VARNISH_LAUNCH(v);
if (vtc_error)
return;
vtc_log(v->vl, 2, "Stop"); vtc_log(v->vl, 2, "Stop");
(void)varnish_ask_cli(v, "stop", NULL); (void)varnish_ask_cli(v, "stop", NULL);
wait_stopped(v); wait_stopped(v);
...@@ -713,10 +717,7 @@ varnish_cli_json(struct varnish *v, const char *cli) ...@@ -713,10 +717,7 @@ varnish_cli_json(struct varnish *v, const char *cli)
const char *errptr; const char *errptr;
struct vjsn *vj; struct vjsn *vj;
if (v->cli_fd < 0) VARNISH_LAUNCH(v);
varnish_launch(v);
if (vtc_error)
return;
u = varnish_ask_cli(v, cli, &resp); u = varnish_ask_cli(v, cli, &resp);
vtc_log(v->vl, 2, "CLI %03u <%s>", u, cli); vtc_log(v->vl, 2, "CLI %03u <%s>", u, cli);
if (u != CLIS_OK) if (u != CLIS_OK)
...@@ -742,18 +743,12 @@ varnish_cli(struct varnish *v, const char *cli, unsigned exp, const char *re) ...@@ -742,18 +743,12 @@ varnish_cli(struct varnish *v, const char *cli, unsigned exp, const char *re)
const char *errptr; const char *errptr;
int err; int err;
VARNISH_LAUNCH(v);
if (re != NULL) { if (re != NULL) {
vre = VRE_compile(re, 0, &errptr, &err); vre = VRE_compile(re, 0, &errptr, &err);
if (vre == NULL) if (vre == NULL)
vtc_fatal(v->vl, "Illegal regexp"); vtc_fatal(v->vl, "Illegal regexp");
} }
if (v->cli_fd < 0)
varnish_launch(v);
if (vtc_error) {
if (vre != NULL)
VRE_free(&vre);
return;
}
u = varnish_ask_cli(v, cli, &resp); u = varnish_ask_cli(v, cli, &resp);
vtc_log(v->vl, 2, "CLI %03u <%s>", u, cli); vtc_log(v->vl, 2, "CLI %03u <%s>", u, cli);
if (exp != 0 && exp != (unsigned)u) if (exp != 0 && exp != (unsigned)u)
...@@ -777,10 +772,7 @@ varnish_vcl(struct varnish *v, const char *vcl, int fail, char **resp) ...@@ -777,10 +772,7 @@ varnish_vcl(struct varnish *v, const char *vcl, int fail, char **resp)
struct vsb *vsb; struct vsb *vsb;
enum VCLI_status_e u; enum VCLI_status_e u;
if (v->cli_fd < 0) VARNISH_LAUNCH(v);
varnish_launch(v);
if (vtc_error)
return;
vsb = VSB_new_auto(); vsb = VSB_new_auto();
AN(vsb); AN(vsb);
...@@ -816,10 +808,7 @@ varnish_vclbackend(struct varnish *v, const char *vcl) ...@@ -816,10 +808,7 @@ varnish_vclbackend(struct varnish *v, const char *vcl)
struct vsb *vsb, *vsb2; struct vsb *vsb, *vsb2;
enum VCLI_status_e u; enum VCLI_status_e u;
if (v->cli_fd < 0) VARNISH_LAUNCH(v);
varnish_launch(v);
if (vtc_error)
return;
vsb = VSB_new_auto(); vsb = VSB_new_auto();
AN(vsb); AN(vsb);
...@@ -885,10 +874,11 @@ do_stat_dump_cb(void *priv, const struct VSC_point * const pt) ...@@ -885,10 +874,11 @@ do_stat_dump_cb(void *priv, const struct VSC_point * const pt)
} }
static void static void
varnish_vsc(const struct varnish *v, const char *arg) varnish_vsc(struct varnish *v, const char *arg)
{ {
struct dump_priv dp; struct dump_priv dp;
VARNISH_LAUNCH(v);
memset(&dp, 0, sizeof dp); memset(&dp, 0, sizeof dp);
dp.v = v; dp.v = v;
dp.arg = arg; dp.arg = arg;
...@@ -955,13 +945,14 @@ do_expect_cb(void *priv, const struct VSC_point * const pt) ...@@ -955,13 +945,14 @@ do_expect_cb(void *priv, const struct VSC_point * const pt)
*/ */
static void static void
varnish_expect(const struct varnish *v, char * const *av) varnish_expect(struct varnish *v, char * const *av)
{ {
struct stat_priv sp; struct stat_priv sp;
int good, i, not; int good, i, not;
uintmax_t u; uintmax_t u;
char *l, *p; char *l, *p;
VARNISH_LAUNCH(v);
ZERO_OBJ(&sp, sizeof sp); ZERO_OBJ(&sp, sizeof sp);
l = av[0]; l = av[0];
not = (*l == '!'); not = (*l == '!');
...@@ -1026,10 +1017,11 @@ varnish_expect(const struct varnish *v, char * const *av) ...@@ -1026,10 +1017,11 @@ varnish_expect(const struct varnish *v, char * const *av)
} }
static void static void
vsl_catchup(const struct varnish *v) vsl_catchup(struct varnish *v)
{ {
int vsl_idle; int vsl_idle;
VARNISH_LAUNCH(v);
vsl_idle = v->vsl_idle; vsl_idle = v->vsl_idle;
while (!vtc_error && vsl_idle == v->vsl_idle) while (!vtc_error && vsl_idle == v->vsl_idle)
VTIM_sleep(0.1); VTIM_sleep(0.1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment