From: Vsevolod Stakhov Date: Mon, 1 Aug 2011 15:53:27 +0000 (+0400) Subject: Make DNS requests with unique id. X-Git-Tag: 0.4.2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6378de7852d0b589f2271c7e6f7d43b8f7af7aa3;p=thirdparty%2Frspamd.git Make DNS requests with unique id. --- diff --git a/src/dns.c b/src/dns.c index 2f5e99e388..40aaa08d8e 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); }