summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMikhail Svetkin <mikhail.svetkin@gmail.com>2020-06-04 23:53:12 +0200
committerMikhail Svetkin <mikhail.svetkin@gmail.com>2020-06-06 21:48:40 +0200
commit2a67efadf1f02671e74ada7fc84bea9009182bc7 (patch)
tree5b145e5e831de9d7a62810cb93394a5e5271d9af /tests
parent7e29e0dfebec0e6e60cf2af357c0c6290a048c5d (diff)
Don't destory socket and request objects while handling a request
Task-number: QTBUG-84617 Change-Id: Ibf98fb329c817ae39f66e539cdb30a4194cb3b42 Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qhttpserver/tst_qhttpserver.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/qhttpserver/tst_qhttpserver.cpp b/tests/auto/qhttpserver/tst_qhttpserver.cpp
index a5feaf9..c7176ff 100644
--- a/tests/auto/qhttpserver/tst_qhttpserver.cpp
+++ b/tests/auto/qhttpserver/tst_qhttpserver.cpp
@@ -46,6 +46,7 @@
#include <QtCore/qjsonobject.h>
#include <QtCore/qjsonvalue.h>
#include <QtCore/qjsonarray.h>
+#include <QtCore/qtimer.h>
#include <QtNetwork/qnetworkaccessmanager.h>
#include <QtNetwork/qnetworkreply.h>
@@ -130,6 +131,7 @@ private slots:
void invalidRouterArguments();
void checkRouteLambdaCapture();
void afterRequest();
+ void disconnectedInEventLoop();
private:
void checkReply(QNetworkReply *reply, const QString &response);
@@ -915,6 +917,24 @@ void tst_QHttpServer::checkReply(QNetworkReply *reply, const QString &response)
reply->deleteLater();
};
+void tst_QHttpServer::disconnectedInEventLoop()
+{
+ httpserver.route("/event-loop/", [] () {
+ QEventLoop loop;
+ QTimer::singleShot(1000, &loop, &QEventLoop::quit);
+ loop.exec();
+ return QHttpServerResponse::StatusCode::Ok;
+ });
+
+ const QUrl requestUrl(urlBase.arg("/event-loop/"));
+ auto reply = networkAccessManager.get(QNetworkRequest(requestUrl));
+ QTimer::singleShot(500, reply, &QNetworkReply::abort); // cancel connection
+ QEventLoop loop;
+ connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
+ loop.exec();
+ reply->deleteLater();
+}
+
QT_END_NAMESPACE
Q_DECLARE_METATYPE(CustomArg);