changeset 10037:45cdc5539c93 HEAD

*-login: Login binaries can now set up their own private settings.
author Timo Sirainen <tss@iki.fi>
date Mon, 12 Oct 2009 12:51:06 -0400
parents e8fc7ee87410
children 499f5575d503
files src/imap-login/client.c src/login-common/common.h src/login-common/login-settings.c src/login-common/login-settings.h src/login-common/main.c src/pop3-login/client.c
diffstat 6 files changed, 19 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap-login/client.c	Mon Oct 12 12:37:35 2009 -0400
+++ b/src/imap-login/client.c	Mon Oct 12 12:51:06 2009 -0400
@@ -32,6 +32,10 @@
 const char *login_process_name = "imap-login";
 unsigned int login_default_port = 143;
 
+void login_process_preinit(void)
+{
+}
+
 /* Skip incoming data until newline is found,
    returns TRUE if newline was found. */
 bool client_skip_line(struct imap_client *client)
--- a/src/login-common/common.h	Mon Oct 12 12:37:35 2009 -0400
+++ b/src/login-common/common.h	Mon Oct 12 12:51:06 2009 -0400
@@ -21,4 +21,6 @@
 
 extern const struct login_settings *global_login_settings;
 
+void login_process_preinit(void);
+
 #endif
--- a/src/login-common/login-settings.c	Mon Oct 12 12:37:35 2009 -0400
+++ b/src/login-common/login-settings.c	Mon Oct 12 12:51:06 2009 -0400
@@ -83,6 +83,11 @@
 	MEMBER(check_func) login_settings_check
 };
 
+const struct setting_parser_info *login_set_roots[] = {
+	&login_setting_parser_info,
+	NULL
+};
+
 /* <settings checks> */
 static int ssl_settings_check(void *_set ATTR_UNUSED, const char **error_r)
 {
@@ -152,17 +157,13 @@
 		    const struct ip_addr *local_ip,
 		    const struct ip_addr *remote_ip)
 {
-	static const struct setting_parser_info *set_roots[] = {
-		&login_setting_parser_info,
-		NULL
-	};
 	struct master_service_settings_input input;
 	const char *error;
 	void **sets;
 	struct login_settings *set;
 
 	memset(&input, 0, sizeof(input));
-	input.roots = set_roots;
+	input.roots = login_set_roots;
 	input.module = "login";
 	input.service = login_protocol;
 
--- a/src/login-common/login-settings.h	Mon Oct 12 12:37:35 2009 -0400
+++ b/src/login-common/login-settings.h	Mon Oct 12 12:51:06 2009 -0400
@@ -32,6 +32,8 @@
 	char *const *log_format_elements_split;
 };
 
+extern const struct setting_parser_info *login_set_roots[];
+
 struct login_settings *
 login_settings_read(struct master_service *service, pool_t pool,
 		    const struct ip_addr *local_ip,
--- a/src/login-common/main.c	Mon Oct 12 12:37:35 2009 -0400
+++ b/src/login-common/main.c	Mon Oct 12 12:51:06 2009 -0400
@@ -199,6 +199,7 @@
 		master_fd = master_connect(t_strcut(login_process_name, '-'));
 	}
 #endif
+	login_process_preinit();
 
 	process_title_init(argv, envp);
 	set_pool = pool_alloconly_create("global login settings", 4096);
--- a/src/pop3-login/client.c	Mon Oct 12 12:37:35 2009 -0400
+++ b/src/pop3-login/client.c	Mon Oct 12 12:51:06 2009 -0400
@@ -24,6 +24,10 @@
 const char *login_process_name = "pop3-login";
 unsigned int login_default_port = 110;
 
+void login_process_preinit(void)
+{
+}
+
 static bool cmd_stls(struct pop3_client *client)
 {
 	client_cmd_starttls(&client->common);