diff options
author | Mikhail Svetkin <mikhail.svetkin@gmail.com> | 2020-06-04 23:53:12 +0200 |
---|---|---|
committer | Mikhail Svetkin <mikhail.svetkin@gmail.com> | 2020-06-06 21:48:40 +0200 |
commit | 2a67efadf1f02671e74ada7fc84bea9009182bc7 (patch) | |
tree | 5b145e5e831de9d7a62810cb93394a5e5271d9af /tests | |
parent | 7e29e0dfebec0e6e60cf2af357c0c6290a048c5d (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.cpp | 20 |
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); |