struct module_ctx *mctx;
GHashTableIter iter;
gpointer key, value;
-
+ struct rspamd_keypair_cache *cache;
ctx->ev_base = rspamd_prepare_worker (worker,
"controller",
}
}
/* Accept event */
+ cache = rspamd_keypair_cache_new (256);
ctx->http = rspamd_http_router_new (rspamd_controller_error_handler,
rspamd_controller_finish_handler, &ctx->io_tv, ctx->ev_base,
- ctx->static_files_dir);
+ ctx->static_files_dir, cache);
/* Add callbacks for different methods */
rspamd_http_router_add_path (ctx->http,
event_base_loop (ctx->ev_base, 0);
g_mime_shutdown ();
+ rspamd_http_router_free (ctx->http);
+ rspamd_keypair_cache_destroy (cache);
rspamd_log_close (rspamd_main->logger);
exit (EXIT_SUCCESS);
}
rspamd_http_router_new (rspamd_http_router_error_handler_t eh,
rspamd_http_router_finish_handler_t fh,
struct timeval *timeout, struct event_base *base,
- const char *default_fs_path)
+ const char *default_fs_path,
+ struct rspamd_keypair_cache *cache)
{
struct rspamd_http_connection_router * new;
struct stat st;
}
}
- /* XXX: stupid default value, should be configurable */
- new->cache = rspamd_keypair_cache_new (256);
+ new->cache = cache;
return new;
}
#include "ottery.h"
#include "cryptobox.h"
-static const int file_blocks = 8;
+static const int file_blocks = 16;
static const int pconns = 100;
static const int ntests = 300;
static void
rspamd_http_server_func (const gchar *path, rspamd_inet_addr_t *addr,
- rspamd_mempool_mutex_t *mtx, gpointer kp)
+ rspamd_mempool_mutex_t *mtx, gpointer kp, struct rspamd_keypair_cache *c)
{
struct rspamd_http_connection_router *rt;
struct event_base *ev_base = event_init ();
gint fd;
rt = rspamd_http_router_new (rspamd_server_error, rspamd_server_finish,
- NULL, ev_base, path);
+ NULL, ev_base, path, c);
g_assert (rt != NULL);
rspamd_http_router_set_key (rt, kp);
g_assert (sfd != -1);
if (sfd == 0) {
- rspamd_http_server_func ("/tmp/", &addr, mtx, serv_key);
+ rspamd_http_server_func ("/tmp/", &addr, mtx, serv_key, c);
exit (EXIT_SUCCESS);
}
sizeof (buf) * file_blocks,
total_diff, ntests * pconns / total_diff * 1000.);
+ /* Restart server */
+ kill (sfd, SIGTERM);
+ wait (&i);
+ sfd = fork ();
+ g_assert (sfd != -1);
+
+ if (sfd == 0) {
+ rspamd_http_server_func ("/tmp/", &addr, mtx, serv_key, NULL);
+ exit (EXIT_SUCCESS);
+ }
+
+ rspamd_mempool_lock_mutex (mtx);
total_diff = 0.0;
for (i = 0; i < ntests; i ++) {
for (j = 0; j < pconns; j ++) {
rspamd_http_client_func (filepath + sizeof ("/tmp") - 1, &addr,
- client_key, peer_key, NULL, ev_base);
+ client_key, peer_key, c, ev_base);
}
clock_gettime (CLOCK_MONOTONIC, &ts1);
event_base_loop (ev_base, 0);