QHostAddress: Fix incorrect comparison against 'Any'
When 'this' is IPv6 and 'other' is Any then there is no point in testing 'other's IPv6 address. Added extra tests against QHostAddress::Any*. Fixes: QTBUG-108103 Change-Id: I09f32b1b147b1ec8380546c91cd89684a6bebe2e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 4d3f5ac0cc731a1120154f707bceb57eb4ddabe2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
70a4ff8d35
commit
43f9f953bc
@ -818,7 +818,7 @@ bool QHostAddress::isEqual(const QHostAddress &other, ConversionMode mode) const
|
||||
return memcmp(&d->a6, &other.d->a6, sizeof(Q_IPV6ADDR)) == 0;
|
||||
case QHostAddress::AnyIPProtocol:
|
||||
return (mode & QHostAddress::ConvertUnspecifiedAddress)
|
||||
&& (other.d->a6_64.c[0] == 0) && (other.d->a6_64.c[1] == 0);
|
||||
&& (d->a6_64.c[0] == 0) && (d->a6_64.c[1] == 0);
|
||||
case QHostAddress::UnknownNetworkLayerProtocol:
|
||||
return false;
|
||||
}
|
||||
|
@ -326,6 +326,12 @@ void tst_QHostAddress::isEqual_data()
|
||||
QTest::newRow("anyv6-anyv4-local") << QHostAddress(QHostAddress::AnyIPv6) << QHostAddress(QHostAddress::AnyIPv4) << (int)QHostAddress::ConvertLocalHost << false;
|
||||
QTest::newRow("any-anyv4-local") << QHostAddress(QHostAddress::Any) << QHostAddress(QHostAddress::AnyIPv4) << (int)QHostAddress::ConvertLocalHost << false;
|
||||
QTest::newRow("any-anyv6-local") << QHostAddress(QHostAddress::Any) << QHostAddress(QHostAddress::AnyIPv6) << (int)QHostAddress::ConvertLocalHost << false;
|
||||
QTest::newRow("localhostv6-any-tolerant") << QHostAddress(QHostAddress::LocalHostIPv6) << QHostAddress(QHostAddress::Any) << (int)QHostAddress::TolerantConversion << false;
|
||||
QTest::newRow("localhostv4-any-tolerant") << QHostAddress(QHostAddress::LocalHost) << QHostAddress(QHostAddress::Any) << (int)QHostAddress::TolerantConversion << false;
|
||||
QTest::newRow("localhostv6-anyv6-tolerant") << QHostAddress(QHostAddress::LocalHostIPv6) << QHostAddress(QHostAddress::AnyIPv6) << (int)QHostAddress::TolerantConversion << false;
|
||||
QTest::newRow("localhostv4-anyv6-tolerant") << QHostAddress(QHostAddress::LocalHost) << QHostAddress(QHostAddress::AnyIPv6) << (int)QHostAddress::TolerantConversion << false;
|
||||
QTest::newRow("localhostv6-anyv4-tolerant") << QHostAddress(QHostAddress::LocalHostIPv6) << QHostAddress(QHostAddress::AnyIPv4) << (int)QHostAddress::TolerantConversion << false;
|
||||
QTest::newRow("localhostv4-anyv4-tolerant") << QHostAddress(QHostAddress::LocalHost) << QHostAddress(QHostAddress::AnyIPv4) << (int)QHostAddress::TolerantConversion << false;
|
||||
}
|
||||
|
||||
void tst_QHostAddress::isEqual()
|
||||
|
@ -628,7 +628,7 @@ void tst_QUdpSocket::dualStack()
|
||||
QCOMPARE(dgram.senderAddress(), makeNonAny(v4Sock.localAddress(), QHostAddress::Null));
|
||||
if (dgram.destinationPort() != -1) {
|
||||
QCOMPARE(dgram.destinationPort(), int(dualSock.localPort()));
|
||||
QVERIFY(dgram.destinationAddress().isEqual(dualSock.localAddress()));
|
||||
QVERIFY(dgram.destinationAddress().isEqual(makeNonAny(dualSock.localAddress(), QHostAddress::LocalHost)));
|
||||
} else {
|
||||
qInfo("Getting IPv4 destination address failed.");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user