aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index 65d9b0acb..2c13c702f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2117,12 +2117,21 @@ static int parseconfig(const char *filename,
line++;
*line=0; /* zero terminate */
}
+
+ if (param && !*param) {
+ /* do this so getparameter can check for required parameters.
+ Otherwise it always thinks there's a parameter. */
+ if (alloced_param)
+ free(param);
+ param = NULL;
+ }
+
#ifdef DEBUG_CONFIG
- fprintf(stderr, "PARAM: \"%s\"\n", param);
+ fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
#endif
res = getparameter(option, param, &usedarg, config);
- if(*param && !usedarg)
+ if (param && *param && !usedarg)
/* we passed in a parameter that wasn't used! */
res = PARAM_GOT_EXTRA_PARAMETER;
@@ -2139,7 +2148,10 @@ static int parseconfig(const char *filename,
}
if(alloced_param)
+ {
free(param);
+ param = NULL;
+ }
free(aline);
}
@@ -3371,7 +3383,7 @@ operate(struct Configurable *config, int argc, char *argv[])
if(config->headerfile && !headerfilep && heads.stream)
fclose(heads.stream);
- if(config->trace_fopened)
+ if(config->trace_fopened && config->trace_stream)
fclose(config->trace_stream);
if(allocuseragent)