diff options
author | Shane Kearns <ext-shane.2.kearns@nokia.com> | 2012-03-15 17:58:22 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-22 18:59:45 +0100 |
commit | cae5299f48d950ab924e8b78452d25535bd8b811 (patch) | |
tree | bba1f53b34cbd2b1ffbb8ef9368b7a1f2ed6f9aa /src/network/socket/qudpsocket.cpp | |
parent | fa8e18c3860d8c43795152da1d4c38dc1471f320 (diff) |
Allow autobound UDP sockets to send to IPv4 and IPv6
When writeDatagram is called without first binding the UDP socket,
then bind it as QHostAddress::Any.
This allows the same socket to be used to sent to both IPv4 and
IPv6 destination addresses.
Allowing the OS to autobind the socket inside sendTo() may
result in a single protocol socket.
Task-number: QTBUG-5275
Change-Id: I2b76507e8a8a38369c6eafb61ce4191d1d6cc930
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
Diffstat (limited to 'src/network/socket/qudpsocket.cpp')
-rw-r--r-- | src/network/socket/qudpsocket.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp index a31b16e97d..ec751c289e 100644 --- a/src/network/socket/qudpsocket.cpp +++ b/src/network/socket/qudpsocket.cpp @@ -332,8 +332,10 @@ qint64 QUdpSocket::writeDatagram(const char *data, qint64 size, const QHostAddre qDebug("QUdpSocket::writeDatagram(%p, %llu, \"%s\", %i)", data, size, address.toString().toLatin1().constData(), port); #endif - if (!d->ensureInitialized(address)) + if (!d->doEnsureInitialized(QHostAddress::Any, 0, address)) return -1; + if (state() == UnconnectedState) + bind(); qint64 sent = d->socketEngine->writeDatagram(data, size, address, port); d->cachedSocketDescriptor = d->socketEngine->socketDescriptor(); |