winrt: DNS lookup: don't have duplicate entries
Change-Id: I60ee29bd692f8e385080d4532a0e3230942a2cd3 Reviewed-by: Andrew Knight <andrew.knight@digia.com>
This commit is contained in:
parent
83f06da1c6
commit
2ddc0fcd9b
@ -120,6 +120,8 @@ void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestN
|
|||||||
|
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
endpointPairs->get_Size(&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) {
|
for (unsigned int i = 0; i < size; ++i) {
|
||||||
IEndpointPair *endpointpair;
|
IEndpointPair *endpointpair;
|
||||||
endpointPairs->GetAt(i, &endpointpair);
|
endpointPairs->GetAt(i, &endpointpair);
|
||||||
@ -139,9 +141,12 @@ void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestN
|
|||||||
remoteHost->Release();
|
remoteHost->Release();
|
||||||
UINT32 length;
|
UINT32 length;
|
||||||
PCWSTR rawString = name.GetRawBuffer(&length);
|
PCWSTR rawString = name.GetRawBuffer(&length);
|
||||||
|
addresses.insert(QHostAddress(QString::fromWCharArray(rawString, length)));
|
||||||
|
}
|
||||||
|
foreach (const QHostAddress &address, addresses) {
|
||||||
QDnsHostAddressRecord record;
|
QDnsHostAddressRecord record;
|
||||||
record.d->name = aceHostname;
|
record.d->name = aceHostname;
|
||||||
record.d->value = QHostAddress(QString::fromWCharArray(rawString, length));
|
record.d->value = address;
|
||||||
reply->hostAddressRecords.append(record);
|
reply->hostAddressRecords.append(record);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user