From 6378de7852d0b589f2271c7e6f7d43b8f7af7aa3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 1 Aug 2011 19:53:27 +0400 Subject: Make DNS requests with unique id. --- src/dns.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/dns.c b/src/dns.c index 2f5e99e38..40aaa08d8 100644 --- a/src/dns.c +++ b/src/dns.c @@ -1150,6 +1150,7 @@ make_dns_request (struct rspamd_dns_resolver *resolver, struct in_addr addr; const gchar *name, *service, *proto; gint r; + struct dns_header *header; /* Check throttling */ if (resolver->throttling) { @@ -1233,6 +1234,12 @@ make_dns_request (struct rspamd_dns_resolver *resolver, evtimer_add (&req->timer_event, &req->tv); /* Add request to hash table */ + while (g_hash_table_lookup (resolver->requests, GUINT_TO_POINTER ((guint)req->id))) { + /* Check for unique id */ + header = (struct dns_header *)req->packet; + header->qid = dns_k_permutor_step (resolver->permutor); + req->id = header->qid; + } g_hash_table_insert (resolver->requests, GUINT_TO_POINTER ((guint)req->id), req); register_async_event (session, (event_finalizer_t)dns_fin_cb, req, FALSE); } -- cgit v1.2.3