diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-03-17 23:01:29 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-03-18 10:30:16 +0200 |
commit | ca22428399f3b4eeef51b289e91d31a3cdec0b72 (patch) | |
tree | 90ceb21f9bc4e78421baf9f59e880fbecb7ee170 /src | |
parent | 9ccabb0f25ef0d7503bd01cdf0bbd83f7302703e (diff) | |
download | mailfromd-ca22428399f3b4eeef51b289e91d31a3cdec0b72.tar.gz mailfromd-ca22428399f3b4eeef51b289e91d31a3cdec0b72.tar.bz2 |
Rethink the solution to mtasim interaction problem (see c0535e8e).
* src/main.c (parse_opt) <OPTION_MTASIM>: Rollback c0535e8e.
(mtasim_option): Move to srvcfg.c.
* src/srvcfg.c (server_section_parser) <mu_cfg_section_end>: If
mtasim_option is set, ignore the server statements.
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 3 | ||||
-rw-r--r-- | src/srvcfg.c | 75 |
2 files changed, 41 insertions, 37 deletions
@@ -71,7 +71,6 @@ char *ext_pp_options; int ext_pp_options_given; int do_trace; /* Enable tracing configuration */ -int mtasim_option; /* mtasim compatibility mode */ unsigned optimization_level = 1; /* Optimization level */ int stack_trace_option; /* Print stack traces on runtime errors */ @@ -625,8 +624,6 @@ parse_opt(int key, char *arg, struct argp_state *state) case OPTION_MTASIM: mtasim_option = 1; server_flags |= MF_SERVER_FOREGROUND; - mu_load_site_rcfile = 0; - mu_load_user_rcfile = 0; break; case OPTION_SHOW_DEFAULTS: diff --git a/src/srvcfg.c b/src/srvcfg.c index 43689c6c..7a4937f6 100644 --- a/src/srvcfg.c +++ b/src/srvcfg.c @@ -41,6 +41,7 @@ int smtp_transcript; static int transcript_option; unsigned long source_address = INADDR_ANY; /* Source address for TCP connections */ +int mtasim_option; /* mtasim compatibility mode */ size_t max_callout_mx = MAXMXCOUNT; @@ -420,40 +421,46 @@ server_section_parser(enum mu_cfg_section_stage stage, break; case mu_cfg_section_end: - if (server_config_stmt.options) - mu_list_set_comparator(server_config_stmt.options, - mf_list_compare_string); - if (mf_server_function(node->label ? - node->label->v.string : NULL, - &server_config_stmt)) { - mu_error(_("unknown server type")); - return 1; - } else if (!server_config_stmt.server) { - mu_error(_("INTERNAL ERROR at %s:%d: " - "server function not defined"), - __FILE__, __LINE__); - return 1; - } - if (!server_config_stmt.id) - server_config_stmt.id = next_server_id(); - if (server_config_stmt.url && server_config_stmt.server) { - int flags = 0; - mfd_server_t srv; - - if (server_config_stmt.single_process) - flags |= SRV_SINGLE_PROCESS; - if (!server_config_stmt.reuseaddr) - flags |= SRV_KEEP_EXISTING; - srv = mfd_server_new(server_config_stmt.id, - server_config_stmt.url, - server_config_stmt.server, - flags); - if (srv) { - mfd_server_set_max_children(srv, - server_config_stmt.max_children); - mfd_server_set_acl(srv, - server_config_stmt.acl); - mfd_srvman_attach_server(srv); + if (mtasim_option) + mu_url_destroy(&server_config_stmt.url); + else { + if (server_config_stmt.options) + mu_list_set_comparator( + server_config_stmt.options, + mf_list_compare_string); + if (mf_server_function(node->label ? + node->label->v.string : NULL, + &server_config_stmt)) { + mu_error(_("unknown server type")); + return 1; + } else if (!server_config_stmt.server) { + mu_error(_("INTERNAL ERROR at %s:%d: " + "server function not defined"), + __FILE__, __LINE__); + return 1; + } + if (!server_config_stmt.id) + server_config_stmt.id = next_server_id(); + if (server_config_stmt.url + && server_config_stmt.server) { + int flags = 0; + mfd_server_t srv; + + if (server_config_stmt.single_process) + flags |= SRV_SINGLE_PROCESS; + if (!server_config_stmt.reuseaddr) + flags |= SRV_KEEP_EXISTING; + srv = mfd_server_new(server_config_stmt.id, + server_config_stmt.url, + server_config_stmt.server, + flags); + if (srv) { + mfd_server_set_max_children(srv, + server_config_stmt.max_children); + mfd_server_set_acl(srv, + server_config_stmt.acl); + mfd_srvman_attach_server(srv); + } } } mu_list_destroy(&server_config_stmt.options); |