ctx->http = rspamd_http_router_new(rspamd_controller_error_handler,
rspamd_controller_finish_handler, ctx->timeout,
ctx->static_files_dir, ctx->http_ctx);
+ rspamd_http_router_set_max_size(ctx->http, ctx->cfg->max_message);
if (rspamd_worker_has_ssl_socket(worker)) {
if (ctx->ssl_cert && ctx->ssl_key) {
router->server_ssl_ctx = ssl_ctx;
}
+void rspamd_http_router_set_max_size(struct rspamd_http_connection_router *router,
+ gsize sz)
+{
+ g_assert(router != NULL);
+ router->max_size = sz;
+}
+
void rspamd_http_router_handle_socket_ssl(struct rspamd_http_connection_router *router,
int fd, gpointer ud, gboolean ssl)
{
rspamd_http_router_finish_handler,
0);
+ rspamd_http_connection_set_max_size(conn->conn, router->max_size);
+
if (router->key) {
rspamd_http_connection_set_key(conn->conn, router->key);
}
rspamd_http_router_error_handler_t error_handler;
rspamd_http_router_finish_handler_t finish_handler;
gpointer server_ssl_ctx;
+ gsize max_size;
};
/**
void rspamd_http_router_set_ssl(struct rspamd_http_connection_router *router,
gpointer ssl_ctx);
+/**
+ * Set the maximum size of a request body accepted by the router
+ * (0 means no limit)
+ * @param router router object
+ * @param sz maximum body size in bytes
+ */
+void rspamd_http_router_set_max_size(struct rspamd_http_connection_router *router,
+ gsize sz);
+
/**
* Handle new accepted socket
* @param router router object
rspamd_control_error_handler,
rspamd_control_finish_handler,
0);
+ /* Control commands are URL based, so the body is not used at all */
+ rspamd_http_connection_set_max_size(session->conn,
+ rspamd_main->cfg->max_message);
session->rspamd_main = rspamd_main;
session->addr = addr;
session->event_loop = rspamd_main->event_loop;
proxy_client_finish_handler,
http_opts);
+ rspamd_http_connection_set_max_size(session->client_conn,
+ ctx->cfg->max_message);
+
if (ctx->key) {
rspamd_http_connection_set_key(session->client_conn, ctx->key);
}