summaryrefslogtreecommitdiffstats
path: root/src/network/socket
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-01-19 10:00:53 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-01-19 10:03:01 +0100
commit8f569c740a91b98365dcdaee2444038ce4957a76 (patch)
tree749302d8bf9023ae51873a74dc641fd005744502 /src/network/socket
parent465e93aa95d99f799300867b07f81bdd5162c9f1 (diff)
parente8ad49d6cba6521f20b1b08bf65d92fc81c158e4 (diff)
Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts: config.tests/common/atomic64/atomic64.cpp configure src/3rdparty/forkfd/forkfd.c src/corelib/io/forkfd_qt.cpp src/widgets/kernel/qwidgetwindow.cpp tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp tools/configure/configureapp.cpp Change-Id: Ic6168d82e51a0ef1862c3a63bee6722e8f138414
Diffstat (limited to 'src/network/socket')
-rw-r--r--src/network/socket/qabstractsocket.cpp3
-rw-r--r--src/network/socket/qnativesocketengine.cpp6
-rw-r--r--src/network/socket/qnativesocketengine_p.h2
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp12
4 files changed, 21 insertions, 2 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 1c77d14b29..385146bb95 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1555,7 +1555,8 @@ bool QAbstractSocketPrivate::bind(const QHostAddress &address, quint16 port, QAb
localPort = socketEngine->localPort();
emit q->stateChanged(state);
- socketEngine->setReadNotificationEnabled(true);
+ if (socketType == QAbstractSocket::UdpSocket)
+ socketEngine->setReadNotificationEnabled(true);
return true;
}
diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp
index e86d3ad76e..805acde860 100644
--- a/src/network/socket/qnativesocketengine.cpp
+++ b/src/network/socket/qnativesocketengine.cpp
@@ -293,6 +293,12 @@ void QNativeSocketEnginePrivate::setError(QAbstractSocket::SocketError error, Er
case TemporaryErrorString:
socketErrorString = QNativeSocketEngine::tr("Temporary error");
break;
+ case NetworkDroppedConnectionErrorString:
+ socketErrorString = QNativeSocketEngine::tr("Network dropped connection on reset");
+ break;
+ case ConnectionResetErrorString:
+ socketErrorString = QNativeSocketEngine::tr("Connection reset by peer");
+ break;
case UnknownSocketErrorString:
socketErrorString = QNativeSocketEngine::tr("Unknown error");
break;
diff --git a/src/network/socket/qnativesocketengine_p.h b/src/network/socket/qnativesocketengine_p.h
index 9a76e23013..10e34c485a 100644
--- a/src/network/socket/qnativesocketengine_p.h
+++ b/src/network/socket/qnativesocketengine_p.h
@@ -223,6 +223,8 @@ public:
NotSocketErrorString,
InvalidProxyTypeString,
TemporaryErrorString,
+ NetworkDroppedConnectionErrorString,
+ ConnectionResetErrorString,
UnknownSocketErrorString = -1
};
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index 9aed0caa25..ca0a8b95d5 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -1244,7 +1244,17 @@ qint64 QNativeSocketEnginePrivate::nativeReceiveDatagram(char *data, qint64 maxL
ret = qint64(bytesRead) > maxLength ? maxLength : qint64(bytesRead);
} else {
WS_ERROR_DEBUG(err);
- setError(QAbstractSocket::NetworkError, ReceiveDatagramErrorString);
+ switch (err) {
+ case WSAENETRESET:
+ setError(QAbstractSocket::NetworkError, NetworkDroppedConnectionErrorString);
+ break;
+ case WSAECONNRESET:
+ setError(QAbstractSocket::ConnectionRefusedError, ConnectionResetErrorString);
+ break;
+ default:
+ setError(QAbstractSocket::NetworkError, ReceiveDatagramErrorString);
+ break;
+ }
ret = -1;
if (header)
header->clear();