浏览代码

[Fix] Use the same pool for related sessions

tags/1.6.0
Vsevolod Stakhov 7 年前
父节点
当前提交
5d2e4dc2c1
共有 4 个文件被更改,包括 16 次插入12 次删除
  1. 6
    6
      src/controller.c
  2. 2
    3
      src/libserver/milter.c
  3. 1
    0
      src/libserver/milter.h
  4. 7
    3
      src/rspamd_proxy.c

+ 6
- 6
src/controller.c 查看文件

@@ -1465,7 +1465,7 @@ rspamd_controller_handle_lua_history (lua_State *L,

if (lua_isfunction (L, -1)) {
task = rspamd_task_new (session->ctx->worker, session->cfg,
NULL);
session->pool);

task->resolver = ctx->resolver;
task->ev_base = ctx->ev_base;
@@ -1763,7 +1763,7 @@ rspamd_controller_handle_lua (struct rspamd_http_connection_entry *conn_ent,
return 0;
}

task = rspamd_task_new (session->ctx->worker, session->cfg, NULL);
task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool);

task->resolver = ctx->resolver;
task->ev_base = ctx->ev_base;
@@ -1946,7 +1946,7 @@ rspamd_controller_handle_learn_common (
return 0;
}

task = rspamd_task_new (session->ctx->worker, session->cfg, NULL);
task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool);

task->resolver = ctx->resolver;
task->ev_base = ctx->ev_base;
@@ -2046,7 +2046,7 @@ rspamd_controller_handle_scan (struct rspamd_http_connection_entry *conn_ent,
return 0;
}

task = rspamd_task_new (session->ctx->worker, session->cfg, NULL);
task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool);
task->ev_base = session->ctx->ev_base;

task->resolver = ctx->resolver;
@@ -2544,7 +2544,7 @@ rspamd_controller_handle_stat_common (
rspamd_mempool_stat (&mem_st);
memcpy (&stat_copy, session->ctx->worker->srv->stat, sizeof (stat_copy));
stat = &stat_copy;
task = rspamd_task_new (session->ctx->worker, session->cfg, NULL);
task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool);

ctx = session->ctx;
task->resolver = ctx->resolver;
@@ -2878,7 +2878,7 @@ rspamd_controller_handle_lua_plugin (struct rspamd_http_connection_entry *conn_e
return 0;
}

task = rspamd_task_new (session->ctx->worker, session->cfg, NULL);
task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool);

task->resolver = ctx->resolver;
task->ev_base = ctx->ev_base;

+ 2
- 3
src/libserver/milter.c 查看文件

@@ -180,8 +180,6 @@ rspamd_milter_session_dtor (struct rspamd_milter_session *session)
rspamd_fstring_free (session->hostname);
}

rspamd_mempool_delete (priv->pool);

g_free (priv);
g_free (session);
}
@@ -959,6 +957,7 @@ rspamd_milter_handle_session (struct rspamd_milter_session *session,

gboolean
rspamd_milter_handle_socket (gint fd, const struct timeval *tv,
rspamd_mempool_t *pool,
struct event_base *ev_base, rspamd_milter_finish finish_cb,
rspamd_milter_error error_cb, void *ud)
{
@@ -983,7 +982,7 @@ rspamd_milter_handle_socket (gint fd, const struct timeval *tv,
priv->parser.buf = rspamd_fstring_sized_new (RSPAMD_MILTER_MESSAGE_CHUNK + 5);
priv->ev_base = ev_base;
priv->state = RSPAMD_MILTER_READ_MORE;
priv->pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), "milter");
priv->pool = pool;

if (tv) {
memcpy (&priv->tv, tv, sizeof (*tv));

+ 1
- 0
src/libserver/milter.h 查看文件

@@ -68,6 +68,7 @@ typedef void (*rspamd_milter_error) (gint fd,
* @return
*/
gboolean rspamd_milter_handle_socket (gint fd, const struct timeval *tv,
rspamd_mempool_t *pool,
struct event_base *ev_base, rspamd_milter_finish finish_cb,
rspamd_milter_error error_cb, void *ud);


+ 7
- 3
src/rspamd_proxy.c 查看文件

@@ -1596,7 +1596,8 @@ rspamd_proxy_self_scan (struct rspamd_proxy_session *session)
gsize len;

msg = session->client_message;
task = rspamd_task_new (session->worker, session->ctx->cfg, NULL);
task = rspamd_task_new (session->worker, session->ctx->cfg,
session->pool);
task->flags |= RSPAMD_TASK_FLAG_MIME;
task->sock = -1;

@@ -1941,7 +1942,8 @@ proxy_accept_socket (gint fd, short what, void *arg)
session->client_addr = addr;
session->mirror_conns = g_ptr_array_sized_new (ctx->mirrors->len);

session->pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), "proxy");
session->pool = rspamd_mempool_new (rspamd_mempool_suggest_size (),
"proxy");
session->ctx = ctx;
session->worker = worker;

@@ -1973,7 +1975,9 @@ proxy_accept_socket (gint fd, short what, void *arg)
rspamd_inet_address_to_string (addr),
rspamd_inet_address_get_port (addr));

rspamd_milter_handle_socket (nfd, &ctx->io_tv, ctx->ev_base,
rspamd_milter_handle_socket (nfd, &ctx->io_tv,
session->pool,
ctx->ev_base,
proxy_milter_finish_handler,
proxy_milter_error_handler,
session);

正在加载...
取消
保存