summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/socket
diff options
context:
space:
mode:
authorJonas M. Gastal <jgastal@gmail.com>2012-06-11 22:27:03 -0300
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-26 04:03:51 +0200
commit4920090da0fc937d171065694d5274221d2747c9 (patch)
tree8959b519b3ebcf772fee2db640c0b2b4818a6e85 /tests/auto/network/socket
parentaa9728450cc515c66545323646c66d826a1af50a (diff)
If accept fails, stop accepting new connections and emit error signal.
Task-number: QTBUG-24778 Change-Id: I6c5b685b3f861a0fafc1475c41bb35cede17d712 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/network/socket')
-rw-r--r--tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
index 66c6c97786..18401fb40d 100644
--- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -121,6 +121,8 @@ private slots:
void linkLocal();
+ void eagainBlockingAccept();
+
private:
#ifndef QT_NO_BEARERMANAGEMENT
QNetworkSession *networkSession;
@@ -953,5 +955,24 @@ void tst_QTcpServer::linkLocal()
qDeleteAll(servers);
}
+void tst_QTcpServer::eagainBlockingAccept()
+{
+ QTcpServer server;
+ server.listen(QHostAddress::LocalHost, 7896);
+
+ // Receiving a new connection causes TemporaryError, but shouldn't pause accepting.
+ QTcpSocket s;
+ s.connectToHost(QHostAddress::LocalHost, 7896);
+ QSignalSpy spy(&server, SIGNAL(newConnection()));
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 500);
+ s.close();
+
+ // To test try again, should connect just fine.
+ s.connectToHost(QHostAddress::LocalHost, 7896);
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 2, 500);
+ s.close();
+ server.close();
+}
+
QTEST_MAIN(tst_QTcpServer)
#include "tst_qtcpserver.moc"