summaryrefslogtreecommitdiffstats
path: root/src/network/kernel/qdnslookup_winrt.cpp
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@digia.com>2014-05-07 09:24:04 +0200
committerOliver Wolff <oliver.wolff@digia.com>2014-07-01 12:59:06 +0200
commit2ddc0fcd9bfde1a72846af43967cfd1796156078 (patch)
tree69ef91ad1bc37bab4a65fe1643c0101fc982e954 /src/network/kernel/qdnslookup_winrt.cpp
parent83f06da1c6bffff61af78cbe75a0691d53742b53 (diff)
winrt: DNS lookup: don't have duplicate entries
Change-Id: I60ee29bd692f8e385080d4532a0e3230942a2cd3 Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Diffstat (limited to 'src/network/kernel/qdnslookup_winrt.cpp')
-rw-r--r--src/network/kernel/qdnslookup_winrt.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/network/kernel/qdnslookup_winrt.cpp b/src/network/kernel/qdnslookup_winrt.cpp
index 08f3167a29..e2a5ba2f37 100644
--- a/src/network/kernel/qdnslookup_winrt.cpp
+++ b/src/network/kernel/qdnslookup_winrt.cpp
@@ -120,6 +120,8 @@ void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestN
unsigned int size;
endpointPairs->get_Size(&size);
+ // endpoint pairs might contain duplicates so we temporarily store addresses in a QSet
+ QSet<QHostAddress> addresses;
for (unsigned int i = 0; i < size; ++i) {
IEndpointPair *endpointpair;
endpointPairs->GetAt(i, &endpointpair);
@@ -139,9 +141,12 @@ void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestN
remoteHost->Release();
UINT32 length;
PCWSTR rawString = name.GetRawBuffer(&length);
+ addresses.insert(QHostAddress(QString::fromWCharArray(rawString, length)));
+ }
+ foreach (const QHostAddress &address, addresses) {
QDnsHostAddressRecord record;
record.d->name = aceHostname;
- record.d->value = QHostAddress(QString::fromWCharArray(rawString, length));
+ record.d->value = address;
reply->hostAddressRecords.append(record);
}
}