#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"
bool auth;
};
-static struct http_server *doveadm_http_server;
-
static void doveadm_http_server_send_response(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;
}
}
-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;
/* 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);
-}
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
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();
}
#include "net.h"
+struct http_server;
#define DOVEADM_LOG_CHANNEL_ID 'L'
struct client_connection {
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
#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,
NULL
};
+static struct http_server *doveadm_http_server;
+
struct client_connection *doveadm_client;
int doveadm_exit_code = 0;
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);
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;
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]");
}
static void main_deinit(void)
{
doveadm_server_deinit();
+ http_server_deinit(&doveadm_http_server);
doveadm_mail_deinit();
doveadm_dump_deinit();
doveadm_unload_modules();