From: Markus Valentin Date: Wed, 6 Dec 2023 11:08:28 +0000 (+0100) Subject: doveadm: Use http_server_init_auto() X-Git-Tag: 2.4.1~1052 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15efdb6f70113fb683ae185c144d446799a24d80;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Use http_server_init_auto() 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 --- diff --git a/src/doveadm/client-connection-http.c b/src/doveadm/client-connection-http.c index 02ca068b6d..25b8299f83 100644 --- a/src/doveadm/client-connection-http.c +++ b/src/doveadm/client-connection-http.c @@ -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) diff --git a/src/doveadm/client-connection-tcp.c b/src/doveadm/client-connection-tcp.c index e7942b7c93..57a50c0a06 100644 --- a/src/doveadm/client-connection-tcp.c +++ b/src/doveadm/client-connection-tcp.c @@ -18,6 +18,7 @@ #include "doveadm-print.h" #include "doveadm-protocol.h" #include "client-connection-private.h" +#include "settings.h" #include @@ -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; diff --git a/src/doveadm/doveadm-settings.c b/src/doveadm/doveadm-settings.c index 29634465b1..0a836b811c 100644 --- a/src/doveadm/doveadm-settings.c +++ b/src/doveadm/doveadm-settings.c @@ -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 }; diff --git a/src/doveadm/doveadm-settings.h b/src/doveadm/doveadm-settings.h index ff84cc931b..bb7c773843 100644 --- a/src/doveadm/doveadm-settings.h +++ b/src/doveadm/doveadm-settings.h @@ -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" /* */ 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; };