]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mech: Move mech_register_init() to auth-sasl
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sun, 29 Oct 2023 23:52:55 +0000 (00:52 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Oct 2025 08:41:22 +0000 (08:41 +0000)
src/auth/auth-sasl.c
src/auth/mech.c

index adf772251a90668be5a3b474b95a4793581ebaad..3f8e70a3253afa5a4866dbdba2379fb1df2084b3 100644 (file)
@@ -397,6 +397,53 @@ void auth_sasl_instance_init(struct auth *auth,
                sasl_server_instance_create(auth_sasl_server, &sasl_set);
 }
 
+const char *mech_get_plugin_name(const char *name);
+void mech_register_add(struct mechanisms_register *reg,
+                      const struct sasl_server_mech_def *mech);
+
+struct mechanisms_register *
+mech_register_init(const struct auth_settings *set);
+struct mechanisms_register *
+mech_register_init(const struct auth_settings *set)
+{
+       struct mechanisms_register *reg;
+       const struct sasl_server_mech_def *mech;
+       const char *name;
+       pool_t pool;
+
+       pool = pool_alloconly_create("mechanisms register", 1024);
+       reg = p_new(pool, struct mechanisms_register, 1);
+       reg->pool = pool;
+       reg->set = set;
+       reg->handshake = str_new(pool, 512);
+       reg->handshake_cbind = str_new(pool, 256);
+
+       if (!array_is_created(&set->mechanisms) ||
+           array_is_empty(&set->mechanisms))
+               i_fatal("No authentication mechanisms configured");
+
+       array_foreach_elem(&set->mechanisms, name) {
+               name = t_str_ucase(name);
+
+               if (strcmp(name, "ANONYMOUS") == 0) {
+                       if (*set->anonymous_username == '\0') {
+                               i_fatal("ANONYMOUS listed in mechanisms, "
+                                       "but anonymous_username not set");
+                       }
+               }
+               mech = mech_module_find(name);
+               if (mech == NULL) {
+                       /* maybe it's a plugin. try to load it. */
+                       auth_module_load(mech_get_plugin_name(name));
+                       mech = mech_module_find(name);
+               }
+               if (mech == NULL)
+                       i_fatal("Unknown authentication mechanism '%s'", name);
+               mech_register_add(reg, mech);
+       }
+       return reg;
+}
+
 static bool
 auth_sasl_mech_verify_passdb(const struct auth *auth,
                             enum sasl_mech_passdb_need passdb_need)
@@ -453,8 +500,6 @@ void auth_sasl_instance_deinit(struct auth *auth)
  * Global
  */
 
-void mech_register_add(struct mechanisms_register *reg,
-                      const struct sasl_server_mech_def *mech);
 void mech_register_add(struct mechanisms_register *reg,
                       const struct sasl_server_mech_def *mech)
 {
@@ -492,7 +537,6 @@ void mech_register_add(struct mechanisms_register *reg,
        reg->modules = list;
 }
 
-const char *mech_get_plugin_name(const char *name);
 const char *mech_get_plugin_name(const char *name)
 {
        string_t *str = t_str_new(32);
index 3b42b94c582ebab4a7a6c2fcf63c713ccc3e4ecb..ba5e78c21f7f49a9bbc5332163ba6dc7adb94970 100644 (file)
@@ -80,46 +80,6 @@ const char *mech_get_plugin_name(const char *name);
 
 struct mechanisms_register *
 mech_register_init(const struct auth_settings *set);
-struct mechanisms_register *
-mech_register_init(const struct auth_settings *set)
-{
-       struct mechanisms_register *reg;
-       const struct sasl_server_mech_def *mech;
-       const char *name;
-       pool_t pool;
-
-       pool = pool_alloconly_create("mechanisms register", 1024);
-       reg = p_new(pool, struct mechanisms_register, 1);
-       reg->pool = pool;
-       reg->set = set;
-       reg->handshake = str_new(pool, 512);
-       reg->handshake_cbind = str_new(pool, 256);
-
-       if (!array_is_created(&set->mechanisms) ||
-           array_is_empty(&set->mechanisms))
-               i_fatal("No authentication mechanisms configured");
-
-       array_foreach_elem(&set->mechanisms, name) {
-               name = t_str_ucase(name);
-
-               if (strcmp(name, "ANONYMOUS") == 0) {
-                       if (*set->anonymous_username == '\0') {
-                               i_fatal("ANONYMOUS listed in mechanisms, "
-                                       "but anonymous_username not set");
-                       }
-               }
-               mech = mech_module_find(name);
-               if (mech == NULL) {
-                       /* maybe it's a plugin. try to load it. */
-                       auth_module_load(mech_get_plugin_name(name));
-                       mech = mech_module_find(name);
-               }
-               if (mech == NULL)
-                       i_fatal("Unknown authentication mechanism '%s'", name);
-               mech_register_add(reg, mech);
-       }
-       return reg;
-}
 
 void mech_register_deinit(struct mechanisms_register **_reg)
 {