diff options
author | Jonas M. Gastal <jgastal@profusion.mobi> | 2012-05-04 10:18:39 -0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-21 13:00:27 +0200 |
commit | 2c790b251d9e3a30abe8ac63ab50f81c9c7631ce (patch) | |
tree | ee36d0b9fb5e51673314689f0f714a1d40854978 /src/network/socket/qtcpserver.cpp | |
parent | 63ed8bf07e11a7be236494608e91150e7f084028 (diff) |
Fallback to IPv4 when IPv6 is not present.
In tests when IPv6 is not present QSKIP IPv6 tests.
Task-number: QTBUG-23660
Change-Id: I02abc7322d765a93cbf661e53c76257f03dca73e
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
Diffstat (limited to 'src/network/socket/qtcpserver.cpp')
-rw-r--r-- | src/network/socket/qtcpserver.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 9cca943189..4d8aad0dba 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -267,11 +267,12 @@ bool QTcpServer::listen(const QHostAddress &address, quint16 port) } QAbstractSocket::NetworkLayerProtocol proto = address.protocol(); + QHostAddress addr = address; #ifdef QT_NO_NETWORKPROXY static const QNetworkProxy &proxy = *(QNetworkProxy *)0; #else - QNetworkProxy proxy = d->resolveProxy(address, port); + QNetworkProxy proxy = d->resolveProxy(addr, port); #endif delete d->socketEngine; @@ -290,6 +291,9 @@ bool QTcpServer::listen(const QHostAddress &address, quint16 port) d->serverSocketErrorString = d->socketEngine->errorString(); return false; } + proto = d->socketEngine->protocol(); + if (addr.protocol() == QAbstractSocket::AnyIPProtocol && proto == QAbstractSocket::IPv4Protocol) + addr = QHostAddress::AnyIPv4; #if defined(Q_OS_UNIX) // Under Unix, we want to be able to bind to the port, even if a socket on @@ -303,7 +307,7 @@ bool QTcpServer::listen(const QHostAddress &address, quint16 port) d->socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1); #endif - if (!d->socketEngine->bind(address, port)) { + if (!d->socketEngine->bind(addr, port)) { d->serverSocketError = d->socketEngine->error(); d->serverSocketErrorString = d->socketEngine->errorString(); return false; |