rspamd_milter_send_action (nsession->client_milter_conn,
RSPAMD_MILTER_ACCEPT);
REF_RELEASE (session);
+ rspamd_http_message_free (msg);
}
else {
rspamd_http_connection_write_message (session->client_conn,
{
struct rspamd_http_message *msg;
struct rspamd_proxy_session *session = task->fin_arg, *nsession;
- ucl_object_t *rep;
+ ucl_object_t *rep = NULL;
const char *ctype = "application/json";
msg = rspamd_http_new_message (HTTP_RESPONSE);
}
session->master_conn->flags |= RSPAMD_BACKEND_CLOSED;
- session->master_conn->results = rep;
+
+ if (rep) {
+ session->master_conn->results = ucl_object_ref (rep);
+ }
if (session->client_milter_conn) {
/*
nsession = proxy_session_refresh (session);
rspamd_milter_send_action (nsession->client_milter_conn,
RSPAMD_MILTER_ACCEPT);
+ rspamd_http_message_free (msg);
REF_RELEASE (session);
}
else {
task = rspamd_task_new (session->worker, session->ctx->cfg);
task->flags |= RSPAMD_TASK_FLAG_MIME;
task->sock = -1;
- task->client_addr = session->client_addr;
+
+ if (session->client_milter_conn) {
+ task->client_addr = rspamd_inet_address_copy (
+ session->client_milter_conn->addr);
+ }
+ else {
+ task->client_addr = rspamd_inet_address_copy (session->client_addr);
+ }
+
task->fin_arg = session;
task->resolver = session->ctx->resolver;
/* TODO: allow to disable autolearn in protocol */
event_add (&task->timeout_ev, &task_tv);
}
+ session->master_conn->task = task;
rspamd_task_process (task, RSPAMD_TASK_PROCESS_ALL);
return TRUE;