From 4920090da0fc937d171065694d5274221d2747c9 Mon Sep 17 00:00:00 2001 From: "Jonas M. Gastal" Date: Mon, 11 Jun 2012 22:27:03 -0300 Subject: If accept fails, stop accepting new connections and emit error signal. Task-number: QTBUG-24778 Change-Id: I6c5b685b3f861a0fafc1475c41bb35cede17d712 Reviewed-by: Thiago Macieira --- .../network/socket/qtcpserver/tst_qtcpserver.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests/auto/network') 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" -- cgit v1.2.3