]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Fix event pending checks
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 6 Oct 2018 12:35:14 +0000 (13:35 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 6 Oct 2018 12:35:14 +0000 (13:35 +0100)
13 files changed:
src/libserver/fuzzy_backend_redis.c
src/libserver/milter.c
src/libserver/monitored.c
src/libserver/redis_pool.c
src/libserver/task.c
src/libserver/worker_util.c
src/libstat/backends/redis_backend.c
src/libstat/learn_cache/redis_cache.c
src/libutil/http.c
src/libutil/ssl_util.c
src/libutil/upstream.c
src/libutil/util.c
src/libutil/util.h

index 7bb442a27e4d926447f4be9326386931922fdd06..5081170b6a7c3b06f2a0af41bbda27b8f52d59a5 100644 (file)
@@ -126,7 +126,7 @@ rspamd_fuzzy_redis_session_dtor (struct rspamd_fuzzy_redis_session *session,
                                ac, is_fatal);
        }
 
-       if (event_get_base (&session->timeout)) {
+       if (rspamd_event_pending (&session->timeout, EV_TIMEOUT)) {
                event_del (&session->timeout);
        }
 
index 4f6d05d6a7bba53fe37b73ecc8ce929fc1975697..16d6252e97bab059bf4ccaa60bd5cadb4c04b346 100644 (file)
@@ -185,7 +185,7 @@ rspamd_milter_session_dtor (struct rspamd_milter_session *session)
                priv = session->priv;
                msg_debug_milter ("destroying milter session");
 
-               if (event_get_base (&priv->ev)) {
+               if (rspamd_event_pending (&priv->ev, EV_TIMEOUT|EV_WRITE|EV_READ)) {
                        event_del (&priv->ev);
                }
 
@@ -265,7 +265,7 @@ static inline void
 rspamd_milter_plan_io (struct rspamd_milter_session *session,
                struct rspamd_milter_private *priv, gshort what)
 {
-       if (event_get_base (&priv->ev)) {
+       if (rspamd_event_pending (&priv->ev, EV_TIMEOUT|EV_WRITE|EV_READ)) {
                event_del (&priv->ev);
        }
 
index 7928615f9796c56cce46757209f2a39aeaf1f0e3..9adcab943ad69c0e93a2cf6974b64cbef2e4d082 100644 (file)
@@ -589,7 +589,7 @@ rspamd_monitored_stop (struct rspamd_monitored *m)
 {
        g_assert (m != NULL);
 
-       if (event_get_base (&m->periodic)) {
+       if (rspamd_event_pending (&m->periodic, EV_TIMEOUT)) {
                event_del (&m->periodic);
        }
 }
@@ -606,7 +606,7 @@ rspamd_monitored_start (struct rspamd_monitored *m)
                        0.0);
        double_to_tv (jittered, &tv);
 
-       if (event_get_base (&m->periodic)) {
+       if (rspamd_event_pending (&m->periodic, EV_TIMEOUT)) {
                event_del (&m->periodic);
        }
 
@@ -626,8 +626,8 @@ rspamd_monitored_ctx_destroy (struct rspamd_monitored_ctx *ctx)
        for (i = 0; i < ctx->elts->len; i ++) {
                m = g_ptr_array_index (ctx->elts, i);
                rspamd_monitored_stop (m);
-               g_free (m->url);
                m->proc.monitored_dtor (m, m->ctx, m->proc.ud);
+               g_free (m->url);
                g_free (m);
        }
 
index 3d77aca1c0266582343902a620782b35ef70ca27..98f20ca9c0598046ff3d403e3f9e90dbd3df3c39 100644 (file)
@@ -120,7 +120,7 @@ rspamd_redis_pool_conn_dtor (struct rspamd_redis_pool_connection *conn)
        else {
                msg_debug_rpool ("inactive connection removed");
 
-               if (event_get_base (&conn->timeout)) {
+               if (rspamd_event_pending (&conn->timeout, EV_TIMEOUT)) {
                        event_del (&conn->timeout);
                }
 
index d77fc01457581aca689fb44e1f3873fd2640a914..0fde93f55b4e05cafeb32066a649b3d15425da7d 100644 (file)
@@ -296,7 +296,7 @@ rspamd_task_free (struct rspamd_task *task)
                        g_error_free (task->err);
                }
 
-               if (event_get_base (&task->timeout_ev) != NULL) {
+               if (rspamd_event_pending (&task->timeout_ev, EV_TIMEOUT)) {
                        event_del (&task->timeout_ev);
                }
 
index 64e0bae2e341712cd92dc76f34f80c6e6c1df73b..cdd98ded512761a2a3f8384bf18d718d37593c28 100644 (file)
@@ -359,11 +359,11 @@ rspamd_worker_stop_accept (struct rspamd_worker *worker)
        while (cur) {
                events = cur->data;
 
-               if (event_get_base (&events[0])) {
+               if (rspamd_event_pending (&events[0], EV_TIMEOUT|EV_READ|EV_WRITE)) {
                        event_del (&events[0]);
                }
 
-               if (event_get_base (&events[1])) {
+               if (rspamd_event_pending (&events[1], EV_TIMEOUT|EV_READ|EV_WRITE)) {
                        event_del (&events[1]);
                }
 
index 35930c923d6427dd80c7f03f5b2671bdb80e80dc..74d8c3bf16f26db83fefaba3657ee1b1c5bbc71f 100644 (file)
@@ -994,7 +994,7 @@ rspamd_redis_fin (gpointer data)
 
        rt->has_event = FALSE;
        /* Stop timeout */
-       if (event_get_base (&rt->timeout_event)) {
+       if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                event_del (&rt->timeout_event);
        }
 
@@ -1014,7 +1014,7 @@ rspamd_redis_fin_learn (gpointer data)
 
        rt->has_event = FALSE;
        /* Stop timeout */
-       if (event_get_base (&rt->timeout_event)) {
+       if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                event_del (&rt->timeout_event);
        }
 
@@ -1597,7 +1597,7 @@ rspamd_redis_process_tokens (struct rspamd_task *task,
                rspamd_session_add_event (task->s, NULL, rspamd_redis_fin, rt, rspamd_redis_stat_quark ());
                rt->has_event = TRUE;
 
-               if (event_get_base (&rt->timeout_event)) {
+               if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                        event_del (&rt->timeout_event);
                }
                event_set (&rt->timeout_event, -1, EV_TIMEOUT, rspamd_redis_timeout, rt);
@@ -1634,7 +1634,7 @@ rspamd_redis_finalize_process (struct rspamd_task *task, gpointer runtime,
        struct redis_stat_runtime *rt = REDIS_RUNTIME (runtime);
        redisAsyncContext *redis;
 
-       if (event_get_base (&rt->timeout_event)) {
+       if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                event_del (&rt->timeout_event);
        }
 
@@ -1802,7 +1802,7 @@ rspamd_redis_learn_tokens (struct rspamd_task *task, GPtrArray *tokens,
                rt->has_event = TRUE;
 
                /* Set timeout */
-               if (event_get_base (&rt->timeout_event)) {
+               if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                        event_del (&rt->timeout_event);
                }
                event_set (&rt->timeout_event, -1, EV_TIMEOUT, rspamd_redis_timeout, rt);
@@ -1827,7 +1827,7 @@ rspamd_redis_finalize_learn (struct rspamd_task *task, gpointer runtime,
        struct redis_stat_runtime *rt = REDIS_RUNTIME (runtime);
        redisAsyncContext *redis;
 
-       if (event_get_base (&rt->timeout_event)) {
+       if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                event_del (&rt->timeout_event);
        }
 
index 22de2c1bce1da80df73c814137376e7c893187e7..11bc13aae185060bba899b044ccd2cfc77f0ed04 100644 (file)
@@ -73,7 +73,7 @@ rspamd_redis_cache_fin (gpointer data)
        redisAsyncContext *redis;
 
        rt->has_event = FALSE;
-       if (event_get_base (&rt->timeout_event)) {
+       if (rspamd_event_pending (&rt->timeout_event, EV_TIMEOUT)) {
                event_del (&rt->timeout_event);
        }
 
index 2f78def4755d57e59c9d124fbc40670a4143be2e..637548dacd5eb33ece7e91a456fef40cc724db68 100644 (file)
@@ -629,7 +629,7 @@ rspamd_http_on_headers_complete (http_parser * parser)
 
        if (msg->method == HTTP_HEAD) {
                /* We don't care about the rest */
-               if (event_pending (&priv->ev, EV_READ, NULL)) {
+               if (rspamd_event_pending (&priv->ev, EV_READ)) {
                        event_del (&priv->ev);
                }
 
@@ -804,7 +804,7 @@ rspamd_http_on_headers_complete_decrypted (http_parser *parser)
 
        if (msg->method == HTTP_HEAD) {
                /* We don't care about the rest */
-               if (event_pending (&priv->ev, EV_READ, NULL)) {
+               if (rspamd_event_pending (&priv->ev, EV_READ)) {
                        event_del (&priv->ev);
                }
 
@@ -949,7 +949,7 @@ rspamd_http_on_message_complete (http_parser * parser)
        }
 
        if (ret == 0) {
-               if (event_pending (&priv->ev, EV_READ, NULL)) {
+               if (rspamd_event_pending (&priv->ev, EV_READ)) {
                        event_del (&priv->ev);
                }
 
@@ -1370,7 +1370,7 @@ rspamd_http_connection_reset (struct rspamd_http_connection *conn)
 
        if (!(priv->flags & RSPAMD_HTTP_CONN_FLAG_RESETED)) {
 
-               if (event_get_base (&priv->ev)) {
+               if (rspamd_event_pending (&priv->ev, EV_READ|EV_WRITE|EV_TIMEOUT)) {
                        event_del (&priv->ev);
                }
 
@@ -2296,7 +2296,7 @@ rspamd_http_connection_write_message_common (struct rspamd_http_connection *conn
 
        priv->flags &= ~RSPAMD_HTTP_CONN_FLAG_RESETED;
 
-       if (base != NULL && event_get_base (&priv->ev) == base) {
+       if (rspamd_event_pending (&priv->ev, EV_TIMEOUT|EV_WRITE|EV_READ)) {
                event_del (&priv->ev);
        }
 
index 09ce9b01b6947b3659b843b290953e477c4bc5f4..95245aa4cb35fac6c4f45f157472964a8f904120 100644 (file)
@@ -534,7 +534,7 @@ rspamd_ssl_connect_fd (struct rspamd_ssl_connection *conn, gint fd,
        if (ret == 1) {
                conn->state = ssl_conn_connected;
 
-               if (event_get_base (ev)) {
+               if (rspamd_event_pending (ev, EV_TIMEOUT|EV_WRITE|EV_READ)) {
                        event_del (ev);
                }
 
@@ -561,7 +561,7 @@ rspamd_ssl_connect_fd (struct rspamd_ssl_connection *conn, gint fd,
                        return FALSE;
                }
 
-               if (event_get_base (ev)) {
+               if (rspamd_event_pending (ev, EV_TIMEOUT|EV_WRITE|EV_READ)) {
                        event_del (ev);
                }
 
index 883c6f2eb3ba6873d1cb3a2f73aacba520ca8ea0..3703bdd193ff7ce4ed7dacdd4610601dd96dedef 100644 (file)
@@ -837,7 +837,7 @@ rspamd_upstream_restore_cb (gpointer elt, gpointer ls)
        /* Here the upstreams list is already locked */
        RSPAMD_UPSTREAM_LOCK (up->lock);
 
-       if (event_get_base (&up->ev)) {
+       if (rspamd_event_pending (&up->ev, EV_TIMEOUT)) {
                event_del (&up->ev);
        }
        g_ptr_array_add (ups->alive, up);
index 9b5cc6b6cf7c85c80700bcc4c82bddd2c52c31ad..b1776614448bcc65682d188a5e65f25b09998883 100644 (file)
@@ -2468,6 +2468,16 @@ event_get_base (struct event *ev)
 }
 #endif
 
+int
+rspamd_event_pending (struct event *ev, short what)
+{
+       if (ev->ev_base == NULL) {
+               return 0;
+       }
+
+       return event_pending (ev, what, NULL);
+}
+
 int
 rspamd_file_xopen (const char *fname, int oflags, guint mode,
                gboolean allow_symlink)
index 4338d55572d1c6246c46fb615400bd2d8819094e..8753884322c00da2a30e00ae9ac5b33dcd4090f5 100644 (file)
@@ -429,6 +429,9 @@ struct event_base * event_get_base (struct event *ev);
     event_set((ev), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg))
 #endif
 
+/* Avoid stupidity in libevent > 1.4 */
+int rspamd_event_pending (struct event *ev, short what);
+
 /**
  * Open file without following symlinks or special stuff
  * @param fname filename