diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 78 |
1 files changed, 17 insertions, 61 deletions
@@ -78,6 +78,7 @@ int stack_trace_option; /* Print stack traces on runtime errors */ size_t max_match_mx = MAXMXCOUNT; char *main_function_name = "main"; +char *default_callout_url = DEFAULT_CALLOUT_SOCKET; /* Preprocessor helper function */ @@ -178,12 +179,6 @@ log_status(sfsistat status, SMFICTX *ctx) static mu_list_t domain_list; -int -compare_string(const void *item, const void *value) -{ - return strcmp(item, value); -} - /* Read domains from sendmail-style domain file NAME and store them in DOMAIN_LIST */ int @@ -202,7 +197,7 @@ read_domain_file(mu_debug_t err, const char *name) if (!domain_list) { mu_list_create(&domain_list); - mu_list_set_comparator(domain_list, compare_string); + mu_list_set_comparator(domain_list, mf_list_compare_string); } while (p = fgets(buf, sizeof buf, fp)) { @@ -795,40 +790,6 @@ cb_set_variable(mu_debug_t err, void *data, mu_config_value_t *arg) } static int -cb_ehlo_domain(mu_debug_t err, void *data, mu_config_value_t *arg) -{ - if (mu_cfg_assert_value_type(arg, MU_CFG_STRING, err)) - return 1; - defer_initialize_variable("ehlo_domain", arg->v.string); - return 0; -} - -static int -mf_option_mailfrom(mu_debug_t err, const char *arg) -{ - int rc; - mu_address_t addr; - - rc = mu_address_create(&addr, arg); - if (rc) { - mf_error_on_locus(err, _("cannot create address `%s': %s"), - arg, mu_strerror(rc)); - return 1; - } - mu_address_destroy(&addr); - defer_initialize_variable("mailfrom_address", arg); - return 0; -} - -static int -cb_mail_from_address(mu_debug_t err, void *data, mu_config_value_t *arg) -{ - if (mu_cfg_assert_value_type(arg, MU_CFG_STRING, err)) - return 1; - return mf_option_mailfrom(err, arg->v.string); -} - -static int cb_include_path(mu_debug_t err, void *data, mu_config_value_t *val) { int i, rc = 0; @@ -933,21 +894,10 @@ struct mu_cfg_param mf_cfg_param[] = { { "milter-timeout", mu_cfg_callback, NULL, 0, cb_milter_timeout, N_("Set milter timeout."), N_("time") }, -#if 0 - /* FIXME */ - { "io-timeout", mu_cfg_callback, &io_timeout, 0, cb_timeout, - N_("Timeout for all SMTP I/O operations."), - N_("time") }, -#endif - - { "ehlo-domain", mu_cfg_callback, NULL, 0, cb_ehlo_domain, - N_("Set the domain name for EHLO command.") }, - { "mail-from-address", mu_cfg_callback, NULL, 0, cb_mail_from_address, - N_("Set email address for use in SMTP `MAIL FROM' command. " - "Argument is an email address or a comma-separated list of " - "addresses. Use <> for null address. Other addresses can " - "be given without angle brackets."), - N_("addr") }, + { "callout-url", mu_cfg_string, &default_callout_url, 0, NULL, + N_("Sets the URL of the default callout server. " + "Deprecated. Use `setvar callout_server_url <url>;' instead."), + N_("url") }, { "include-path", mu_cfg_callback, NULL, 0, cb_include_path, N_("Add directories to the list of directories to be searched for " "header files. Argument is a list of directory names " @@ -1177,12 +1127,18 @@ static char *modnames[] = { int -mf_server_function(const char *key, mfd_server_func_t *pret) +mf_server_function(const char *key, struct mf_srvcfg *cfg) { if (!key || strcmp(key, "default") == 0 || strcmp(key, "milter") == 0) - *pret = milter_session_server; - else if (strcmp(key, "callout") == 0) - *pret = callout_session_server; + cfg->server = milter_session_server; + else if (strcmp(key, "callout") == 0) { + cfg->server = callout_session_server; + if (cfg->defopt || + mu_list_locate(cfg->options, "default", NULL)) + default_callout_url = + xstrdup(mu_url_to_string(cfg->url)); + } else + return 1; return 0; } @@ -1238,6 +1194,7 @@ main(int argc, char **argv) if (rc) exit(EX_CONFIG); flush_arguments(&args); + mf_srvcfg_flush(); alloc_ext_pp(); @@ -1282,7 +1239,6 @@ main(int argc, char **argv) if (parse_program(script_file, script_ydebug)) exit(EX_CONFIG); } - mf_srvcfg_flush(); fixup_create_script(); |