summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp')
-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"