dovecot-2.0: master: Give error message with unknown names in pr...

dovecot at dovecot.org dovecot at dovecot.org
Thu Dec 24 00:20:07 EET 2009


details:   http://hg.dovecot.org/dovecot-2.0/rev/e4e31fa845a5
changeset: 10535:e4e31fa845a5
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Dec 23 17:20:02 2009 -0500
description:
master: Give error message with unknown names in protocols setting.

diffstat:

1 file changed, 23 insertions(+)
src/master/master-settings.c |   23 +++++++++++++++++++++++

diffs (40 lines):

diff -r 8f2c4d0f7247 -r e4e31fa845a5 src/master/master-settings.c
--- a/src/master/master-settings.c	Wed Dec 23 17:13:42 2009 -0500
+++ b/src/master/master-settings.c	Wed Dec 23 17:20:02 2009 -0500
@@ -299,6 +299,21 @@ static void service_set_login_dump_core(
 }
 
 static bool
+services_have_protocol(struct master_settings *set, const char *name)
+{
+	struct service_settings *const *services;
+
+	array_foreach(&set->services, services) {
+		struct service_settings *service = *services;
+
+		if (service->protocol != NULL &&
+		    strcmp(service->protocol, name) == 0)
+			return TRUE;
+	}
+	return FALSE;
+}
+
+static bool
 master_settings_verify(void *_set, pool_t pool, const char **error_r)
 {
 	struct master_settings *set = _set;
@@ -396,6 +411,14 @@ master_settings_verify(void *_set, pool_
 	}
 
 	set->protocols_split = p_strsplit(pool, set->protocols, " ");
+	for (i = 0; set->protocols_split[i] != NULL; i++) {
+		if (!services_have_protocol(set, set->protocols_split[i])) {
+			*error_r = t_strdup_printf("protocols: "
+						   "Unknown protocol: %s",
+						   set->protocols_split[i]);
+			return FALSE;
+		}
+	}
 	return TRUE;
 }
 /* </settings checks> */


More information about the dovecot-cvs mailing list