[master] 6afc5a4 Make it possible to truly change a parameters default value, rather than hackishly just setting its value to the wanted default.
Poul-Henning Kamp
phk at varnish-cache.org
Tue Jan 8 12:23:54 CET 2013
commit 6afc5a44affb38d844fb76df03a803b28c540f23
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Jan 8 11:23:13 2013 +0000
Make it possible to truly change a parameters default value, rather
than hackishly just setting its value to the wanted default.
Fixes #1244
diff --git a/bin/varnishd/mgt/mgt.h b/bin/varnishd/mgt/mgt.h
index 905fbcc..b66e729 100644
--- a/bin/varnishd/mgt/mgt.h
+++ b/bin/varnishd/mgt/mgt.h
@@ -67,7 +67,9 @@ struct choice {
const void *pick(const struct choice *cp, const char *which, const char *kind);
/* mgt_param.c */
-void MCF_ParamInit(struct cli *);
+void MCF_InitParams(struct cli *);
+void MCF_CollectParams(void);
+void MCF_SetDefault(const char *param, const char *def);
void MCF_ParamSet(struct cli *, const char *param, const char *val);
void MCF_ParamProtect(struct cli *, const char *arg);
void MCF_DumpRstParam(void);
diff --git a/bin/varnishd/mgt/mgt_main.c b/bin/varnishd/mgt/mgt_main.c
index 2b3c709..b5829a9 100644
--- a/bin/varnishd/mgt/mgt_main.c
+++ b/bin/varnishd/mgt/mgt_main.c
@@ -378,29 +378,22 @@ main(int argc, char * const *argv)
VTAILQ_INIT(&heritage.socks);
- MCF_ParamInit(cli);
+ MCF_CollectParams();
if (sizeof(void *) < 8) {
/*
* Adjust default parameters for 32 bit systems to conserve
* VM space.
*/
- MCF_ParamSet(cli, "workspace_client", "24k");
- cli_check(cli);
-
- MCF_ParamSet(cli, "workspace_backend", "16k");
- cli_check(cli);
-
- MCF_ParamSet(cli, "http_resp_size", "8k");
- cli_check(cli);
-
- MCF_ParamSet(cli, "http_req_size", "12k");
- cli_check(cli);
-
- MCF_ParamSet(cli, "gzip_buffer", "4k");
- cli_check(cli);
+ MCF_SetDefault("workspace_client", "24k");
+ MCF_SetDefault("workspace_backend", "16k");
+ MCF_SetDefault("http_resp_size", "8k");
+ MCF_SetDefault("http_req_size", "12k");
+ MCF_SetDefault("gzip_buffer", "4k");
}
+ MCF_InitParams(cli);
+
cli_check(cli);
while ((o = getopt(argc, argv,
diff --git a/bin/varnishd/mgt/mgt_param.c b/bin/varnishd/mgt/mgt_param.c
index 97e3f4e..b7baafd 100644
--- a/bin/varnishd/mgt/mgt_param.c
+++ b/bin/varnishd/mgt/mgt_param.c
@@ -879,12 +879,19 @@ MCF_SetDefaults(struct cli *cli)
/*--------------------------------------------------------------------*/
void
-MCF_ParamInit(struct cli *cli)
+MCF_CollectParams(void)
{
MCF_AddParams(mgt_parspec);
MCF_AddParams(WRK_parspec);
MCF_AddParams(VSL_parspec);
+}
+
+/*--------------------------------------------------------------------*/
+
+void
+MCF_InitParams(struct cli *cli)
+{
/* XXX: We do this twice, to get past any interdependencies */
MCF_SetDefaults(NULL);
@@ -894,6 +901,25 @@ MCF_ParamInit(struct cli *cli)
/*--------------------------------------------------------------------*/
void
+MCF_SetDefault(const char *param, const char *def)
+{
+ struct parspec *pn;
+ int i;
+
+ for (i = 0; i < nparspec; i++)
+ if (!strcmp(parspecs[i]->name, param))
+ break;
+ assert(i < nparspec);
+ pn = malloc(sizeof *pn);
+ AN(pn);
+ *pn = *(parspecs[i]);
+ pn->def = def;
+ parspecs[i] = pn;
+}
+
+/*--------------------------------------------------------------------*/
+
+void
MCF_DumpRstParam(void)
{
const struct parspec *pp;
More information about the varnish-commit
mailing list