diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2016-11-09 18:40:43 +0200 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2017-09-27 08:37:57 +0000 |
commit | f03cd9a7bcbf88eefb8e77b99b4c194da759c7ff (patch) | |
tree | 170e3bc746eeba7a715b1f51790f0a95000c6972 | |
parent | 3c59065d5cb5f82f90ed2e830e10c5807deeaf2c (diff) |
QAbstractSocket: fix handling of successful connectToHostByName()
In case connectToHostByName() returns 'true', we should fetch the
connection parameters and emit connected() signal.
Change-Id: Id36b6d71005b8cec070a1b12e7bb0caf8bf0bcb9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 92c18fb0f1..0f13b1d1b8 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -962,13 +962,17 @@ void QAbstractSocketPrivate::startConnectingByName(const QString &host) emit q->stateChanged(state); if (cachedSocketDescriptor != -1 || initSocketLayer(QAbstractSocket::UnknownNetworkLayerProtocol)) { - if (socketEngine->connectToHostByName(host, port) || - socketEngine->state() == QAbstractSocket::ConnectingState) { - cachedSocketDescriptor = socketEngine->socketDescriptor(); - + // Try to connect to the host. If it succeeds immediately + // (e.g. QSocks5SocketEngine in UDPASSOCIATE mode), emit + // connected() and return. + if (socketEngine->connectToHostByName(host, port)) { + fetchConnectionParameters(); return; } + if (socketEngine->state() == QAbstractSocket::ConnectingState) + return; + // failed to connect setError(socketEngine->error(), socketEngine->errorString()); } |