summaryrefslogtreecommitdiffstats
path: root/src/httpserver/qhttpserverfutureresponse.cpp
diff options
context:
space:
mode:
authorMikhail Svetkin <[email protected]>2020-06-29 19:40:00 +0200
committerMikhail Svetkin <[email protected]>2020-07-02 20:08:23 +0200
commit983e93c3b160c62e60b1755d075e959d4685d949 (patch)
tree161b81aa13610a1b57c8e156e4c9d512abe67b28 /src/httpserver/qhttpserverfutureresponse.cpp
parente49b9a111aeb50ccb3c6fc6c9c5f0bcc1781b03d (diff)
Fix linkage error in QFutureInterface<QHttpServerResponse>::takeResultHEADmaster
The error: QtPrivate::ExceptionStore::throwPossibleException already defined in QHttpServerFutureResponse. Task-number: QTBUG-85191 Change-Id: I055b2aa563cbde7d01309a01fa59d4283c9c2e36 Reviewed-by: MÃ¥rten Nordheim <[email protected]>
Diffstat (limited to 'src/httpserver/qhttpserverfutureresponse.cpp')
-rw-r--r--src/httpserver/qhttpserverfutureresponse.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/httpserver/qhttpserverfutureresponse.cpp b/src/httpserver/qhttpserverfutureresponse.cpp
index 3d2784b..2409e6a 100644
--- a/src/httpserver/qhttpserverfutureresponse.cpp
+++ b/src/httpserver/qhttpserverfutureresponse.cpp
@@ -61,6 +61,33 @@ QT_BEGIN_NAMESPACE
\endcode
*/
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+
+QHttpServerResponse QFutureInterface<QHttpServerResponse>::takeResult()
+{
+ if (isCanceled()) {
+ exceptionStore().throwPossibleException();
+ return QHttpServerResponse::StatusCode::NotFound;
+ }
+ // Note: we wait for all, this is intentional,
+ // not to mess with other unready results.
+ waitForResult(-1);
+
+#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
+ std::lock_guard<QMutex> locker{*mutex()};
+#else
+ std::lock_guard<QMutex> locker{mutex(0)};
+#endif
+ QtPrivate::ResultIteratorBase position = resultStoreBase().resultAt(0);
+ auto ret = std::move_if_noexcept(
+ *const_cast<QHttpServerResponse *>(position.pointer<QHttpServerResponse>()));
+ resultStoreBase().template clear<QHttpServerResponse>();
+
+ return ret;
+}
+
+#endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+
struct QResponseWatcher : public QFutureWatcher<QHttpServerResponse>
{
Q_OBJECT