From 4d4d6d4745682790c20d759ba93dbea46b812c5d Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 22 May 2009 17:26:27 -0400 Subject: [PATCH] lib-master has now a global master_service variable that all binaries use. There should always be only one of them anyway. --HG-- branch : HEAD --- src/anvil/main.c | 14 ++++++------- src/auth/auth-common.h | 1 - src/auth/auth-master-connection.c | 2 +- src/auth/auth-worker-client.c | 2 +- src/auth/main.c | 20 +++++++++--------- src/config/doveconf.c | 16 +++++++------- src/config/main.c | 16 +++++++------- src/imap-login/client.c | 5 +++-- src/imap/imap-client.c | 10 ++++----- src/imap/imap-common.h | 2 -- src/imap/main.c | 16 +++++++------- src/lda/main.c | 22 +++++++++++--------- src/lib-master/master-service.c | 2 ++ src/lib-master/master-service.h | 2 +- src/lmtp/client.c | 4 ++-- src/lmtp/main.c | 12 +++++------ src/lmtp/main.h | 1 - src/log/common.h | 1 - src/log/log-connection.c | 2 +- src/log/main.c | 16 +++++++------- src/login-common/common.h | 1 - src/login-common/login-proxy.c | 2 +- src/login-common/main.c | 31 ++++++++++++++-------------- src/login-common/sasl-server.c | 3 ++- src/login-common/ssl-proxy-openssl.c | 2 +- src/master/common.h | 1 - src/master/service-process.c | 1 + src/plugins/convert/convert-tool.c | 15 +++++++------- src/plugins/expire/expire-tool.c | 14 ++++++------- src/pop3-login/client.c | 5 +++-- src/pop3/main.c | 16 +++++++------- src/pop3/pop3-client.c | 10 ++++----- src/pop3/pop3-common.h | 2 -- src/util/doveadm.c | 15 +++++++------- 34 files changed, 140 insertions(+), 144 deletions(-) diff --git a/src/anvil/main.c b/src/anvil/main.c index e407ac73f7..4089b37d6a 100644 --- a/src/anvil/main.c +++ b/src/anvil/main.c @@ -12,8 +12,6 @@ struct connect_limit *connect_limit; -static struct master_service *service; - static void client_connected(const struct master_service_connection *conn) { anvil_connection_create(conn->fd); @@ -23,20 +21,20 @@ int main(int argc, char *argv[]) { int c; - service = master_service_init("anvil", 0, argc, argv); + master_service = master_service_init("anvil", 0, argc, argv); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) exit(FATAL_DEFAULT); } - master_service_init_log(service, "anvil: ", 0); - master_service_init_finish(service); + master_service_init_log(master_service, "anvil: ", 0); + master_service_init_finish(master_service); connect_limit = connect_limit_init(); - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); connect_limit_deinit(&connect_limit); anvil_connections_destroy_all(); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/auth/auth-common.h b/src/auth/auth-common.h index 4d0ee67353..845a4f7d77 100644 --- a/src/auth/auth-common.h +++ b/src/auth/auth-common.h @@ -4,7 +4,6 @@ #include "lib.h" #include "auth.h" -extern struct master_service *service; extern bool worker, shutdown_request; extern time_t process_start_time; diff --git a/src/auth/auth-master-connection.c b/src/auth/auth-master-connection.c index 05a896dfd7..6018c7d46a 100644 --- a/src/auth/auth-master-connection.c +++ b/src/auth/auth-master-connection.c @@ -425,7 +425,7 @@ void auth_master_connection_destroy(struct auth_master_connection **_conn) conn->fd = -1; } - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); auth_master_connection_unref(&conn); } diff --git a/src/auth/auth-worker-client.c b/src/auth/auth-worker-client.c index 3d78283c10..7a037beb22 100644 --- a/src/auth/auth-worker-client.c +++ b/src/auth/auth-worker-client.c @@ -617,7 +617,7 @@ void auth_worker_client_destroy(struct auth_worker_client **_client) net_disconnect(client->fd); client->fd = -1; - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } void auth_worker_client_unref(struct auth_worker_client **_client) diff --git a/src/auth/main.c b/src/auth/main.c index ab6ea698f1..21273c218d 100644 --- a/src/auth/main.c +++ b/src/auth/main.c @@ -31,7 +31,6 @@ enum auth_socket_type { AUTH_SOCKET_MASTER }; -struct master_service *service; bool worker = FALSE, shutdown_request = FALSE; time_t process_start_time; @@ -54,7 +53,7 @@ static void main_preinit(struct auth_settings *set) passdbs_init(); userdbs_init(); modules = module_dir_load(AUTH_MODULE_DIR, NULL, TRUE, - master_service_get_version_string(service)); + master_service_get_version_string(master_service)); module_dir_init(modules); auth = auth_preinit(set); @@ -85,7 +84,7 @@ static void main_init(void) if (worker) { /* workers have only a single connection from the master auth process */ - master_service_set_client_limit(service, 1); + master_service_set_client_limit(master_service, 1); } else if (getenv("MASTER_AUTH_FD") != NULL) { (void)auth_master_connection_create(auth, MASTER_AUTH_FD); } @@ -163,8 +162,8 @@ int main(int argc, char *argv[]) const char *getopt_str, *auth_name = "default"; int c; - service = master_service_init("auth", 0, argc, argv); - master_service_init_log(service, "auth: ", 0); + master_service = master_service_init("auth", 0, argc, argv); + master_service_init_log(master_service, "auth: ", 0); getopt_str = t_strconcat("w", master_service_getopt_string(), NULL); while ((c = getopt(argc, argv, getopt_str)) > 0) { @@ -176,19 +175,20 @@ int main(int argc, char *argv[]) worker = TRUE; break; default: - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, + c, optarg)) exit(FATAL_DEFAULT); break; } } - main_preinit(auth_settings_read(service, auth_name)); + main_preinit(auth_settings_read(master_service, auth_name)); - master_service_init_finish(service); + master_service_init_finish(master_service); main_init(); - master_service_run(service, worker ? worker_connected : + master_service_run(master_service, worker ? worker_connected : client_connected); main_deinit(); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/config/doveconf.c b/src/config/doveconf.c index a92fc63797..8c16ea7d4e 100644 --- a/src/config/doveconf.c +++ b/src/config/doveconf.c @@ -21,8 +21,6 @@ struct config_request_get_string_ctx { ARRAY_TYPE(const_string) strings; }; -static struct master_service *service; - static void config_request_get_strings(const char *key, const char *value, bool list, void *context) @@ -212,8 +210,9 @@ int main(int argc, char *argv[]) int c; memset(&filter, 0, sizeof(filter)); - service = master_service_init("config", MASTER_SERVICE_FLAG_STANDALONE, - argc, argv); + master_service = master_service_init("config", + MASTER_SERVICE_FLAG_STANDALONE, + argc, argv); i_set_failure_prefix("doveconf: "); getopt_str = t_strconcat("am:np:e", master_service_getopt_string(), NULL); while ((c = getopt(argc, argv, getopt_str)) > 0) { @@ -232,11 +231,12 @@ int main(int argc, char *argv[]) filter.service = optarg; break; default: - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, + c, optarg)) exit(FATAL_DEFAULT); } } - config_path = master_service_get_config_path(service); + config_path = master_service_get_config_path(master_service); if (argv[optind] != NULL) exec_args = &argv[optind]; @@ -246,7 +246,7 @@ int main(int argc, char *argv[]) printf("# "VERSION": %s\n", config_path); fflush(stdout); } - master_service_init_finish(service); + master_service_init_finish(master_service); config_parse_file(config_path, FALSE); @@ -265,6 +265,6 @@ int main(int argc, char *argv[]) execvp(exec_args[0], exec_args); i_fatal("execvp(%s) failed: %m", exec_args[0]); } - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/config/main.c b/src/config/main.c index faa64b9c20..6f651137c4 100644 --- a/src/config/main.c +++ b/src/config/main.c @@ -11,8 +11,6 @@ #include #include -static struct master_service *service; - static void client_connected(const struct master_service_connection *conn) { config_connection_create(conn->fd); @@ -22,18 +20,18 @@ int main(int argc, char *argv[]) { int c; - service = master_service_init("config", 0, argc, argv); + master_service = master_service_init("config", 0, argc, argv); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) exit(FATAL_DEFAULT); } - master_service_init_log(service, "config: ", 0); - master_service_init_finish(service); - config_parse_file(master_service_get_config_path(service), TRUE); + master_service_init_log(master_service, "config: ", 0); + master_service_init_finish(master_service); + config_parse_file(master_service_get_config_path(master_service), TRUE); - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); config_connections_destroy_all(); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/imap-login/client.c b/src/imap-login/client.c index 8e1b9b15fc..247057b0a7 100644 --- a/src/imap-login/client.c +++ b/src/imap-login/client.c @@ -575,7 +575,8 @@ void client_destroy(struct imap_client *client, const char *reason) if (client->common.master_tag != 0) { i_assert(client->common.auth_request == NULL); i_assert(client->common.authenticating); - master_auth_request_abort(service, client->common.master_tag); + master_auth_request_abort(master_service, + client->common.master_tag); } else if (client->common.auth_request != NULL) { i_assert(client->common.authenticating); sasl_server_auth_client_error(&client->common, NULL); @@ -653,7 +654,7 @@ bool client_unref(struct imap_client *client) if (!client->common.proxying) { i_assert(client->common.proxy == NULL); - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } i_free(client->common.virtual_user); diff --git a/src/imap/imap-client.c b/src/imap/imap-client.c index f81470144c..9e7c434702 100644 --- a/src/imap/imap-client.c +++ b/src/imap/imap-client.c @@ -72,8 +72,8 @@ struct client *client_create(int fd_in, int fd_out, struct mail_user *user, ident = mail_user_get_anvil_userip_ident(client->user); if (ident != NULL) { - master_service_anvil_send(service, t_strconcat("CONNECT\t", - my_pid, "\t", ident, "/imap\n", NULL)); + master_service_anvil_send(master_service, t_strconcat( + "CONNECT\t", my_pid, "\t", ident, "/imap\n", NULL)); client->anvil_sent = TRUE; } @@ -184,8 +184,8 @@ void client_destroy(struct client *client, const char *reason) mailbox_close(&client->mailbox); } if (client->anvil_sent) { - master_service_anvil_send(service, t_strconcat("DISCONNECT\t", - my_pid, "\t", + master_service_anvil_send(master_service, t_strconcat( + "DISCONNECT\t", my_pid, "\t", mail_user_get_anvil_userip_ident(client->user), "/imap" "\n", NULL)); } @@ -219,7 +219,7 @@ void client_destroy(struct client *client, const char *reason) /* quit the program */ my_client = NULL; - master_service_stop(service); + master_service_stop(master_service); } void client_disconnect(struct client *client, const char *reason) diff --git a/src/imap/imap-common.h b/src/imap/imap-common.h index d8c0caa73b..c2c0e6b429 100644 --- a/src/imap/imap-common.h +++ b/src/imap/imap-common.h @@ -23,8 +23,6 @@ enum client_workarounds { #include "imap-client.h" #include "imap-settings.h" -extern struct master_service *service; - extern void (*hook_client_created)(struct client **client); #endif diff --git a/src/imap/main.c b/src/imap/main.c index af90328451..e40c416421 100644 --- a/src/imap/main.c +++ b/src/imap/main.c @@ -37,7 +37,6 @@ static struct client_workaround_list client_workaround_list[] = { static struct io *log_io = NULL; -struct master_service *service; void (*hook_client_created)(struct client **client) = NULL; static void log_error_callback(void *context ATTR_UNUSED) @@ -45,7 +44,7 @@ static void log_error_callback(void *context ATTR_UNUSED) /* the log fd is closed, don't die when trying to log later */ i_set_failure_ignore_errors(TRUE); - master_service_stop(service); + master_service_stop(master_service); } static enum client_workarounds @@ -180,9 +179,9 @@ int main(int argc, char *argv[], char *envp[]) MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS; } - service = master_service_init("imap", service_flags, argc, argv); + master_service = master_service_init("imap", service_flags, argc, argv); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) exit(FATAL_DEFAULT); } @@ -205,9 +204,10 @@ int main(int argc, char *argv[], char *envp[]) commands_init(); imap_fetch_handlers_init(); - mail_user = mail_storage_service_init_user(service, &input, set_roots, + mail_user = mail_storage_service_init_user(master_service, + &input, set_roots, storage_service_flags); - set = mail_storage_service_get_settings(service); + set = mail_storage_service_get_settings(master_service); restrict_access_allow_coredumps(TRUE); process_title_init(argv, envp); @@ -220,13 +220,13 @@ int main(int argc, char *argv[], char *envp[]) main_init(set, mail_user, dump_capability); } T_END; if (io_loop_is_running(current_ioloop)) - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); main_deinit(); mail_storage_service_deinit_user(); imap_fetch_handlers_deinit(); commands_deinit(); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/lda/main.c b/src/lda/main.c index bcc1f3ef66..e9c65302af 100644 --- a/src/lda/main.c +++ b/src/lda/main.c @@ -44,8 +44,6 @@ static const char *wanted_headers[] = { NULL }; -static struct master_service *service; - static const char *escape_local_part(const char *local_part) { const char *p; @@ -222,8 +220,9 @@ int main(int argc, char *argv[]) i_set_failure_exit_callback(failure_exit_callback); - service = master_service_init("lda", MASTER_SERVICE_FLAG_STANDALONE, - argc, argv); + master_service = master_service_init("lda", + MASTER_SERVICE_FLAG_STANDALONE, + argc, argv); memset(&ctx, 0, sizeof(ctx)); ctx.pool = pool_alloconly_create("mail deliver context", 256); @@ -277,7 +276,8 @@ int main(int argc, char *argv[]) p_strdup(ctx.pool, address_sanitize(optarg)); break; default: - if (!master_service_parse_option(service, c, optarg)) { + if (!master_service_parse_option(master_service, + c, optarg)) { print_help(); exit(EX_USAGE); } @@ -320,19 +320,21 @@ int main(int argc, char *argv[]) service_input.username = user; service_flags |= MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT; - ctx.dest_user = mail_storage_service_init_user(service, &service_input, + ctx.dest_user = mail_storage_service_init_user(master_service, + &service_input, set_roots, service_flags); #ifdef SIGXFSZ lib_signals_ignore(SIGXFSZ, TRUE); #endif - ctx.set = mail_storage_service_get_settings(service); + ctx.set = mail_storage_service_get_settings(master_service); duplicate_init(mail_user_set_get_storage_set(ctx.dest_user->set)); /* create a separate mail user for the internal namespace */ - if (master_service_set(service, "mail_full_filesystem_access=yes") < 0) + if (master_service_set(master_service, + "mail_full_filesystem_access=yes") < 0) i_unreached(); - sets = master_service_settings_get_others(service); + sets = master_service_settings_get_others(master_service); raw_mail_user = mail_user_alloc(user, sets[0]); mail_user_set_home(raw_mail_user, "/"); if (mail_user_init(raw_mail_user, &errstr) < 0) @@ -429,6 +431,6 @@ int main(int argc, char *argv[]) pool_unref(&ctx.pool); mail_storage_service_deinit_user(); - master_service_deinit(&service); + master_service_deinit(&master_service); return EX_OK; } diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index ab5cb18bc4..73a82b6c1f 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -26,6 +26,8 @@ /* getenv(MASTER_DOVECOT_VERSION_ENV) provides master's version number */ #define MASTER_DOVECOT_VERSION_ENV "DOVECOT_VERSION" +struct master_service *master_service; + static void io_listeners_add(struct master_service *service); static void io_listeners_remove(struct master_service *service); static void master_status_update(struct master_service *service); diff --git a/src/lib-master/master-service.h b/src/lib-master/master-service.h index 2d82033c67..6a6caf0b47 100644 --- a/src/lib-master/master-service.h +++ b/src/lib-master/master-service.h @@ -29,7 +29,7 @@ struct master_service_connection { typedef void master_service_connection_callback_t(const struct master_service_connection *conn); -struct master_service; +extern struct master_service *master_service; const char *master_service_getopt_string(void); diff --git a/src/lmtp/client.c b/src/lmtp/client.c index 7116b691e7..a11e3c2b8b 100644 --- a/src/lmtp/client.c +++ b/src/lmtp/client.c @@ -123,7 +123,7 @@ static void client_raw_user_create(struct client *client) const char *error; void **sets; - sets = master_service_settings_get_others(service); + sets = master_service_settings_get_others(master_service); client->raw_mail_user = mail_user_alloc("raw user", sets[0]); mail_user_set_home(client->raw_mail_user, "/"); @@ -196,7 +196,7 @@ void client_destroy(struct client *client, const char *prefix, pool_unref(&client->state_pool); i_free(client); - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } static const char *client_get_disconnect_reason(struct client *client) diff --git a/src/lmtp/main.c b/src/lmtp/main.c index 9e8ded8cd3..48d9c32785 100644 --- a/src/lmtp/main.c +++ b/src/lmtp/main.c @@ -20,7 +20,6 @@ #define IS_STANDALONE() \ (getenv("MASTER_SERVICE") == NULL) -struct master_service *service; struct mail_storage_service_multi_ctx *multi_service; static void client_connected(const struct master_service_connection *conn) @@ -81,23 +80,24 @@ int main(int argc, char *argv[], char *envp[]) MASTER_SERVICE_FLAG_STD_CLIENT; } - service = master_service_init("lmtp", service_flags, argc, argv); + master_service = master_service_init("lmtp", service_flags, argc, argv); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) exit(FATAL_DEFAULT); } - multi_service = mail_storage_service_multi_init(service, set_roots, + multi_service = mail_storage_service_multi_init(master_service, + set_roots, storage_service_flags); restrict_access_allow_coredumps(TRUE); process_title_init(argv, envp); main_init(); - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); main_deinit(); mail_storage_service_multi_deinit(&multi_service); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/lmtp/main.h b/src/lmtp/main.h index 81178a1443..c2d1f65db5 100644 --- a/src/lmtp/main.h +++ b/src/lmtp/main.h @@ -1,7 +1,6 @@ #ifndef MAIN_H #define MAIN_H -extern struct master_service *service; extern struct mail_storage_service_multi_ctx *multi_service; void listener_client_destroyed(void); diff --git a/src/log/common.h b/src/log/common.h index a5fa4f273a..a6ce01f2e4 100644 --- a/src/log/common.h +++ b/src/log/common.h @@ -3,7 +3,6 @@ #include "lib.h" -extern struct master_service *service; extern pid_t master_pid; #endif diff --git a/src/log/log-connection.c b/src/log/log-connection.c index 535aa286c0..5b29079c9d 100644 --- a/src/log/log-connection.c +++ b/src/log/log-connection.c @@ -240,7 +240,7 @@ void log_connection_destroy(struct log_connection *log) i_free(log->prefix); i_free(log); - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } void log_connections_init(void) diff --git a/src/log/main.c b/src/log/main.c index d9a3707ae4..b7818735a7 100644 --- a/src/log/main.c +++ b/src/log/main.c @@ -10,7 +10,6 @@ #include #include -struct master_service *service; pid_t master_pid; static void @@ -49,25 +48,26 @@ int main(int argc, char *argv[]) const char *error; int c; - service = master_service_init("log", 0, argc, argv); + master_service = master_service_init("log", 0, argc, argv); /* use log prefix and log to stderr until we've configured the real logging */ i_set_failure_file("/dev/stderr", "log: "); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) exit(FATAL_DEFAULT); } - if (master_service_settings_read_simple(service, NULL, &error) < 0) + if (master_service_settings_read_simple(master_service, + NULL, &error) < 0) i_fatal("Error reading configuration: %s", error); - master_service_init_log(service, "log: ", 0); - master_service_init_finish(service); + master_service_init_log(master_service, "log: ", 0); + master_service_init_finish(master_service); main_init(); - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); main_deinit(); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/login-common/common.h b/src/login-common/common.h index 899c1be0c3..e39e780ddf 100644 --- a/src/login-common/common.h +++ b/src/login-common/common.h @@ -18,7 +18,6 @@ extern struct auth_client *auth_client; extern bool closing_down; extern int anvil_fd; -extern struct master_service *service; extern const struct login_settings *global_login_settings; #endif diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index e9fe56d4e4..a259f8d0dd 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -244,7 +244,7 @@ void login_proxy_free(struct login_proxy **_proxy) i_free(proxy->user); i_free(proxy); - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } bool login_proxy_is_ourself(const struct client *client, const char *host, diff --git a/src/login-common/main.c b/src/login-common/main.c index 921a8049d5..8fec900565 100644 --- a/src/login-common/main.c +++ b/src/login-common/main.c @@ -22,7 +22,6 @@ struct auth_client *auth_client; bool closing_down; int anvil_fd = -1; -struct master_service *service; const struct login_settings *global_login_settings; static bool ssl_connections = FALSE; @@ -43,7 +42,8 @@ static void client_connected(const struct master_service_connection *conn) } pool = pool_alloconly_create("login client", 1024); - set = login_settings_read(service, pool, &local_ip, &conn->remote_ip); + set = login_settings_read(master_service, pool, &local_ip, + &conn->remote_ip); if (!ssl_connections && !conn->ssl) { client = client_create(conn->fd, FALSE, pool, set, &local_ip, @@ -101,7 +101,7 @@ static void main_preinit(void) decreased. leave a couple of extra fds for auth sockets and such. normal connections each use one fd, but SSL connections use two */ max_fds = MASTER_LISTEN_FD_FIRST + 16 + - master_service_get_socket_count(service) + + master_service_get_socket_count(master_service) + global_login_settings->login_max_connections*2; restrict_fd_limit(max_fds); io_loop_set_max_fd_count(current_ioloop, max_fds); @@ -129,7 +129,7 @@ static void main_init(void) auth_client_set_connect_notify(auth_client, auth_connect_notify, NULL); clients_init(); - master_auth_init(service); + master_auth_init(master_service); } static void main_deinit(void) @@ -145,7 +145,7 @@ static void main_deinit(void) if (close(anvil_fd) < 0) i_error("close(anvil) failed: %m"); } - master_auth_deinit(service); + master_auth_deinit(master_service); } int main(int argc, char *argv[], char *envp[]) @@ -156,11 +156,11 @@ int main(int argc, char *argv[], char *envp[]) //FIXME:is_inetd = getenv("DOVECOT_MASTER") == NULL; - service = master_service_init(login_process_name, - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN, - argc, argv); - master_service_init_log(service, t_strconcat(login_process_name, ": ", - NULL), 0); + master_service = master_service_init(login_process_name, + MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN, + argc, argv); + master_service_init_log(master_service, t_strconcat( + login_process_name, ": ", NULL), 0); getopt_str = t_strconcat("DS", master_service_getopt_string(), NULL); while ((c = getopt(argc, argv, getopt_str)) > 0) { @@ -172,7 +172,8 @@ int main(int argc, char *argv[], char *envp[]) ssl_connections = TRUE; break; default: - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, + c, optarg)) exit(FATAL_DEFAULT); break; } @@ -189,15 +190,15 @@ int main(int argc, char *argv[], char *envp[]) process_title_init(argv, envp); set_pool = pool_alloconly_create("global login settings", 1024); global_login_settings = - login_settings_read(service, set_pool, NULL, NULL); + login_settings_read(master_service, set_pool, NULL, NULL); main_preinit(); - master_service_init_finish(service); + master_service_init_finish(master_service); main_init(); - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); main_deinit(); pool_unref(&set_pool); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/login-common/sasl-server.c b/src/login-common/sasl-server.c index 95b722bed6..4932b663e4 100644 --- a/src/login-common/sasl-server.c +++ b/src/login-common/sasl-server.c @@ -9,6 +9,7 @@ #include "str-sanitize.h" #include "auth-client.h" #include "ssl-proxy.h" +#include "master-service.h" #include "master-interface.h" #include "master-auth.h" #include "client-common.h" @@ -93,7 +94,7 @@ master_send_request(struct client *client, struct auth_request *request) req.data_size = buf->used; client->master_tag = - master_auth_request(service, client->fd, &req, buf->data, + master_auth_request(master_service, client->fd, &req, buf->data, master_auth_callback, client); } diff --git a/src/login-common/ssl-proxy-openssl.c b/src/login-common/ssl-proxy-openssl.c index b83ce4ba0d..ea1ea21c68 100644 --- a/src/login-common/ssl-proxy-openssl.c +++ b/src/login-common/ssl-proxy-openssl.c @@ -695,7 +695,7 @@ static void ssl_proxy_destroy(struct ssl_proxy *proxy) ssl_proxy_unref(proxy); - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } static RSA *ssl_gen_rsa_key(SSL *ssl ATTR_UNUSED, diff --git a/src/master/common.h b/src/master/common.h index 0e605c4913..027993e333 100644 --- a/src/master/common.h +++ b/src/master/common.h @@ -7,7 +7,6 @@ #define AUTH_SUCCESS_PATH PKG_STATEDIR"/auth-success" -extern struct master_service *master_service; extern uid_t master_uid; extern gid_t master_gid; extern bool auth_success_written; diff --git a/src/master/service-process.c b/src/master/service-process.c index 1de6ef7d75..12c821f6d7 100644 --- a/src/master/service-process.c +++ b/src/master/service-process.c @@ -15,6 +15,7 @@ #include "fd-close-on-exec.h" #include "restrict-access.h" #include "restrict-process-size.h" +#include "master-service.h" #include "master-service-settings.h" #include "dup2-array.h" #include "service.h" diff --git a/src/plugins/convert/convert-tool.c b/src/plugins/convert/convert-tool.c index c6676bca17..52d9a444a8 100644 --- a/src/plugins/convert/convert-tool.c +++ b/src/plugins/convert/convert-tool.c @@ -17,7 +17,6 @@ int main(int argc, char *argv[]) { - struct master_service *service; struct mail_storage_service_input input; struct mail_user *user; struct convert_plugin_settings set; @@ -26,12 +25,12 @@ int main(int argc, char *argv[]) const char *error; int i, c, ret = 0; - service = master_service_init("convert-tool", - MASTER_SERVICE_FLAG_STANDALONE, - argc, argv); + master_service = master_service_init("convert-tool", + MASTER_SERVICE_FLAG_STANDALONE, + argc, argv); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) i_fatal(USAGE_STRING); } if (argc - optind < 4) @@ -54,9 +53,9 @@ int main(int argc, char *argv[]) memset(&input, 0, sizeof(input)); input.username = argv[optind]; - master_service_init_log(service, + master_service_init_log(master_service, t_strdup_printf("convert-tool(%s): ", input.username), 0); - user = mail_storage_service_init_user(service, &input, NULL, 0); + user = mail_storage_service_init_user(master_service, &input, NULL, 0); memset(&ns_set, 0, sizeof(ns_set)); ns_set.location = argv[4]; @@ -79,6 +78,6 @@ int main(int argc, char *argv[]) mail_user_unref(&user); mail_storage_service_deinit_user(); - master_service_deinit(&service); + master_service_deinit(&master_service); return ret <= 0 ? 1 : 0; } diff --git a/src/plugins/expire/expire-tool.c b/src/plugins/expire/expire-tool.c index df9ed61829..e9307ba311 100644 --- a/src/plugins/expire/expire-tool.c +++ b/src/plugins/expire/expire-tool.c @@ -291,14 +291,13 @@ static void expire_run(struct master_service *service, bool testrun) int main(int argc, char *argv[]) { - struct master_service *service; const char *getopt_str; bool test = FALSE; int c; - service = master_service_init("expire-tool", - MASTER_SERVICE_FLAG_STANDALONE, - argc, argv); + master_service = master_service_init("expire-tool", + MASTER_SERVICE_FLAG_STANDALONE, + argc, argv); getopt_str = t_strconcat("t", master_service_getopt_string(), NULL); while ((c = getopt(argc, argv, getopt_str)) > 0) { @@ -307,7 +306,8 @@ int main(int argc, char *argv[]) test = TRUE; break; default: - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, + c, optarg)) i_fatal("Unknown parameter: -%c", c); break; } @@ -315,8 +315,8 @@ int main(int argc, char *argv[]) if (optind != argc) i_fatal("Unknown parameter: %s", argv[optind]); - expire_run(service, test); + expire_run(master_service, test); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/pop3-login/client.c b/src/pop3-login/client.c index a954f2a50c..7db499ace9 100644 --- a/src/pop3-login/client.c +++ b/src/pop3-login/client.c @@ -380,7 +380,8 @@ void client_destroy(struct pop3_client *client, const char *reason) if (client->common.master_tag != 0) { i_assert(client->common.auth_request == NULL); i_assert(client->common.authenticating); - master_auth_request_abort(service, client->common.master_tag); + master_auth_request_abort(master_service, + client->common.master_tag); } else if (client->common.auth_request != NULL) { i_assert(client->common.authenticating); sasl_server_auth_client_error(&client->common, NULL); @@ -447,7 +448,7 @@ bool client_unref(struct pop3_client *client) if (!client->common.proxying) { i_assert(client->common.proxy == NULL); - master_service_client_connection_destroyed(service); + master_service_client_connection_destroyed(master_service); } i_free(client->last_user); diff --git a/src/pop3/main.c b/src/pop3/main.c index 76ccb3153a..a2bb49fb96 100644 --- a/src/pop3/main.c +++ b/src/pop3/main.c @@ -18,7 +18,6 @@ #define IS_STANDALONE() \ (getenv("LOGGED_IN") == NULL) -struct master_service *service; void (*hook_client_created)(struct client **client) = NULL; static struct io *log_io = NULL; @@ -28,7 +27,7 @@ static void log_error_callback(void *context ATTR_UNUSED) /* the log fd is closed, don't die when trying to log later */ i_set_failure_ignore_errors(TRUE); - master_service_stop(service); + master_service_stop(master_service); } static bool main_init(const struct pop3_settings *set, struct mail_user *user) @@ -105,9 +104,9 @@ int main(int argc, char *argv[], char *envp[]) else service_flags |= MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT; - service = master_service_init("pop3", service_flags, argc, argv); + master_service = master_service_init("pop3", service_flags, argc, argv); while ((c = getopt(argc, argv, master_service_getopt_string())) > 0) { - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, c, optarg)) exit(FATAL_DEFAULT); } @@ -126,9 +125,10 @@ int main(int argc, char *argv[], char *envp[]) if ((value = getenv("LOCAL_IP")) != NULL) net_addr2ip(value, &input.local_ip); - mail_user = mail_storage_service_init_user(service, &input, set_roots, + mail_user = mail_storage_service_init_user(master_service, + &input, set_roots, storage_service_flags); - set = mail_storage_service_get_settings(service); + set = mail_storage_service_get_settings(master_service); restrict_access_allow_coredumps(TRUE); process_title_init(argv, envp); @@ -138,10 +138,10 @@ int main(int argc, char *argv[], char *envp[]) io_loop_set_running(current_ioloop); if (main_init(set, mail_user)) - master_service_run(service, client_connected); + master_service_run(master_service, client_connected); main_deinit(); mail_storage_service_deinit_user(); - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } diff --git a/src/pop3/pop3-client.c b/src/pop3/pop3-client.c index 65b0fc772a..42d2f4233f 100644 --- a/src/pop3/pop3-client.c +++ b/src/pop3/pop3-client.c @@ -289,8 +289,8 @@ struct client *client_create(int fd_in, int fd_out, struct mail_user *user, ident = mail_user_get_anvil_userip_ident(client->user); if (ident != NULL) { - master_service_anvil_send(service, t_strconcat("CONNECT\t", - my_pid, "\t", ident, "/pop3\n", NULL)); + master_service_anvil_send(master_service, t_strconcat( + "CONNECT\t", my_pid, "\t", ident, "/pop3\n", NULL)); client->anvil_sent = TRUE; } @@ -373,8 +373,8 @@ void client_destroy(struct client *client, const char *reason) if (client->mailbox != NULL) mailbox_close(&client->mailbox); if (client->anvil_sent) { - master_service_anvil_send(service, t_strconcat("DISCONNECT\t", - my_pid, "\t", + master_service_anvil_send(master_service, t_strconcat( + "DISCONNECT\t", my_pid, "\t", mail_user_get_anvil_userip_ident(client->user), "/pop3" "\n", NULL)); } @@ -404,7 +404,7 @@ void client_destroy(struct client *client, const char *reason) /* quit the program */ my_client = NULL; - master_service_stop(service); + master_service_stop(master_service); } void client_disconnect(struct client *client, const char *reason) diff --git a/src/pop3/pop3-common.h b/src/pop3/pop3-common.h index 9f9a764c6f..8a31acd404 100644 --- a/src/pop3/pop3-common.h +++ b/src/pop3/pop3-common.h @@ -17,8 +17,6 @@ enum uidl_keys { #include "pop3-client.h" #include "pop3-settings.h" -extern struct master_service *service; - extern void (*hook_client_created)(struct client **client); #endif diff --git a/src/util/doveadm.c b/src/util/doveadm.c index 7eaf64b9c8..8fb40ec1ea 100644 --- a/src/util/doveadm.c +++ b/src/util/doveadm.c @@ -208,13 +208,13 @@ handle_all_users(struct master_service *service, int main(int argc, char *argv[]) { enum mail_storage_service_flags service_flags = 0; - struct master_service *service; const char *getopt_str, *username; bool all_users = FALSE; int c; - service = master_service_init("doveadm", MASTER_SERVICE_FLAG_STANDALONE, - argc, argv); + master_service = master_service_init("doveadm", + MASTER_SERVICE_FLAG_STANDALONE, + argc, argv); username = getenv("USER"); getopt_str = t_strconcat("au:v", master_service_getopt_string(), NULL); @@ -231,7 +231,8 @@ int main(int argc, char *argv[]) service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG; break; default: - if (!master_service_parse_option(service, c, optarg)) + if (!master_service_parse_option(master_service, + c, optarg)) usage(); } } @@ -239,11 +240,11 @@ int main(int argc, char *argv[]) usage(); if (!all_users) { - handle_single_user(service, username, service_flags, + handle_single_user(master_service, username, service_flags, argv + optind); } else { - handle_all_users(service, service_flags, argv + optind); + handle_all_users(master_service, service_flags, argv + optind); } - master_service_deinit(&service); + master_service_deinit(&master_service); return 0; } -- 2.47.3