Skip to content

Commit

Permalink
Linty goodness
Browse files Browse the repository at this point in the history
  • Loading branch information
oskirby committed Mar 11, 2025
1 parent 9b4dd1a commit 414ef70
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 19 deletions.
21 changes: 9 additions & 12 deletions extension/socks5proxy/bin/windowsbypass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,14 +256,14 @@ void WindowsBypass::interfaceChanged(quint64 luid) {
}

void WindowsBypass::updateNameserver() {
// Update the preferred DNS server.
// A list of DNS servers and their interface metrics.
struct keyed {
QHostAddress addr;
ulong metric;
};
QList<keyed> dnsNameservers;
QList<keyed> nameservers;

// Fetch the DNS resolvers too.
// Fetch the DNS resolvers.
QByteArray gaaBuffer(4096, 0);
ULONG gaaBufferSize = gaaBuffer.size();
auto adapterAddrs = reinterpret_cast<PIP_ADAPTER_ADDRESSES>(gaaBuffer.data());
Expand All @@ -280,32 +280,29 @@ void WindowsBypass::updateNameserver() {
if (!m_interfaceData.contains(i->Luid.Value)) {
continue;
}
if (i->FirstDnsServerAddress == nullptr) {
continue;
}

for (auto dns = i->FirstDnsServerAddress; dns != nullptr; dns = dns->Next) {
struct sockaddr* sa = dns->Address.lpSockaddr;
QHostAddress addr{sa};
if (sa->sa_family == AF_INET) {
dnsNameservers.append({addr, m_interfaceData[i->Luid.Value].ipv4metric});
nameservers.append({addr, m_interfaceData[i->Luid.Value].ipv4metric});
} else {
if (addr.isLinkLocal()) {
addr.setScopeId(QString::number(i->Ipv6IfIndex));
}
dnsNameservers.append({addr, m_interfaceData[i->Luid.Value].ipv6metric});
nameservers.append({addr, m_interfaceData[i->Luid.Value].ipv6metric});
}
qDebug() << "Adding" << addr.toString() << "as DNS server for "
<< i->Luid.Value;
}
}

// Sort the nameservers by it's metric smallest first
std::sort(dnsNameservers.begin(), dnsNameservers.end(),
std::sort(nameservers.begin(), nameservers.end(),
[](auto a, auto b) { return a.metric < b.metric; });
QList<QHostAddress> selectedNameServers(dnsNameservers.length());
for (const auto& sortedDNSServer : qAsConst(dnsNameservers)) {
selectedNameServers.append(sortedDNSServer.addr);
QList<QHostAddress> selectedNameServers(nameservers.length());
for (const auto& ns : qAsConst(nameservers)) {
selectedNameServers.append(ns.addr);
}

DNSResolver::instance()->setNameserver(selectedNameServers);
Expand Down
12 changes: 6 additions & 6 deletions extension/socks5proxy/src/dnsresolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@ void DNSResolver::resolveAsync(const QString& hostname, QObject* parent) {
m_requests.insert(parent, hostname);
m_requestLock.unlock();

auto callback =
[](void *arg, int status, int timeouts, struct ares_addrinfo *results) {
QObject* ctx = static_cast<QObject*>(arg);
auto instance = DNSResolver::instance();
instance->addressInfoCallback(ctx, status, timeouts, results);
};
auto callback = [](void* arg, int status, int timeouts,
struct ares_addrinfo* results) {
QObject* ctx = static_cast<QObject*>(arg);
auto instance = DNSResolver::instance();
instance->addressInfoCallback(ctx, status, timeouts, results);
};

auto name = hostname.toStdString();
struct ares_addrinfo_hints hints;
Expand Down
2 changes: 1 addition & 1 deletion extension/socks5proxy/src/dnsresolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class DNSResolver : public QObject {
struct ares_addrinfo* result);
void shutdownAres();

QHash<QObject*,QString> m_requests;
QHash<QObject*, QString> m_requests;
QMutex m_requestLock;

ares_channeldata* mChannel = nullptr;
Expand Down

0 comments on commit 414ef70

Please sign in to comment.