diff options
author | Jonas M. Gastal <jgastal@gmail.com> | 2012-06-11 22:27:03 -0300 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-09-26 04:03:51 +0200 |
commit | 4920090da0fc937d171065694d5274221d2747c9 (patch) | |
tree | 8959b519b3ebcf772fee2db640c0b2b4818a6e85 /tests | |
parent | aa9728450cc515c66545323646c66d826a1af50a (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')
-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" |