Refactor DnsTlsTransport
This change does not alter any functionality.
This refactor does change the locking design. There is now
one lock for the dispatcher and one for each transport.
Test: Integration tests pass
Bug: 63447621
Change-Id: Ief9d4c4ed76bc66b85fce888b0b09b8d38940aa4
diff --git a/server/ResolverController.cpp b/server/ResolverController.cpp
index 51928d2..5488d96 100644
--- a/server/ResolverController.cpp
+++ b/server/ResolverController.cpp
@@ -48,6 +48,7 @@
#include "ResolverController.h"
#include "ResolverStats.h"
#include "dns/DnsTlsTransport.h"
+#include "dns/DnsTlsServer.h"
namespace android {
namespace net {
@@ -85,12 +86,12 @@
// Structure for tracking the validation status of servers on a specific netId.
// Using the AddressComparator ensures at most one entry per IP address.
-typedef std::map<DnsTlsTransport::Server, ResolverController::Validation,
+typedef std::map<DnsTlsServer, ResolverController::Validation,
AddressComparator> PrivateDnsTracker;
std::mutex privateDnsLock;
std::map<unsigned, PrivateDnsTracker> privateDnsTransports GUARDED_BY(privateDnsLock);
-void checkPrivateDnsProvider(const DnsTlsTransport::Server& server,
+void checkPrivateDnsProvider(const DnsTlsServer& server,
PrivateDnsTracker& tracker, unsigned netId) REQUIRES(privateDnsLock) {
if (DBG) {
ALOGD("checkPrivateDnsProvider(%s, %u)", addrToString(&(server.ss)).c_str(), netId);
@@ -154,13 +155,13 @@
netId, servers.size(), name.c_str(), fingerprints.size());
}
// Parse the list of servers that has been passed in
- std::set<DnsTlsTransport::Server> set;
+ std::set<DnsTlsServer> set;
for (size_t i = 0; i < servers.size(); ++i) {
sockaddr_storage parsed;
if (!parseServer(servers[i].c_str(), 853, &parsed)) {
return -EINVAL;
}
- DnsTlsTransport::Server server(parsed);
+ DnsTlsServer server(parsed);
server.name = name;
server.fingerprints = fingerprints;
set.insert(server);
@@ -220,7 +221,7 @@
ResolverController::Validation ResolverController::getTlsStatus(unsigned netId,
const sockaddr_storage& insecureServer,
- DnsTlsTransport::Server* secureServer) {
+ DnsTlsServer* secureServer) {
// This mutex is on the critical path of every DNS lookup that doesn't hit a local cache.
// If the overhead of mutex acquisition proves too high, we could reduce it by maintaining
// an atomic_int32_t counter of validated connections, and returning early if it's zero.