From: Amos Jeffries Date: Sun, 8 Feb 2015 06:07:18 +0000 (-0800) Subject: Update DNS engine to C++11 random X-Git-Tag: merge-candidate-3-v1~109^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=011b1672debd2f719bb987837fa87aece2d07119;p=thirdparty%2Fsquid.git Update DNS engine to C++11 random --- diff --git a/src/dns_internal.cc b/src/dns_internal.cc index 44b4932126..a3305e8a89 100644 --- a/src/dns_internal.cc +++ b/src/dns_internal.cc @@ -40,6 +40,7 @@ #include #endif #include +#include #if HAVE_RESOLV_H #include #endif @@ -1058,11 +1059,14 @@ idnsFindQuery(unsigned short id) } static unsigned short -idnsQueryID(void) +idnsQueryID() { - unsigned short id = squid_random() & 0xFFFF; + // NP: apparently ranlux are faster, but not quite as "proven" + static std::mt19937 mt(static_cast(getCurrentTime() & 0xFFFFFFFF)); + unsigned short id = mt() & 0xFFFF; unsigned short first_id = id; + // ensure temporal uniqueness by looking for an existing use while (idnsFindQuery(id)) { ++id;