]> source.dussan.org Git - rspamd.git/commitdiff
[Project] HTTP: Rework HTTP connections API to simplify its usage
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 25 Feb 2019 15:23:22 +0000 (15:23 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 25 Feb 2019 15:23:22 +0000 (15:23 +0000)
15 files changed:
src/client/rspamdclient.c
src/controller.c
src/fuzzy_storage.c
src/libserver/protocol.c
src/libserver/rspamd_control.c
src/libserver/worker_util.c
src/libutil/http_connection.c
src/libutil/http_connection.h
src/libutil/http_router.c
src/libutil/map.c
src/lua/lua_http.c
src/plugins/surbl.c
src/rspamadm/control.c
src/rspamd_proxy.c
src/worker.c

index 54cd490e6509579cf943f52aa7da3ebd75464dee..a2ff85458409ebfbac7089473816ddf9967302a2 100644 (file)
@@ -118,9 +118,7 @@ rspamd_client_finish_handler (struct rspamd_http_connection *conn,
                rspamd_http_connection_reset (c->http_conn);
                rspamd_http_connection_read_message (c->http_conn,
                        c->req,
-                       c->fd,
-                       &c->timeout,
-                       c->ev_base);
+                       &c->timeout);
                return 0;
        }
        else {
@@ -258,6 +256,7 @@ rspamd_client_init (struct rspamd_http_context *http_ctx,
        conn->fd = fd;
        conn->req_sent = FALSE;
        conn->http_conn = rspamd_http_connection_new (http_ctx,
+                       fd,
                        rspamd_client_body_handler,
                        rspamd_client_error_handler,
                        rspamd_client_finish_handler,
@@ -443,12 +442,12 @@ rspamd_client_command (struct rspamd_client_connection *conn,
 
        if (compressed) {
                rspamd_http_connection_write_message (conn->http_conn, req->msg, NULL,
-                               "application/x-compressed", req, conn->fd,
-                               &conn->timeout, conn->ev_base);
+                               "application/x-compressed", req,
+                               &conn->timeout);
        }
        else {
                rspamd_http_connection_write_message (conn->http_conn, req->msg, NULL,
-                               "text/plain", req, conn->fd, &conn->timeout, conn->ev_base);
+                               "text/plain", req, &conn->timeout);
        }
 
        return TRUE;
index a6214655a44692b2e8acb18807f2a604a71d8c11..350745f3c2166820d558e21c008da2957ae61f7f 100644 (file)
@@ -1078,8 +1078,8 @@ rspamd_controller_handle_get_map (struct rspamd_http_connection_entry *conn_ent,
        rspamd_http_connection_reset (conn_ent->conn);
        rspamd_http_router_insert_headers (conn_ent->rt, reply);
        rspamd_http_connection_write_message (conn_ent->conn, reply, NULL,
-               "text/plain", conn_ent, conn_ent->conn->fd,
-               conn_ent->rt->ptv, conn_ent->rt->ev_base);
+                       "text/plain", conn_ent,
+                       conn_ent->rt->ptv);
        conn_ent->is_reply = TRUE;
 
        return 0;
@@ -1942,8 +1942,7 @@ rspamd_controller_scan_reply (struct rspamd_task *task)
        rspamd_http_connection_reset (conn_ent->conn);
        rspamd_http_router_insert_headers (conn_ent->rt, msg);
        rspamd_http_connection_write_message (conn_ent->conn, msg, NULL,
-                       "application/json", conn_ent, conn_ent->conn->fd, conn_ent->rt->ptv,
-                       conn_ent->rt->ev_base);
+                       "application/json", conn_ent, conn_ent->rt->ptv);
        conn_ent->is_reply = TRUE;
 }
 
@@ -2911,9 +2910,7 @@ rspamd_controller_handle_ping (struct rspamd_http_connection_entry *conn_ent,
                        NULL,
                        "text/plain",
                        conn_ent,
-                       conn_ent->conn->fd,
-                       conn_ent->rt->ptv,
-                       conn_ent->rt->ev_base);
+                       conn_ent->rt->ptv);
        conn_ent->is_reply = TRUE;
 
        return 0;
@@ -2947,9 +2944,7 @@ rspamd_controller_handle_unknown (struct rspamd_http_connection_entry *conn_ent,
                                NULL,
                                "text/plain",
                                conn_ent,
-                               conn_ent->conn->fd,
-                               conn_ent->rt->ptv,
-                               conn_ent->rt->ev_base);
+                               conn_ent->rt->ptv);
                conn_ent->is_reply = TRUE;
        }
        else {
@@ -2965,9 +2960,7 @@ rspamd_controller_handle_unknown (struct rspamd_http_connection_entry *conn_ent,
                                NULL,
                                "text/plain",
                                conn_ent,
-                               conn_ent->conn->fd,
-                               conn_ent->rt->ptv,
-                               conn_ent->rt->ev_base);
+                               conn_ent->rt->ptv);
                conn_ent->is_reply = TRUE;
        }
 
index a02db290bb2a3b4707bbeaee035247e5ed55fded..8dae4fb4bccd919fcdb5e3e8babea6e0cecf0e8c 100644 (file)
@@ -531,8 +531,7 @@ fuzzy_mirror_updates_version_cb (guint64 rev64, void *ud)
        double_to_tv (ctx->sync_timeout, &tv);
        rspamd_http_connection_write_message (conn->http_conn,
                        msg, NULL, NULL, conn,
-                       conn->sock,
-                       &tv, ctx->ev_base);
+                       &tv);
        msg_info ("send update request to %s", m->name);
 
        g_array_free (cbdata->updates_pending, TRUE);
@@ -619,6 +618,7 @@ rspamd_fuzzy_send_update_mirror (struct rspamd_fuzzy_storage_ctx *ctx,
 
        conn->http_conn = rspamd_http_connection_new (
                        ctx->http_ctx,
+                       conn->sock,
                        NULL,
                        fuzzy_mirror_error_handler,
                        fuzzy_mirror_finish_handler,
@@ -1570,8 +1570,7 @@ rspamd_fuzzy_mirror_send_reply (struct fuzzy_master_update_session *session,
 
        rspamd_http_connection_reset (session->conn);
        rspamd_http_connection_write_message (session->conn, msg, NULL, "text/plain",
-                       session, session->sock, &session->ctx->master_io_tv,
-                       session->ctx->ev_base);
+                       session, &session->ctx->master_io_tv);
 }
 
 static void
@@ -1712,9 +1711,7 @@ rspamd_fuzzy_collection_send_error (struct rspamd_http_connection_entry *entry,
                NULL,
                "text/plain",
                entry,
-               entry->conn->fd,
-               entry->rt->ptv,
-               entry->rt->ev_base);
+               entry->rt->ptv);
        entry->is_reply = TRUE;
 }
 
@@ -1739,9 +1736,7 @@ rspamd_fuzzy_collection_send_fstring (struct rspamd_http_connection_entry *entry
                NULL,
                "application/octet-stream",
                entry,
-               entry->conn->fd,
-               entry->rt->ptv,
-               entry->rt->ev_base);
+               entry->rt->ptv);
        entry->is_reply = TRUE;
 }
 
@@ -1997,6 +1992,7 @@ accept_fuzzy_mirror_socket (gint fd, short what, void *arg)
        session->uid[sizeof (session->uid) - 1] = '\0';
        http_conn = rspamd_http_connection_new (
                        ctx->http_ctx,
+                       nfd,
                        NULL,
                        rspamd_fuzzy_mirror_error_handler,
                        rspamd_fuzzy_mirror_finish_handler,
@@ -2011,9 +2007,7 @@ accept_fuzzy_mirror_socket (gint fd, short what, void *arg)
 
        rspamd_http_connection_read_message (http_conn,
                        session,
-                       nfd,
-                       &ctx->master_io_tv,
-                       ctx->ev_base);
+                       &ctx->master_io_tv);
 }
 
 /*
index 5bcfbc37a1183a7cbd1fc2c2ae8d3ddf63a8016f..2a9cc605a390346f4d00619b57679b2c309b8646 100644 (file)
@@ -1737,7 +1737,7 @@ rspamd_protocol_write_reply (struct rspamd_task *task)
 
        rspamd_http_connection_reset (task->http_conn);
        rspamd_http_connection_write_message (task->http_conn, msg, NULL,
-               ctype, task, task->sock, &task->tv, task->ev_base);
+               ctype, task, &task->tv);
 
        task->processed_stages |= RSPAMD_TASK_STAGE_REPLIED;
 }
index fb0fc22b67b400e169c0d30810263423a0924b30..7131993cedf61714066412db44142444df89bbc9 100644 (file)
@@ -129,9 +129,7 @@ rspamd_control_send_error (struct rspamd_control_session *session,
                        NULL,
                        "application/json",
                        session,
-                       session->fd,
-                       &io_timeout,
-                       session->rspamd_main->ev_base);
+                       &io_timeout);
 }
 
 static void
@@ -154,9 +152,7 @@ rspamd_control_send_ucl (struct rspamd_control_session *session,
                        NULL,
                        "application/json",
                        session,
-                       session->fd,
-                       &io_timeout,
-                       session->rspamd_main->ev_base);
+                       &io_timeout);
 }
 
 static void
@@ -512,14 +508,15 @@ rspamd_control_process_client_socket (struct rspamd_main *rspamd_main,
 
        session->fd = fd;
        session->conn = rspamd_http_connection_new (rspamd_main->http_ctx,
+                       fd,
                        NULL,
                        rspamd_control_error_handler,
                        rspamd_control_finish_handler,
                        0,
                        RSPAMD_HTTP_SERVER);
        session->rspamd_main = rspamd_main;
-       rspamd_http_connection_read_message (session->conn, session, session->fd,
-                       &io_timeout, rspamd_main->ev_base);
+       rspamd_http_connection_read_message (session->conn, session,
+                       &io_timeout);
 }
 
 struct rspamd_worker_control_data {
index a52dd3ccb115a848b5be64aa8387587d8b449ea9..06296bba2e2c7cf97e3f0b2be4c5b944cdbce0db 100644 (file)
@@ -435,9 +435,7 @@ rspamd_controller_send_error (struct rspamd_http_connection_entry *entry,
                NULL,
                "application/json",
                entry,
-               entry->conn->fd,
-               entry->rt->ptv,
-               entry->rt->ev_base);
+               entry->rt->ptv);
        entry->is_reply = TRUE;
 }
 
@@ -469,9 +467,7 @@ rspamd_controller_send_string (struct rspamd_http_connection_entry *entry,
                NULL,
                "application/json",
                entry,
-               entry->conn->fd,
-               entry->rt->ptv,
-               entry->rt->ev_base);
+               entry->rt->ptv);
        entry->is_reply = TRUE;
 }
 
@@ -497,9 +493,7 @@ rspamd_controller_send_ucl (struct rspamd_http_connection_entry *entry,
                NULL,
                "application/json",
                entry,
-               entry->conn->fd,
-               entry->rt->ptv,
-               entry->rt->ev_base);
+               entry->rt->ptv);
        entry->is_reply = TRUE;
 }
 
index fd052951b9874e4e6aebaea65ffa3a0345cb26d0..1c4bec380d6cf9b254aaff5a8c42c5e91ed268c5 100644 (file)
@@ -687,13 +687,11 @@ rspamd_http_on_message_complete (http_parser * parser)
 static void
 rspamd_http_simple_client_helper (struct rspamd_http_connection *conn)
 {
-       struct event_base *base;
        struct rspamd_http_connection_private *priv;
        gpointer ssl;
        gint request_method;
 
        priv = conn->priv;
-       base = conn->priv->ev.ev_base;
        ssl = priv->ssl;
        priv->ssl = NULL;
        request_method = priv->msg->method;
@@ -702,12 +700,12 @@ rspamd_http_simple_client_helper (struct rspamd_http_connection *conn)
        /* Plan read message */
 
        if (conn->opts & RSPAMD_HTTP_CLIENT_SHARED) {
-               rspamd_http_connection_read_message_shared (conn, conn->ud, conn->fd,
-                               conn->priv->ptv, base);
+               rspamd_http_connection_read_message_shared (conn, conn->ud,
+                               conn->priv->ptv);
        }
        else {
-               rspamd_http_connection_read_message (conn, conn->ud, conn->fd,
-                               conn->priv->ptv, base);
+               rspamd_http_connection_read_message (conn, conn->ud,
+                               conn->priv->ptv);
        }
 
        priv->msg->method = request_method;
@@ -1036,6 +1034,7 @@ rspamd_http_parser_reset (struct rspamd_http_connection *conn)
 struct rspamd_http_connection *
 rspamd_http_connection_new (
                struct rspamd_http_context *ctx,
+               gint fd,
                rspamd_http_body_handler_t body_handler,
                rspamd_http_error_handler_t error_handler,
                rspamd_http_finish_handler_t finish_handler,
@@ -1055,7 +1054,7 @@ rspamd_http_connection_new (
        conn->body_handler = body_handler;
        conn->error_handler = error_handler;
        conn->finish_handler = finish_handler;
-       conn->fd = -1;
+       conn->fd = fd;
        conn->ref = 1;
        conn->finished = FALSE;
 
@@ -1303,13 +1302,12 @@ rspamd_http_connection_free (struct rspamd_http_connection *conn)
 
 static void
 rspamd_http_connection_read_message_common (struct rspamd_http_connection *conn,
-               gpointer ud, gint fd, struct timeval *timeout, struct event_base *base,
+               gpointer ud, struct timeval *timeout,
                gint flags)
 {
        struct rspamd_http_connection_private *priv = conn->priv;
        struct rspamd_http_message *req;
 
-       conn->fd = fd;
        conn->ud = ud;
        req = rspamd_http_new_message (
                conn->type == RSPAMD_HTTP_SERVER ? HTTP_REQUEST : HTTP_RESPONSE);
@@ -1341,13 +1339,12 @@ rspamd_http_connection_read_message_common (struct rspamd_http_connection *conn,
        priv->flags |= RSPAMD_HTTP_CONN_FLAG_NEW_HEADER;
 
        event_set (&priv->ev,
-               fd,
+               conn->fd,
                EV_READ | EV_PERSIST,
                rspamd_http_event_handler,
                conn);
-       if (base != NULL) {
-               event_base_set (base, &priv->ev);
-       }
+
+       event_base_set (priv->ctx->ev_base, &priv->ev);
 
        priv->flags &= ~RSPAMD_HTTP_CONN_FLAG_RESETED;
        event_add (&priv->ev, priv->ptv);
@@ -1355,16 +1352,16 @@ rspamd_http_connection_read_message_common (struct rspamd_http_connection *conn,
 
 void
 rspamd_http_connection_read_message (struct rspamd_http_connection *conn,
-               gpointer ud, gint fd, struct timeval *timeout, struct event_base *base)
+               gpointer ud, struct timeval *timeout)
 {
-       rspamd_http_connection_read_message_common (conn, ud, fd, timeout, base, 0);
+       rspamd_http_connection_read_message_common (conn, ud, timeout, 0);
 }
 
 void
 rspamd_http_connection_read_message_shared (struct rspamd_http_connection *conn,
-               gpointer ud, gint fd, struct timeval *timeout, struct event_base *base)
+               gpointer ud, struct timeval *timeout)
 {
-       rspamd_http_connection_read_message_common (conn, ud, fd, timeout, base,
+       rspamd_http_connection_read_message_common (conn, ud, timeout,
                        RSPAMD_HTTP_FLAG_SHMEM);
 }
 
@@ -1720,9 +1717,12 @@ rspamd_http_message_write_header (const gchar* mime_type, gboolean encrypted,
 
 static void
 rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn,
-               struct rspamd_http_message *msg, const gchar *host, const gchar *mime_type,
-               gpointer ud, gint fd, struct timeval *timeout, struct event_base *base,
-               gboolean allow_shared)
+                                                                                        struct rspamd_http_message *msg,
+                                                                                        const gchar *host,
+                                                                                        const gchar *mime_type,
+                                                                                        gpointer ud,
+                                                                                        struct timeval *timeout,
+                                                                                        gboolean allow_shared)
 {
        struct rspamd_http_connection_private *priv = conn->priv;
        struct rspamd_http_header *hdr, *htmp, *hcur;
@@ -1737,7 +1737,6 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn
        enum rspamd_cryptobox_mode mode;
        GError *err;
 
-       conn->fd = fd;
        conn->ud = ud;
        priv->msg = msg;
 
@@ -2043,9 +2042,7 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn
                gpointer ssl_ctx = (msg->flags & RSPAMD_HTTP_FLAG_SSL_NOVERIFY) ?
                                priv->ctx->ssl_ctx_noverify : priv->ctx->ssl_ctx;
 
-               if (base != NULL) {
-                       event_base_set (base, &priv->ev);
-               }
+               event_base_set (priv->ctx->ev_base, &priv->ev);
 
                if (!ssl_ctx) {
                        err = g_error_new (HTTP_ERROR, errno, "ssl message requested "
@@ -2062,11 +2059,11 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn
                                rspamd_ssl_connection_free (priv->ssl);
                        }
 
-                       priv->ssl = rspamd_ssl_connection_new (ssl_ctx, base,
+                       priv->ssl = rspamd_ssl_connection_new (ssl_ctx, priv->ctx->ev_base,
                                        !(msg->flags & RSPAMD_HTTP_FLAG_SSL_NOVERIFY));
                        g_assert (priv->ssl != NULL);
 
-                       if (!rspamd_ssl_connect_fd (priv->ssl, fd, host, &priv->ev,
+                       if (!rspamd_ssl_connect_fd (priv->ssl, conn->fd, host, &priv->ev,
                                        priv->ptv, rspamd_http_event_handler,
                                        rspamd_http_ssl_err_handler, conn)) {
 
@@ -2083,11 +2080,8 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn
                }
        }
        else {
-               event_set (&priv->ev, fd, EV_WRITE, rspamd_http_event_handler, conn);
-
-               if (base != NULL) {
-                       event_base_set (base, &priv->ev);
-               }
+               event_set (&priv->ev, conn->fd, EV_WRITE, rspamd_http_event_handler, conn);
+               event_base_set (priv->ctx->ev_base, &priv->ev);
 
                event_add (&priv->ev, priv->ptv);
        }
@@ -2095,20 +2089,26 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn
 
 void
 rspamd_http_connection_write_message (struct rspamd_http_connection *conn,
-               struct rspamd_http_message *msg, const gchar *host, const gchar *mime_type,
-               gpointer ud, gint fd, struct timeval *timeout, struct event_base *base)
+                                                                         struct rspamd_http_message *msg,
+                                                                         const gchar *host,
+                                                                         const gchar *mime_type,
+                                                                         gpointer ud,
+                                                                         struct timeval *timeout)
 {
        rspamd_http_connection_write_message_common (conn, msg, host, mime_type,
-                       ud, fd, timeout, base, FALSE);
+                       ud, timeout, FALSE);
 }
 
 void
 rspamd_http_connection_write_message_shared (struct rspamd_http_connection *conn,
-               struct rspamd_http_message *msg, const gchar *host, const gchar *mime_type,
-               gpointer ud, gint fd, struct timeval *timeout, struct event_base *base)
+                                                                                        struct rspamd_http_message *msg,
+                                                                                        const gchar *host,
+                                                                                        const gchar *mime_type,
+                                                                                        gpointer ud,
+                                                                                        struct timeval *timeout)
 {
        rspamd_http_connection_write_message_common (conn, msg, host, mime_type,
-                       ud, fd, timeout, base, TRUE);
+                       ud, timeout, TRUE);
 }
 
 
@@ -2134,7 +2134,6 @@ rspamd_http_message_free (struct rspamd_http_message *msg)
                }
        }
 
-
        rspamd_http_message_storage_cleanup (msg);
 
        if (msg->url != NULL) {
index 4e9f9f800d39c8eca001d8360081fe7ee858a77f..5fadf45093664d2c57800a3e08fd9d8903329089 100644 (file)
@@ -73,15 +73,20 @@ struct rspamd_storage_shmem {
  * Do not verify server's certificate
  */
 #define RSPAMD_HTTP_FLAG_SSL_NOVERIFY (1 << 6)
+/**
+ * Do not verify server's certificate
+ */
+#define RSPAMD_HTTP_FLAG_KEEPALIVE (1 << 7)
 /**
  * Options for HTTP connection
  */
 enum rspamd_http_options {
-       RSPAMD_HTTP_BODY_PARTIAL = 0x1, /**< Call body handler on all body data portions *///!< RSPAMD_HTTP_BODY_PARTIAL
-       RSPAMD_HTTP_CLIENT_SIMPLE = 0x1u << 1, /**< Read HTTP client reply automatically */      //!< RSPAMD_HTTP_CLIENT_SIMPLE
-       RSPAMD_HTTP_CLIENT_ENCRYPTED = 0x1u << 2, /**< Encrypt data for client */                //!< RSPAMD_HTTP_CLIENT_ENCRYPTED
-       RSPAMD_HTTP_CLIENT_SHARED = 0x1u << 3, /**< Store reply in shared memory */              //!< RSPAMD_HTTP_CLIENT_SHARED
-       RSPAMD_HTTP_REQUIRE_ENCRYPTION = 0x1u << 4
+       RSPAMD_HTTP_BODY_PARTIAL = 1, /**< Call body handler on all body data portions */
+       RSPAMD_HTTP_CLIENT_SIMPLE = 1u << 1, /**< Read HTTP client reply automatically */
+       RSPAMD_HTTP_CLIENT_ENCRYPTED = 1u << 2, /**< Encrypt data for client */
+       RSPAMD_HTTP_CLIENT_SHARED = 1u << 3, /**< Store reply in shared memory */
+       RSPAMD_HTTP_REQUIRE_ENCRYPTION = 1u << 4,
+       RSPAMD_HTTP_CLIENT_KEEP_ALIVE = 1u << 5,
 };
 
 typedef int (*rspamd_http_body_handler_t) (struct rspamd_http_connection *conn,
@@ -120,6 +125,7 @@ struct rspamd_http_connection {
  */
 struct rspamd_http_connection *rspamd_http_connection_new (
                struct rspamd_http_context *ctx,
+               gint fd,
                rspamd_http_body_handler_t body_handler,
                rspamd_http_error_handler_t error_handler,
                rspamd_http_finish_handler_t finish_handler,
@@ -159,16 +165,12 @@ gboolean rspamd_http_connection_is_encrypted (struct rspamd_http_connection *con
 void rspamd_http_connection_read_message (
                struct rspamd_http_connection *conn,
                gpointer ud,
-               gint fd,
-               struct timeval *timeout,
-               struct event_base *base);
+               struct timeval *timeout);
 
 void rspamd_http_connection_read_message_shared (
                struct rspamd_http_connection *conn,
                gpointer ud,
-               gint fd,
-               struct timeval *timeout,
-               struct event_base *base);
+               struct timeval *timeout);
 
 /**
  * Send reply using initialised connection
@@ -183,9 +185,7 @@ void rspamd_http_connection_write_message (
                const gchar *host,
                const gchar *mime_type,
                gpointer ud,
-               gint fd,
-               struct timeval *timeout,
-               struct event_base *base);
+               struct timeval *timeout);
 
 void rspamd_http_connection_write_message_shared (
                struct rspamd_http_connection *conn,
@@ -193,9 +193,7 @@ void rspamd_http_connection_write_message_shared (
                const gchar *host,
                const gchar *mime_type,
                gpointer ud,
-               gint fd,
-               struct timeval *timeout,
-               struct event_base *base);
+               struct timeval *timeout);
 
 /**
  * Free connection structure
index e9dc4896295d1f28ab00e45d99806d578d0bcb28..570d3d5c6735ef526cd930d4d19cf5826db50cbe 100644 (file)
@@ -92,9 +92,7 @@ rspamd_http_router_error_handler (struct rspamd_http_connection *conn,
                                NULL,
                                "text/plain",
                                entry,
-                               entry->conn->fd,
-                               entry->rt->ptv,
-                               entry->rt->ev_base);
+                               entry->rt->ptv);
                entry->is_reply = TRUE;
        }
 }
@@ -211,8 +209,8 @@ rspamd_http_router_try_file (struct rspamd_http_connection_entry *entry,
 
        msg_debug ("requested file %s", realbuf);
        rspamd_http_connection_write_message (entry->conn, reply_msg, NULL,
-                       rspamd_http_router_detect_ct (realbuf), entry, entry->conn->fd,
-                       entry->rt->ptv, entry->rt->ev_base);
+                       rspamd_http_router_detect_ct (realbuf), entry,
+                       entry->rt->ptv);
 
        return TRUE;
 }
@@ -237,9 +235,7 @@ rspamd_http_router_send_error (GError *err,
                        NULL,
                        "text/plain",
                        entry,
-                       entry->conn->fd,
-                       entry->rt->ptv,
-                       entry->rt->ev_base);
+                       entry->rt->ptv);
 }
 
 
@@ -511,6 +507,7 @@ rspamd_http_router_handle_socket (struct rspamd_http_connection_router *router,
        conn->is_reply = FALSE;
 
        conn->conn = rspamd_http_connection_new (router->ctx,
+                       fd,
                        NULL,
                        rspamd_http_router_error_handler,
                        rspamd_http_router_finish_handler,
@@ -521,8 +518,7 @@ rspamd_http_router_handle_socket (struct rspamd_http_connection_router *router,
                rspamd_http_connection_set_key (conn->conn, router->key);
        }
 
-       rspamd_http_connection_read_message (conn->conn, conn, fd, router->ptv,
-                       router->ev_base);
+       rspamd_http_connection_read_message (conn->conn, conn, router->ptv);
        DL_PREPEND (router->conns, conn);
 }
 
index 1413b2953be4ffa48dc925fb1f9d004e260c8795..eca45599e893bd20d0d892712036685684fe6d0d 100644 (file)
@@ -138,9 +138,7 @@ write_http_request (struct http_callback_data *cbd)
                                cbd->data->host,
                                NULL,
                                cbd,
-                               cbd->fd,
-                               &cbd->tv,
-                               cbd->ev_base);
+                               &cbd->tv);
        }
        else {
                msg_err_map ("cannot connect to %s: %s", cbd->data->host,
@@ -1277,6 +1275,7 @@ rspamd_map_dns_callback (struct rdns_reply *reply, void *arg)
                                if (cbd->fd != -1) {
                                        cbd->stage = map_load_file;
                                        cbd->conn = rspamd_http_connection_new (NULL,
+                                                       cbd->fd,
                                                        NULL,
                                                        http_map_error,
                                                        http_map_finish,
@@ -1651,6 +1650,7 @@ check:
                        cbd->conn = rspamd_http_connection_new (
                                        NULL,
                                        NULL,
+                                       cbd->fd,
                                        http_map_error,
                                        http_map_finish,
                                        flags,
index 8c3dfb9291d31b69159d759f26db479a3edb6d22..a8616e82a20506da8bcd77302d013daa29dd2695 100644 (file)
@@ -381,6 +381,7 @@ lua_http_make_connection (struct lua_http_cbdata *cbd)
        if (cbd->cfg) {
                cbd->conn = rspamd_http_connection_new (
                                NULL,
+                               fd,
                                NULL,
                                lua_http_error_handler,
                                lua_http_finish_handler,
@@ -390,6 +391,7 @@ lua_http_make_connection (struct lua_http_cbdata *cbd)
        else {
                cbd->conn = rspamd_http_connection_new (
                                NULL,
+                               fd,
                                NULL,
                                lua_http_error_handler,
                                lua_http_finish_handler,
@@ -436,8 +438,8 @@ lua_http_make_connection (struct lua_http_cbdata *cbd)
                cbd->msg = NULL;
 
                rspamd_http_connection_write_message (cbd->conn, msg,
-                               cbd->host, cbd->mime_type, cbd, fd,
-                               &cbd->tv, cbd->ev_base);
+                               cbd->host, cbd->mime_type, cbd,
+                               &cbd->tv);
 
                return TRUE;
        }
index 22088c2e5724c6e4d7f9c4aa99dd3f1dcbede279..842071afbbed7babf84b1a97c882270cc4bd47b6 100644 (file)
@@ -1734,6 +1734,7 @@ register_redirector_call (struct rspamd_url *url, struct rspamd_task *task,
                param->url = url;
                param->task = task;
                param->conn = rspamd_http_connection_new (NULL,
+                               s,
                                NULL,
                                surbl_redirector_error,
                                surbl_redirector_finish,
@@ -1757,7 +1758,7 @@ register_redirector_call (struct rspamd_url *url, struct rspamd_task *task,
                }
 
                rspamd_http_connection_write_message (param->conn, msg, NULL,
-                               NULL, param, s, timeout, task->ev_base);
+                               NULL, param, timeout);
 
                msg_info_surbl (
                                "<%s> registered redirector call for %*s to %s, according to rule: %s",
index c030907f669290153cfff9090a074d3de6c2453c..26a769134ead06ba8d9333f2bf9680d21a8ae25e 100644 (file)
@@ -236,6 +236,7 @@ rspamadm_control (gint argc, gchar **argv, const struct rspamadm_command *_cmd)
 
        conn = rspamd_http_connection_new (
                        NULL, /* Default context */
+                       sock,
                        NULL,
                        rspamd_control_error_handler,
                        rspamd_control_finish_handler,
@@ -249,8 +250,8 @@ rspamadm_control (gint argc, gchar **argv, const struct rspamadm_command *_cmd)
        cbdata.argv = argv;
        cbdata.path = path;
 
-       rspamd_http_connection_write_message (conn, msg, NULL, NULL, &cbdata, sock,
-                       &tv, ev_base);
+       rspamd_http_connection_write_message (conn, msg, NULL, NULL, &cbdata,
+                       &tv);
 
        event_base_loop (ev_base, 0);
 
index 4ecbcf54b93fb17c947a4cc6327c2b25a04ddf0a..e25a66cafe008c39089f9b73148bdd81dddd014c 100644 (file)
@@ -1406,6 +1406,7 @@ proxy_open_mirror_connections (struct rspamd_proxy_session *session)
 
                bk_conn->backend_conn = rspamd_http_connection_new (
                                session->ctx->http_ctx,
+                               bk_conn->backend_sock,
                                NULL,
                                proxy_backend_mirror_error_handler,
                                proxy_backend_mirror_finish_handler,
@@ -1427,8 +1428,7 @@ proxy_open_mirror_connections (struct rspamd_proxy_session *session)
                        msg->method = HTTP_GET;
                        rspamd_http_connection_write_message_shared (bk_conn->backend_conn,
                                        msg, NULL, NULL, bk_conn,
-                                       bk_conn->backend_sock,
-                                       bk_conn->io_tv, session->ctx->ev_base);
+                                       bk_conn->io_tv);
                }
                else {
                        if (session->fname) {
@@ -1455,8 +1455,7 @@ proxy_open_mirror_connections (struct rspamd_proxy_session *session)
 
                        rspamd_http_connection_write_message (bk_conn->backend_conn,
                                        msg, NULL, NULL, bk_conn,
-                                       bk_conn->backend_sock,
-                                       bk_conn->io_tv, session->ctx->ev_base);
+                                       bk_conn->io_tv);
                }
 
                g_ptr_array_add (session->mirror_conns, bk_conn);
@@ -1481,8 +1480,8 @@ proxy_client_write_error (struct rspamd_proxy_session *session, gint code,
                reply->code = code;
                reply->status = rspamd_fstring_new_init (status, strlen (status));
                rspamd_http_connection_write_message (session->client_conn,
-                               reply, NULL, NULL, session, session->client_sock,
-                               &session->ctx->io_tv, session->ctx->ev_base);
+                               reply, NULL, NULL, session,
+                               &session->ctx->io_tv);
        }
 }
 
@@ -1579,8 +1578,8 @@ proxy_backend_master_finish_handler (struct rspamd_http_connection *conn,
        }
        else {
                rspamd_http_connection_write_message (session->client_conn,
-                               msg, NULL, NULL, session, session->client_sock,
-                               bk_conn->io_tv, session->ctx->ev_base);
+                               msg, NULL, NULL, session,
+                               bk_conn->io_tv);
        }
 
        return 0;
@@ -1639,9 +1638,7 @@ rspamd_proxy_scan_self_reply (struct rspamd_task *task)
                                NULL,
                                ctype,
                                session,
-                               session->client_sock,
-                               NULL,
-                               session->ctx->ev_base);
+                               NULL);
        }
 }
 
@@ -1836,6 +1833,7 @@ retry:
 
                session->master_conn->backend_conn = rspamd_http_connection_new (
                                session->ctx->http_ctx,
+                               session->master_conn->backend_sock,
                                NULL,
                                proxy_backend_master_error_handler,
                                proxy_backend_master_finish_handler,
@@ -1869,8 +1867,7 @@ retry:
                        rspamd_http_connection_write_message_shared (
                                        session->master_conn->backend_conn,
                                        msg, NULL, NULL, session->master_conn,
-                                       session->master_conn->backend_sock,
-                                       session->master_conn->io_tv, session->ctx->ev_base);
+                                       session->master_conn->io_tv);
                }
                else {
                        if (session->fname) {
@@ -1898,8 +1895,7 @@ retry:
                        rspamd_http_connection_write_message (
                                        session->master_conn->backend_conn,
                                        msg, NULL, NULL, session->master_conn,
-                                       session->master_conn->backend_sock,
-                                       session->master_conn->io_tv, session->ctx->ev_base);
+                                       session->master_conn->io_tv);
                }
        }
 
@@ -2088,6 +2084,7 @@ proxy_accept_socket (gint fd, short what, void *arg)
        if (!ctx->milter) {
                session->client_conn = rspamd_http_connection_new (
                                ctx->http_ctx,
+                               nfd,
                                NULL,
                                proxy_client_error_handler,
                                proxy_client_finish_handler,
@@ -2104,9 +2101,7 @@ proxy_accept_socket (gint fd, short what, void *arg)
 
                rspamd_http_connection_read_message_shared (session->client_conn,
                                session,
-                               nfd,
-                               &ctx->io_tv,
-                               ctx->ev_base);
+                               &ctx->io_tv);
        }
        else {
                msg_info_session ("accepted milter connection from %s port %d",
index 8fa02b51a22e4552762481e49bf7d92f9745ac02..0e993b84c6040e2cfa7d931a24e6b8c980d4d12f 100644 (file)
@@ -331,9 +331,7 @@ rspamd_worker_error_handler (struct rspamd_http_connection *conn, GError *err)
                                NULL,
                                "application/json",
                                task,
-                               task->http_conn->fd,
-                               &task->tv,
-                               task->ev_base);
+                               &task->tv);
        }
 }
 
@@ -416,6 +414,7 @@ accept_socket (gint fd, short what, void *arg)
 
        task->http_conn = rspamd_http_connection_new (
                        ctx->http_ctx,
+                       nfd,
                        rspamd_worker_body_handler,
                        rspamd_worker_error_handler,
                        rspamd_worker_finish_handler,
@@ -436,9 +435,7 @@ accept_socket (gint fd, short what, void *arg)
 
        rspamd_http_connection_read_message (task->http_conn,
                        task,
-                       nfd,
-                       &ctx->io_tv,
-                       ctx->ev_base);
+                       &ctx->io_tv);
 }
 
 #ifdef WITH_HYPERSCAN