]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Move doveadm_http_server from client-connection-http to main
authorMarkus Valentin <markus.valentin@open-xchange.com>
Wed, 6 Dec 2023 12:42:07 +0000 (13:42 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:12 +0000 (12:34 +0200)
src/doveadm/client-connection-http.c
src/doveadm/client-connection-private.h
src/doveadm/client-connection.c
src/doveadm/client-connection.h
src/doveadm/main.c

index 25b8299f83c3c1cf725cc5a84a4f298d36005f94..81ae9f51daddfe69c65363b419375fdefb9ee4a0 100644 (file)
@@ -11,7 +11,6 @@
 #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"
@@ -88,8 +87,6 @@ struct doveadm_http_server_mount {
        bool auth;
 };
 
-static struct http_server *doveadm_http_server;
-
 static void doveadm_http_server_send_response(struct client_request_http *req);
 
 /*
@@ -950,7 +947,7 @@ doveadm_http_server_request_destroy(struct client_request_http *req)
        i_stream_destroy(&req->input);
 
        http_server_request_unref(&req->http_request);
-       http_server_switch_ioloop(doveadm_http_server);
+       http_server_switch_ioloop(http_server_request_get_server(http_sreq));
 
        pool_unref(&req->pool);
        conn->request = NULL;
@@ -1162,7 +1159,9 @@ static void client_connection_http_free(struct client_connection *_conn)
        }
 }
 
-struct client_connection *client_connection_http_create(int fd, bool ssl)
+struct client_connection *
+client_connection_http_create(struct http_server *doveadm_http_server, int fd,
+                             bool ssl)
 {
        struct client_connection_http *conn;
        pool_t pool;
@@ -1203,23 +1202,3 @@ doveadm_http_server_connection_destroy(void *context,
        /* destroy the connection itself */
        client_connection_destroy(&bconn);
 }
-
-/*
- * Server
- */
-
-void doveadm_http_server_init(struct event *parent_event)
-{
-       const char *error;
-
-       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)
-{
-       http_server_deinit(&doveadm_http_server);
-}
index d124009a2171887c259a1ef03cb4282c7341d8e2..36c88963c0131e1ad3de4d6548855e2cd7de5dca 100644 (file)
@@ -13,10 +13,6 @@ void client_connection_destroy(struct client_connection **_conn);
 void client_connection_set_proctitle(struct client_connection *conn,
                                     const char *text);
 
-void doveadm_http_server_init(struct event *event);
-void doveadm_http_server_deinit(void);
-
-void doveadm_server_init(struct event *event);
 void doveadm_server_deinit(void);
 
 #endif
index a1d1d14bc4ffd74a3aefc8b36cc13dfd937c2104..4825eebba16dc31cc60751d3dbf9972f469e61c7 100644 (file)
@@ -101,14 +101,8 @@ void client_connection_set_proctitle(struct client_connection *conn,
        process_title_set(str);
 }
 
-void doveadm_server_init(struct event *event)
-{
-       doveadm_http_server_init(event);
-}
-
 void doveadm_server_deinit(void)
 {
        if (doveadm_client != NULL)
                client_connection_destroy(&doveadm_client);
-       doveadm_http_server_deinit();
 }
index de324a1bd1016f04e7056186cf22fab3bba9d24d..38d83a35088155f748f771ecf0a1156592eb90b5 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "net.h"
 
+struct http_server;
 #define DOVEADM_LOG_CHANNEL_ID 'L'
 
 struct client_connection {
@@ -24,6 +25,7 @@ extern struct client_connection *doveadm_client;
 struct client_connection *
 client_connection_tcp_create(int fd, int listen_fd, bool ssl);
 struct client_connection *
-client_connection_http_create(int fd, bool ssl);
+client_connection_http_create(struct http_server *doveadm_http_server,
+                             int fd, bool ssl);
 
 #endif
index cfd775ddfdff55f13974174a6fcad1430ef96203..bac236ddcef0b8bd15b64676192ebf02b3d856c9 100644 (file)
@@ -14,6 +14,8 @@
 #include "doveadm-mail.h"
 #include "doveadm-print-private.h"
 #include "ostream.h"
+#include "http-server.h"
+#include "settings.h"
 
 const struct doveadm_print_vfuncs *doveadm_print_vfuncs_all[] = {
        &doveadm_print_server_vfuncs,
@@ -21,6 +23,8 @@ const struct doveadm_print_vfuncs *doveadm_print_vfuncs_all[] = {
        NULL
 };
 
+static struct http_server *doveadm_http_server;
+
 struct client_connection *doveadm_client;
 int doveadm_exit_code = 0;
 
@@ -41,7 +45,8 @@ static void client_connected(struct master_service_connection *conn)
        master_service_client_connection_accept(conn);
        type = master_service_connection_get_type(conn);
        if (strcmp(type, "http") == 0) {
-               doveadm_client = client_connection_http_create(conn->fd, conn->ssl);
+               doveadm_client = client_connection_http_create(doveadm_http_server,
+                                                              conn->fd, conn->ssl);
        } else {
                doveadm_client = client_connection_tcp_create(conn->fd, conn->listen_fd,
                                                          conn->ssl);
@@ -60,6 +65,19 @@ static void main_preinit(void)
        restrict_access_allow_coredumps(TRUE);
 }
 
+static void doveadm_http_server_init(void)
+{
+       const char *error;
+
+       struct event *event =
+               event_create(master_service_get_event(master_service));
+       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);
+
+}
+
 static void main_init(void)
 {
        doveadm_server = TRUE;
@@ -79,7 +97,7 @@ static void main_init(void)
           mail_plugins have been loaded. */
        doveadm_load_modules();
 
-       doveadm_server_init(master_service_get_event(master_service));
+       doveadm_http_server_init();
        if (doveadm_verbose_proctitle)
                process_title_set("[idling]");
 }
@@ -87,6 +105,7 @@ static void main_init(void)
 static void main_deinit(void)
 {
        doveadm_server_deinit();
+       http_server_deinit(&doveadm_http_server);
        doveadm_mail_deinit();
        doveadm_dump_deinit();
        doveadm_unload_modules();