Index: net/dns/dns_socket_pool.cc |
diff --git a/net/dns/dns_socket_pool.cc b/net/dns/dns_socket_pool.cc |
index d1f32a24c3d5fecb19aee9dbad00a2fa3fd5d0eb..e29f0b10866e6824b1ee0c20f5922be096d197c7 100644 |
--- a/net/dns/dns_socket_pool.cc |
+++ b/net/dns/dns_socket_pool.cc |
@@ -11,7 +11,6 @@ |
#include "net/base/address_list.h" |
#include "net/base/ip_endpoint.h" |
#include "net/base/net_errors.h" |
-#include "net/base/rand_callback.h" |
#include "net/socket/client_socket_factory.h" |
#include "net/socket/stream_socket.h" |
#include "net/udp/datagram_client_socket.h" |
@@ -39,12 +38,13 @@ const unsigned kAllocateMinSize = 1; |
} // namespace |
-DnsSocketPool::DnsSocketPool(ClientSocketFactory* socket_factory) |
+DnsSocketPool::DnsSocketPool(ClientSocketFactory* socket_factory, |
+ const RandIntCallback& rand_int_callback) |
: socket_factory_(socket_factory), |
+ rand_int_callback_(rand_int_callback), |
net_log_(NULL), |
nameservers_(NULL), |
- initialized_(false) { |
-} |
+ initialized_(false) {} |
void DnsSocketPool::InitializeInternal( |
const std::vector<IPEndPoint>* nameservers, |
@@ -75,16 +75,16 @@ std::unique_ptr<DatagramClientSocket> DnsSocketPool::CreateConnectedSocket( |
NetLog::Source no_source; |
socket = socket_factory_->CreateDatagramClientSocket( |
- kBindType, base::Bind(&base::RandInt), net_log_, no_source); |
+ kBindType, rand_int_callback_, net_log_, no_source); |
if (socket.get()) { |
int rv = socket->Connect((*nameservers_)[server_index]); |
if (rv != OK) { |
- VLOG(1) << "Failed to connect socket: " << rv; |
+ DVLOG(1) << "Failed to connect socket: " << rv; |
socket.reset(); |
} |
} else { |
- LOG(WARNING) << "Failed to create socket."; |
+ DVLOG(1) << "Failed to create socket."; |
} |
return socket; |
@@ -92,9 +92,9 @@ std::unique_ptr<DatagramClientSocket> DnsSocketPool::CreateConnectedSocket( |
class NullDnsSocketPool : public DnsSocketPool { |
public: |
- NullDnsSocketPool(ClientSocketFactory* factory) |
- : DnsSocketPool(factory) { |
- } |
+ NullDnsSocketPool(ClientSocketFactory* factory, |
+ const RandIntCallback& rand_int_callback) |
+ : DnsSocketPool(factory, rand_int_callback) {} |
void Initialize(const std::vector<IPEndPoint>* nameservers, |
NetLog* net_log) override { |
@@ -115,15 +115,17 @@ class NullDnsSocketPool : public DnsSocketPool { |
// static |
std::unique_ptr<DnsSocketPool> DnsSocketPool::CreateNull( |
- ClientSocketFactory* factory) { |
- return std::unique_ptr<DnsSocketPool>(new NullDnsSocketPool(factory)); |
+ ClientSocketFactory* factory, |
+ const RandIntCallback& rand_int_callback) { |
+ return std::unique_ptr<DnsSocketPool>( |
+ new NullDnsSocketPool(factory, rand_int_callback)); |
} |
class DefaultDnsSocketPool : public DnsSocketPool { |
public: |
- DefaultDnsSocketPool(ClientSocketFactory* factory) |
- : DnsSocketPool(factory) { |
- }; |
+ DefaultDnsSocketPool(ClientSocketFactory* factory, |
+ const RandIntCallback& rand_int_callback) |
+ : DnsSocketPool(factory, rand_int_callback){}; |
~DefaultDnsSocketPool() override; |
@@ -148,8 +150,10 @@ class DefaultDnsSocketPool : public DnsSocketPool { |
// static |
std::unique_ptr<DnsSocketPool> DnsSocketPool::CreateDefault( |
- ClientSocketFactory* factory) { |
- return std::unique_ptr<DnsSocketPool>(new DefaultDnsSocketPool(factory)); |
+ ClientSocketFactory* factory, |
+ const RandIntCallback& rand_int_callback) { |
+ return std::unique_ptr<DnsSocketPool>( |
+ new DefaultDnsSocketPool(factory, rand_int_callback)); |
} |
void DefaultDnsSocketPool::Initialize( |
@@ -179,17 +183,17 @@ std::unique_ptr<DatagramClientSocket> DefaultDnsSocketPool::AllocateSocket( |
FillPool(server_index, kAllocateMinSize); |
if (pool.size() == 0) { |
- LOG(WARNING) << "No DNS sockets available in pool " << server_index << "!"; |
+ DVLOG(1) << "No DNS sockets available in pool " << server_index << "!"; |
return std::unique_ptr<DatagramClientSocket>(); |
} |
if (pool.size() < kAllocateMinSize) { |
- LOG(WARNING) << "Low DNS port entropy: wanted " << kAllocateMinSize |
- << " sockets to choose from, but only have " << pool.size() |
- << " in pool " << server_index << "."; |
+ DVLOG(1) << "Low DNS port entropy: wanted " << kAllocateMinSize |
+ << " sockets to choose from, but only have " << pool.size() |
+ << " in pool " << server_index << "."; |
} |
- unsigned socket_index = base::RandInt(0, pool.size() - 1); |
+ unsigned socket_index = rand_int_callback().Run(0, pool.size() - 1); |
eroman
2016/06/01 01:47:21
Rather than exposing the callback , how about expo
mmenke
2016/06/01 21:21:51
Done. Agree it's a bit nicer, though since we're
|
DatagramClientSocket* socket = pool[socket_index]; |
pool[socket_index] = pool.back(); |
pool.pop_back(); |