X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/e5a9dba621b4301bfbe2bc05576ddc5ec752b1b5..b2f5a03200c914f601bc9d28c6e069316a3b20eb:/src/src/readconf.c diff --git a/src/src/readconf.c b/src/src/readconf.c index be935bd11..2a0b9d120 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/readconf.c,v 1.8 2005/05/10 10:19:11 ph10 Exp $ */ +/* $Cambridge: exim/src/src/readconf.c,v 1.14 2005/09/19 14:01:51 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -186,6 +186,8 @@ static optionlist optionlist_config[] = { { "check_spool_space", opt_Kint, &check_spool_space }, { "daemon_smtp_port", opt_stringptr|opt_hidden, &daemon_smtp_port }, { "daemon_smtp_ports", opt_stringptr, &daemon_smtp_port }, + { "daemon_startup_retries", opt_int, &daemon_startup_retries }, + { "daemon_startup_sleep", opt_time, &daemon_startup_sleep }, { "delay_warning", opt_timelist, &delay_warning }, { "delay_warning_condition", opt_stringptr, &delay_warning_condition }, { "deliver_drop_privilege", opt_bool, &deliver_drop_privilege }, @@ -337,8 +339,17 @@ static optionlist optionlist_config[] = { #endif { "split_spool_directory", opt_bool, &split_spool_directory }, { "spool_directory", opt_stringptr, &spool_directory }, +#ifdef LOOKUP_SQLITE + { "sqlite_lock_timeout", opt_int, &sqlite_lock_timeout }, +#endif #ifdef EXPERIMENTAL_SRS { "srs_config", opt_stringptr, &srs_config }, + { "srs_hashlength", opt_int, &srs_hashlength }, + { "srs_hashmin", opt_int, &srs_hashmin }, + { "srs_maxage", opt_int, &srs_maxage }, + { "srs_secrets", opt_stringptr, &srs_secrets }, + { "srs_usehash", opt_bool, &srs_usehash }, + { "srs_usetimestamp", opt_bool, &srs_usetimestamp }, #endif { "strip_excess_angle_brackets", opt_bool, &strip_excess_angle_brackets }, { "strip_trailing_dot", opt_bool, &strip_trailing_dot }, @@ -595,7 +606,7 @@ for (;;) { if (config_file_stack != NULL) /* EOF inside .include */ { - fclose(config_file); + (void)fclose(config_file); config_file = config_file_stack->file; config_filename = config_file_stack->filename; config_lineno = config_file_stack->lineno; @@ -1614,10 +1625,16 @@ switch (type) int count = 1; uid_t *list; int ptr = 0; - uschar *p = sptr; + uschar *p; + uschar *op = expand_string (sptr); + + if (op == NULL) + log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "failed to expand %s: %s", + name, expand_string_message); + p = op; if (*p != 0) count++; - while (*p != 0) if (*p++ == ':') count++; + while (*p != 0) if (*p++ == ':' && *p != 0) count++; list = store_malloc(count*sizeof(uid_t)); list[ptr++] = (uid_t)(count - 1); @@ -1626,7 +1643,7 @@ switch (type) else *((uid_t **)((uschar *)data_block + (long int)(ol->value))) = list; - p = sptr; + p = op; while (count-- > 1) { int sep = 0; @@ -1649,10 +1666,16 @@ switch (type) int count = 1; gid_t *list; int ptr = 0; - uschar *p = sptr; + uschar *p; + uschar *op = expand_string (sptr); + + if (op == NULL) + log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "failed to expand %s: %s", + name, expand_string_message); + p = op; if (*p != 0) count++; - while (*p != 0) if (*p++ == ':') count++; + while (*p != 0) if (*p++ == ':' && *p != 0) count++; list = store_malloc(count*sizeof(gid_t)); list[ptr++] = (gid_t)(count - 1); @@ -1661,7 +1684,7 @@ switch (type) else *((gid_t **)((uschar *)data_block + (long int)(ol->value))) = list; - p = sptr; + p = op; while (count-- > 1) { int sep = 0; @@ -3543,6 +3566,7 @@ while ((p = get_config_line()) != NULL) break; case 'G': /* Geometrically increasing intervals */ + case 'H': /* Ditto, but with randomness */ rule->p1 = retry_arg(&p, 0); rule->p2 = retry_arg(&p, 1); break; @@ -3553,7 +3577,7 @@ while ((p = get_config_line()) != NULL) } if (rule->timeout <= 0 || rule->p1 <= 0 || - (rule->rule == 'G' && rule->p2 < 1000)) + (rule->rule != 'F' && rule->p2 < 1000)) log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "bad parameters for retry rule"); @@ -3803,7 +3827,7 @@ while(next_section[0] != 0) } } -fclose(config_file); +(void)fclose(config_file); } /* End of readconf.c */