[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