summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/socket/qtcpserver
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-11-30 17:21:51 +0000
committerQt by Nokia <qt-info@nokia.com>2011-12-01 15:58:57 +0100
commit1a52819c70306d5af7a10c0841eb0e5a625656a5 (patch)
tree27a3d2358edc08575b6b925550892d84bffe018c /tests/auto/network/socket/qtcpserver
parent0fc713b436c52b7fe6c247bea661e3f375aa0d9b (diff)
Fix QTcpServer::serverAddress() for dual stack sockets
When listening on QHostAddress::Any, serverAddress() should return QHostAddress::Any too, assuming that setting the socket options was successful. Task-number: QTBUG-22899 Change-Id: I50a9ff1b4ad0c1c1905e2952c595d7068df2627d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/network/socket/qtcpserver')
-rw-r--r--tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
index 0cdd3a7120..769544e17e 100644
--- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -116,6 +116,8 @@ private slots:
void qtbug14268_peek();
+ void serverAddress_data();
+ void serverAddress();
private:
#ifndef QT_NO_BEARERMANAGEMENT
QNetworkSession *networkSession;
@@ -789,5 +791,39 @@ void tst_QTcpServer::qtbug14268_peek()
QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a6768690a"));
}
+void tst_QTcpServer::serverAddress_data()
+{
+ QTest::addColumn<QHostAddress>("listenAddress");
+ QTest::addColumn<QHostAddress>("serverAddress");
+#ifdef Q_OS_WIN
+ if (QSysInfo::windowsVersion() < QSysInfo::WV_6_0)
+ QTest::newRow("Any") << QHostAddress(QHostAddress::Any) << QHostAddress(QHostAddress::AnyIPv4); //windows XP doesn't support dual stack sockets
+ else
+#endif
+ QTest::newRow("Any") << QHostAddress(QHostAddress::Any) << QHostAddress(QHostAddress::Any);
+ QTest::newRow("AnyIPv4") << QHostAddress(QHostAddress::AnyIPv4) << QHostAddress(QHostAddress::AnyIPv4);
+ QTest::newRow("AnyIPv6") << QHostAddress(QHostAddress::AnyIPv6) << QHostAddress(QHostAddress::AnyIPv6);
+ foreach (const QHostAddress& addr, QNetworkInterface::allAddresses()) {
+ if (addr.isInSubnet(QHostAddress::parseSubnet("fe80::/10"))
+ || addr.isInSubnet(QHostAddress::parseSubnet("169.254/16")))
+ continue; //cannot bind on link local addresses
+ QTest::newRow(qPrintable(addr.toString())) << addr << addr;
+ }
+}
+
+void tst_QTcpServer::serverAddress()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QFETCH(QHostAddress, listenAddress);
+ QFETCH(QHostAddress, serverAddress);
+ QTcpServer server;
+ if (!server.listen(listenAddress))
+ QSKIP(qPrintable(server.errorString()));
+ QCOMPARE(server.serverAddress(), serverAddress);
+}
+
QTEST_MAIN(tst_QTcpServer)
#include "tst_qtcpserver.moc"