]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
anvil: Add ANVIL_CONNECTION_TYPE_CONNECT_LIMIT and anvil-connect-limit listener
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 27 Apr 2026 22:07:38 +0000 (22:07 +0000)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 30 Apr 2026 06:41:03 +0000 (06:41 +0000)
This will be used to restrict LOOKUP commands to a dedicated socket,
keeping the admin socket reserved for admin commands.

src/anvil/anvil-connection.h
src/anvil/anvil-settings.c
src/anvil/main.c

index f6dd6130e264d73eb6a028c8a913691993490f2e..4fd5f667eccb43961de26ac753a2950ba372dcc9 100644 (file)
@@ -5,6 +5,7 @@ enum anvil_connection_type {
        ANVIL_CONNECTION_TYPE_ADMIN,
        ANVIL_CONNECTION_TYPE_SHARED_FIFO,
        ANVIL_CONNECTION_TYPE_AUTH_PENALTY,
+       ANVIL_CONNECTION_TYPE_CONNECT_LIMIT,
 };
 
 /* Error is set and reply=NULL on internal errors. */
index 3571c3306a3e8e5169a56f5187233f3450d41699..30beb26686a4499190d580ce2b84425b8f1f0e0e 100644 (file)
@@ -30,7 +30,7 @@ struct service_settings anvil_service_settings = {
 };
 
 const struct setting_keyvalue anvil_service_settings_defaults[] = {
-       { "unix_listener", "anvil anvil-auth-penalty" },
+       { "unix_listener", "anvil anvil-auth-penalty anvil-connect-limit" },
 
        { "unix_listener/anvil/path", "anvil" },
        { "unix_listener/anvil/mode", "0660" },
@@ -46,5 +46,10 @@ const struct setting_keyvalue anvil_service_settings_defaults[] = {
 #endif
        { "unix_listener/anvil-auth-penalty/group", "$SET:default_internal_group" },
 
+       { "unix_listener/anvil-connect-limit/path", "anvil-connect-limit" },
+       { "unix_listener/anvil-connect-limit/type", "connect-limit" },
+       { "unix_listener/anvil-connect-limit/mode", "0660" },
+       { "unix_listener/anvil-connect-limit/group", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
index d4ca0491bfccc3880ea14ab002dbcc635c0016ed..a5fc69f3a53778da83d9d60a32feffaf891f34ad 100644 (file)
@@ -105,6 +105,8 @@ static void client_connected(struct master_service_connection *conn)
 
                if (strcmp(type_str, "penalty") == 0)
                        type = ANVIL_CONNECTION_TYPE_AUTH_PENALTY;
+               else if (strcmp(type_str, "connect-limit") == 0)
+                       type = ANVIL_CONNECTION_TYPE_CONNECT_LIMIT;
                else
                        type = ANVIL_CONNECTION_TYPE_ADMIN;
        }