@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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]); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); |
@@ -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) |
@@ -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 |