diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-07-21 13:33:49 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-07-21 15:04:01 +0100 |
commit | d145c09388867031cff47e35bca74effd6c25fe8 (patch) | |
tree | 1a38ee94da419e2bed905b94fdeb98b170261932 /src/libserver/dns.c | |
parent | 2b2c4414ae050ac7f3cfe67aa8b20061dd5bcd5c (diff) | |
download | rspamd-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.c | 26 |
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, |