]> source.dussan.org Git - rspamd.git/commitdiff
Add routine to add events for a specific watcher structure
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 29 Nov 2015 22:39:23 +0000 (22:39 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 29 Nov 2015 22:39:23 +0000 (22:39 +0000)
src/libserver/events.c
src/libserver/events.h
src/plugins/surbl.c

index b996f1559a46bfbb4fbab32ecba3de5b7f41cd9b..d94149584c0c52d1e9ad96ed8635946c8ce1897a 100644 (file)
@@ -319,6 +319,17 @@ rspamd_session_watcher_push (struct rspamd_async_session *s)
        }
 }
 
+void
+rspamd_session_watcher_push_specific (struct rspamd_async_session *s,
+               struct rspamd_async_watcher *w)
+{
+       g_assert (s != NULL);
+
+       if (w) {
+               w->remain ++;
+       }
+}
+
 void
 rspamd_session_watcher_pop (struct rspamd_async_session *s,
                struct rspamd_async_watcher *w)
index eb5614af3487428469c269134af380c81863ceaf..0126293973d7a04dc3ba15901fd9f38217598a36 100644 (file)
@@ -114,6 +114,12 @@ guint rspamd_session_watch_stop (struct rspamd_async_session *s);
  */
 void rspamd_session_watcher_push (struct rspamd_async_session *s);
 
+/**
+ * Increase refcount for a specific watcher
+ */
+void rspamd_session_watcher_push_specific (struct rspamd_async_session *s,
+               struct rspamd_async_watcher *w);
+
 /**
  * Remove a fake event from a watcher
  * @param s
index fc7ff6989d0fdec14fc68829ec5cdfe0a90c6e9d..3ee036ed96ef4cb53ebc1c111c0d70146e247a95 100644 (file)
@@ -1051,8 +1051,7 @@ surbl_dns_ip_callback (struct rdns_reply *reply, gpointer arg)
                                if (make_dns_request_task (task,
                                                surbl_dns_callback,
                                                param, RDNS_REQUEST_A, to_resolve->str)) {
-                                       param->w = rspamd_session_get_watcher (task->s);
-                                       rspamd_session_watcher_push (task->s);
+                                       rspamd_session_watcher_push_specific (task->s, param->w);
                                }
 
                                g_string_free (to_resolve, TRUE);