void doveadm_http_server_init(struct event *event)
{
- struct http_server_settings http_set = {
- .rawlog_dir = doveadm_settings->doveadm_http_rawlog_dir,
- };
+ struct http_server_settings http_set;
+
+ http_server_settings_init(null_pool, &http_set);
+ http_set.rawlog_dir = doveadm_settings->doveadm_http_rawlog_dir;
doveadm_http_server = http_server_init(&http_set, event);
}
struct http_server {
pool_t pool;
- struct http_server_settings *set;
+ const struct http_server_settings *set;
const struct ssl_iostream_settings *ssl_set;
struct ioloop *ioloop;
* Server
*/
+void http_server_settings_init(pool_t pool, struct http_server_settings *set_r)
+{
+ i_zero(set_r);
+ set_r->pool = pool;
+ set_r->base_dir = PKG_RUNDIR;
+ set_r->default_host = "";
+ set_r->max_pipelined_requests = 1;
+ set_r->request_max_payload_size = HTTP_SERVER_DEFAULT_MAX_PAYLOAD_SIZE;
+}
+
struct http_server *http_server_init(const struct http_server_settings *set,
struct event *event_parent)
{
pool = pool_alloconly_create("http server", 1024);
server = p_new(pool, struct http_server, 1);
- server->set = p_new(pool, struct http_server_settings, 1);
server->pool = pool;
- if (server->set->pool == NULL)
- server->set->pool = null_pool;
- if (set->default_host != NULL && *set->default_host != '\0')
- server->set->default_host = p_strdup(pool, set->default_host);
- if (set->rawlog_dir != NULL && *set->rawlog_dir != '\0')
- server->set->rawlog_dir = p_strdup(pool, set->rawlog_dir);
- server->set->max_client_idle_time_msecs = set->max_client_idle_time_msecs;
- server->set->max_pipelined_requests =
- (set->max_pipelined_requests > 0 ? set->max_pipelined_requests : 1);
- server->set->request_max_target_length = set->request_max_target_length;
- server->set->request_max_payload_size = set->request_max_payload_size;
- server->set->request_hdr_max_size = set->request_hdr_max_size;
- server->set->request_hdr_max_field_size = set->request_hdr_max_field_size;
- server->set->request_hdr_max_fields = set->request_hdr_max_fields;
- server->set->socket_send_buffer_size = set->socket_send_buffer_size;
- server->set->socket_recv_buffer_size = set->socket_recv_buffer_size;
+ server->set = set;
+ pool_ref(set->pool);
server->event = event_create(event_parent);
event_add_category(server->event, &event_category_http_server);
i_assert(array_count(&server->locations) == 0);
event_unref(&server->event);
+ settings_free(server->set);
pool_unref(&server->pool);
}
* Server
*/
+void http_server_settings_init(pool_t pool, struct http_server_settings *set_r);
struct http_server *http_server_init(const struct http_server_settings *set,
struct event *event_parent);
void http_server_deinit(struct http_server **_server);
static void
test_init_server_settings(struct http_server_settings *server_set_r)
{
- i_zero(server_set_r);
+ http_server_settings_init(null_pool, server_set_r);
server_set_r->request_max_payload_size = UOFF_T_MAX;
if (small_socket_buffers) {
/* server settings */
test_init_server_settings(&http_server_set);
- http_server_set.max_pipelined_requests = 0;
/* client settings */
test_init_client_settings(&http_client_set);
static void test_server_defaults(struct http_server_settings *http_set)
{
/* server settings */
- i_zero(http_set);
+ http_server_settings_init(null_pool, http_set);
http_set->max_client_idle_time_msecs = 5*1000;
http_set->max_pipelined_requests = 1;
}
/* open server socket */
io_listen = io_add(fd_listen, IO_READ, server_connection_accept, NULL);
- http_server = http_server_init(http_set, event);
+ http_server = http_server_init((struct http_server_settings*) http_set, event);
io_loop_run(ioloop);
else if (net_addr2ip(argv[1], &my_ip) < 0)
i_fatal("Invalid IP parameter");
- i_zero(&http_set);
+ http_server_settings_init(null_pool, &http_set);
http_set.max_client_idle_time_msecs = 20*1000; /* defaults to indefinite! */
http_set.max_pipelined_requests = 4;
void client_http_init(const struct stats_settings *set, struct event *event)
{
- struct http_server_settings http_set = {
- .rawlog_dir = set->stats_http_rawlog_dir,
- };
+ struct http_server_settings http_set;
+
+ http_server_settings_init(null_pool, &http_set);
+ http_set.rawlog_dir = set->stats_http_rawlog_dir,
i_array_init(&stats_http_resources, 8);