}
}
+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)
*/
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
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);