summaryrefslogtreecommitdiffstats
path: root/src/libserver/dns.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-07-21 13:33:49 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-07-21 15:04:01 +0100
commitd145c09388867031cff47e35bca74effd6c25fe8 (patch)
tree1a38ee94da419e2bed905b94fdeb98b170261932 /src/libserver/dns.c
parent2b2c4414ae050ac7f3cfe67aa8b20061dd5bcd5c (diff)
downloadrspamd-d145c09388867031cff47e35bca74effd6c25fe8.tar.gz
rspamd-d145c09388867031cff47e35bca74effd6c25fe8.zip
Add constraints to dns requests ammount per task.
Diffstat (limited to 'src/libserver/dns.c')
-rw-r--r--src/libserver/dns.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libserver/dns.c b/src/libserver/dns.c
index 6c32ae205..f86190415 100644
--- a/src/libserver/dns.c
+++ b/src/libserver/dns.c
@@ -123,6 +123,32 @@ make_dns_request (struct rspamd_dns_resolver *resolver,
return TRUE;
}
+gboolean make_dns_request_task (struct rspamd_task *task,
+ dns_callback_type cb,
+ gpointer ud,
+ enum rdns_request_type type,
+ const char *name)
+{
+ gboolean ret;
+
+ if (task->dns_requests >= task->cfg->dns_max_requests) {
+ return FALSE;
+ }
+
+ ret = make_dns_request (task->resolver, task->s, task->task_pool, cb, ud,
+ type, name);
+
+ if (ret) {
+ task->dns_requests ++;
+
+ if (task->dns_requests >= task->cfg->dns_max_requests) {
+ msg_info ("<%s> stop resolving on reaching %ud requests",
+ task->message_id, task->dns_requests);
+ }
+ }
+
+ return ret;
+}
struct rspamd_dns_resolver *
dns_resolver_init (rspamd_logger_t *logger,