diff options
Diffstat (limited to 'tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp')
-rw-r--r-- | tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp | 21 |
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" |