]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Use http_server_init_auto()
authorMarkus Valentin <markus.valentin@open-xchange.com>
Wed, 6 Dec 2023 11:08:28 +0000 (12:08 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:12 +0000 (12:34 +0200)
This adds doveadm_server { .. } named filter, which can be used to override
http-server settings. The following settings were replaced:

* doveadm_http_rawlog_dir -> http_server_rawlog_dir

src/doveadm/client-connection-http.c
src/doveadm/client-connection-tcp.c
src/doveadm/doveadm-settings.c
src/doveadm/doveadm-settings.h

index 02ca068b6d598104e691eb33addb81879dfb2cf4..25b8299f83c3c1cf725cc5a84a4f298d36005f94 100644 (file)
@@ -11,6 +11,7 @@
 #include "ostream.h"
 #include "strescape.h"
 #include "settings-parser.h"
+#include "settings.h"
 #include "iostream-ssl.h"
 #include "iostream-temp.h"
 #include "istream-seekable.h"
@@ -1207,14 +1208,15 @@ doveadm_http_server_connection_destroy(void *context,
  * Server
  */
 
-void doveadm_http_server_init(struct event *event)
+void doveadm_http_server_init(struct event *parent_event)
 {
-       struct http_server_settings http_set;
-
-       http_server_settings_init(null_pool, &http_set);
-       http_set.rawlog_dir = doveadm_settings->doveadm_http_rawlog_dir;
+       const char *error;
 
-       doveadm_http_server = http_server_init(&http_set, event);
+       struct event *event = event_create(parent_event);
+       event_set_ptr(event, SETTINGS_EVENT_FILTER_NAME, DOVEADM_SERVER_FILTER);
+       if (http_server_init_auto(event, &doveadm_http_server, &error) < 0)
+               i_fatal("http_server_init() failed: %s", error);
+       event_unref(&event);
 }
 
 void doveadm_http_server_deinit(void)
index e7942b7c93d81f4b1b3de58f7b54c616094c96c8..57a50c0a06395bb77f4b5ae1de1e44b73472ff8c 100644 (file)
@@ -18,6 +18,7 @@
 #include "doveadm-print.h"
 #include "doveadm-protocol.h"
 #include "client-connection-private.h"
+#include "settings.h"
 
 #include <unistd.h>
 
@@ -575,6 +576,8 @@ client_connection_tcp_create(int fd, int listen_fd, bool ssl)
        pool = pool_alloconly_create("doveadm client", 1024*16);
        conn = p_new(pool, struct client_connection_tcp, 1);
        conn->conn.event = event_create(NULL);
+       event_set_ptr(conn->conn.event, SETTINGS_EVENT_FILTER_NAME,
+                     DOVEADM_SERVER_FILTER);
        event_set_append_log_prefix(conn->conn.event, "tcp: ");
        conn->fd = fd;
 
index 29634465b1f170a53763e153b32a9f19db1c1346..0a836b811c2e95a002dddcd587c6ee78946da5c4 100644 (file)
@@ -73,9 +73,10 @@ static const struct setting_define doveadm_setting_defines[] = {
        DEF(STR, doveadm_api_key),
        DEF(STR, dsync_features),
        DEF(UINT, dsync_commit_msgs_interval),
-       DEF(STR, doveadm_http_rawlog_dir),
        DEF(STR_HIDDEN, dsync_hashed_headers),
 
+       { .type = SET_FILTER_NAME, .key = DOVEADM_SERVER_FILTER },
+
        { .type = SET_STRLIST, .key = "plugin",
          .offset = offsetof(struct doveadm_settings, plugin_envs) },
 
@@ -103,7 +104,6 @@ const struct doveadm_settings doveadm_default_settings = {
        .dsync_hashed_headers = "Date Message-ID",
        .dsync_commit_msgs_interval = 100,
        .doveadm_api_key = "",
-       .doveadm_http_rawlog_dir = "",
 
        .plugin_envs = ARRAY_INIT
 };
index ff84cc931b9727b3fd0bee9932404ffb1c5a95ef..bb7c773843ce9c0ea1bcaa1e7ee850ba5c3155d3 100644 (file)
@@ -10,6 +10,8 @@ enum dsync_features {
        DSYNC_FEATURE_EMPTY_HDR_WORKAROUND = 0x1,
        DSYNC_FEATURE_NO_HEADER_HASHES = 0x2,
 };
+
+#define DOVEADM_SERVER_FILTER "doveadm_server"
 /* </settings checks> */
 
 struct doveadm_settings {
@@ -34,7 +36,6 @@ struct doveadm_settings {
        const char *dsync_features;
        const char *dsync_hashed_headers;
        unsigned int dsync_commit_msgs_interval;
-       const char *doveadm_http_rawlog_dir;
        enum dsync_features parsed_features;
        ARRAY(const char *) plugin_envs;
 };