Commit Graph

623 Commits

Author SHA1 Message Date
André Klitzing 96ad6c02b5 Add missing status string for enum
Pick-to 6.4

Change-Id: I16ab26ed53c8444a1dc09aec79659ca758fc97e0
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-07-21 08:12:05 +02:00
Ievgenii Meshcheriakov 318c639f41 QHttpServer: Remove duplicate 'private:'
Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Ibb099d465261ca1400806297788e5fae982f90ae
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-20 13:57:16 +02:00
Qt Submodule Update Bot 346b788b5f Update dependencies on 'dev' in qt/qthttpserver
Change-Id: Id95b05a481e5952540f72b5ce37416e3c944b803
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2022-07-19 16:24:26 +00:00
Ievgenii Meshcheriakov b7b27514b8 tst_qhttpserver: Link with QtConcurrent if available
This test is using QtConcurrent::run(). This call does not seem
to require linking with the library. But this is not documented,
so let's link anyway.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I623133c478fdeda173cb9b7bcf6cd167f46526af
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-07-18 11:31:31 +02:00
Qt Submodule Update Bot ce51e0aef7 Update dependencies on 'dev' in qt/qthttpserver
Change-Id: I37a16b90e64e9f80620024f8cbbb994330a88833
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2022-07-15 15:35:05 +00:00
Ievgenii Meshcheriakov b5f8b59c70 Allow supplying non-temporary handler lambdas
Adjust one test case to use such a lambda.

Fixes: QTBUG-104481
Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I96e30fd167b8c2f8240316bff9c283efdb910541
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-07-15 11:55:52 +02:00
Ievgenii Meshcheriakov c603807ade Remove unused members and template arguments
Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I1846cd1cd8a7f0930743d91f5c3b1ec432de1920
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-07-15 11:24:02 +02:00
Fabian Kosmale 0d3a711832 Fix static_assert message
Amends 2cb57fa15f.

Pick-to: 6.4
Change-Id: I3f499b28f2881f116149a20838d01fa44d791df9
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-07-14 23:52:03 +02:00
Ievgenii Meshcheriakov e6f3295317 Declare operators for QHttpServerRequest::Methods
This allows one to combine those methods.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Ibc6007b3df721893638f45d59ce1ac1c12078343
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-14 15:26:31 +02:00
Ievgenii Meshcheriakov f222c91edf Fix a static_assert message
Replace "universal reference" with "rvalue reference". Universal references
appear only with type template parameters or `auto`.

This amends 8bba89d043.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I5087c84a37dc90f87f7613a5c467ce5011dfa51e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-14 14:36:58 +02:00
Fabian Kosmale 2cb57fa15f Do not use QMetaTypeId2
We want to know whether the type is usable with QVariant - for that we
are only interested in whether we can copy it. So check that directly.

For addConverter, there should not be a need for any precondition.

Pick-to: 6.4
Change-Id: I66dc7f4a55a25514aa4439c40260b4e80e9cfed8
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-07-14 10:40:11 +02:00
Ievgenii Meshcheriakov 34c464a161 Don't store QLatin1StringView's inside QHttpServerRouterPrivate
The converter regexps may be provided by user and come from memory
that may be freed/modified by the user later. Store QString's instead.

Adjust the setter APIs to use QAnyStringView when possible.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I6f643ecdc4af39988308fe58744bc60473649851
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-07-13 11:19:05 +02:00
Qt Submodule Update Bot 61355fd575 Update dependencies on 'dev' in qt/qthttpserver
Change-Id: Ia3ae7abdc479afce580408d3b23e6ccf0a3769ff
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2022-07-12 19:40:44 +00:00
André Klitzing 04803095e5 Use handleRequest and missingHandler for WebSockets, too
This allows to deny a websocket upgrade with e.g.
a HTTP error ServiceUnavailable instead of hard
disconnection if the application has some special
logic.

Also fire missingHandler for WebSockets for
better application integration.

Pick-to: 6.4
Change-Id: I31f4b66f9a9a7873a46d0eaba6b6121b1a9ac953
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-07-08 13:47:01 +02:00
Ievgenii Meshcheriakov 8bba89d043 Fix a static_assert message
Replace "universal reference" with "rvalue reference". Universal references
appear only with type template parameters or `auto`.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Iec9864f94f7421e7792caeeb048c5e553bd0a829
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-07 13:37:59 +02:00
Ievgenii Meshcheriakov 0cf1dedff3 QHttpServer: Make AfterRequestHandler private
Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I80ffd4731469ead8f9f6656641ffb05f55cdb7a4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-07 13:37:56 +02:00
Lucie Gérard c8392f2655 Add license headers to cmake files
CMakeLists.txt and .cmake files of significant size
(more than 2 lines according to our check in tst_license.pl)
now have the copyright and license header.

Existing copyright statements remain intact

Task-number: QTBUG-88621
Change-Id: I4463e3d03c18748e9a03320261b7f6efcdbd43f8
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-07-07 11:45:42 +02:00
Ivan Solovev 8a32c7df94 Fix memleak when upgrading to websocket
Normally the lifetime of a QTcpSocket is handled by the connections
established in the QAbstractHttpServerPrivate::handleNewConnections()
call.
However, when a QTcpSocket needs to be upgraded to web socket, its
lifetime will be managed by an instance of QWebSocketServer. When an
instance of QWebSocket is created, it wraps the underlying QTcpSocket.
On destruction, such QWebSocket calls QTcpSocket::disconnect(), which
removes all the connections that were previously established in
QAbstractHttpServerPrivate::handleNewConnections(). As a result, the
QHttpServerRequest object is leaked.

In practice, when the TCP socket is upgraded to websocket, we no longer
need to handle its lifetime in the QAbstractHttpServerPrivate, and we
also no longer need the QHttpServerRequest instance. So this patch
explicitly removes all the outdated connections and deletes the request
before upgrading the socket to websocket.

Fixes: QTBUG-104538
Pick-to: 6.4
Change-Id: I518fe50d7eba4207d50eb0eda5b570784f2a4627
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-07-06 14:54:12 +00:00
Ivan Solovev 3bbe65c81f Fix build with SSL but without websockets
QSslConfiguration is transitively included from qwebsocketserver.h,
but if we have SSL support and no websockets, the compilation breaks.

Pick-to: 6.4
Change-Id: If72107c32fdfb793163f0f699104b9592ee7d753
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-07-06 09:36:31 +02:00
Ievgenii Meshcheriakov 327f954943 Use std::unique_ptr instead of QScopedPointer for d-pointers
Add Q_DISABLE_COPY_MOVE to QHttpServerRouter to keep current behavior.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I82fff073e2d8ab1b5669513706d0a119f70d6a97
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-05 22:36:04 +02:00
Ievgenii Meshcheriakov 4627aef742 QHttpServerRequestPrivate: Don't derive from QSharedData
These data is not shared.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I57a68eeae2be7ec2afe6048ca336e6e92e2b941e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-05 22:36:00 +02:00
Ievgenii Meshcheriakov bac4b6043c QHttpServerRouter: Simplify bindCapturedImpl()
It works just fine without the if statement.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Ia314d142525902080de12bca03e634c3c7d9e1cc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-07-01 14:06:00 +02:00
Ievgenii Meshcheriakov d21a14383b Use QMetaType instead of int
Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Ib9e9bf1f6fe730c0f34998f27f6e8b63966b4d89
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-06-30 14:10:00 +02:00
Ievgenii Meshcheriakov 398aa128c2 FunctionTraitsHelper: Remove useless template specialization
The generic version works the same way as the zero arguments
specialization except for out-of-bound argument access.

Out-of-bound argument access was only used by tst_qhttpserverrouter
and is removed by this commit.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I49b8d7623ed758b34f9726a497f86333d6002242
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-06-30 11:19:54 +02:00
Ievgenii Meshcheriakov d49edbd667 QHttpServer: Combine all responseImpl() implementations
Use constexpr if instead of enable_if for some readability.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Ieef51baa78d1cbff8240f7ea8d2ed74b76bd321f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-06-30 11:19:51 +02:00
Ievgenii Meshcheriakov ee000e44fe Remove unnecessary SSL #include's
Forward-declare the used classes instead in the header and include them
in the corresponding source file.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I10a288818df6cad0b089351816f0a2d0eb9c012d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-06-30 11:19:48 +02:00
Kai Köhne f31611a765 CMake: Take preconfigured INSTALL_EXAMPLESDIR into account
Change-Id: I0fbfcde2c98a27126424c8a5d830cef1d96c134c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-06-29 14:43:56 +02:00
Kai Köhne 2c80bd221c Clean up CMakeLists.txt in examples
* Remove "# Generated from" comments
* Remove unneeded CMAKE_AUTOXXX variables
* Prefer unversioned CMake commands

Change-Id: I0671ffba98c4da781faa638bb70ae19555744619
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
2022-06-29 14:24:42 +02:00
Kai Köhne 340e2286f7 CMake: Use find_package(Qt6 REQUIRED ...)
This will make sure find_package explicitly fails if
HttpServer component is missing.

Change-Id: Ibda6059b77411cf482a747a16c97c178ea4f8563
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
2022-06-29 14:24:28 +02:00
Kai Köhne bc57df9eae Doc: Mark all classes as \since 6.4
This makes sure the classes also show up in newclasses64.html

Pick-to: 6.4
Change-Id: I99b0940bafe01e3c3a6d9c28191053e3dd078ae6
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-27 15:45:03 +02:00
Kai Köhne 412079c6dd Doc: Do not advertise generic include directive
We shouldn't advertise the include module header anymore. Instead, each
class advertises its header.

Pick-to: 6.4
Change-Id: If7a90c41a9986980f81053f86da29090e5de466e
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-27 15:45:03 +02:00
Marc Mutz c976ed9d91 QHttpServerRequest: move a file-static into the only function using it
... delaying its initialization until first use.

Before, it would happen during program startup, slowing down startup
of all application using this library.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I56dd3c5b96ad3ffd8a8adcd4f276ab9133593f9c
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-06-27 13:00:27 +02:00
Qt Submodule Update Bot 2e06a1c71b Update dependencies on 'dev' in qt/qthttpserver
Change-Id: Ied0d9391486d9360df9891b99916a9947b9ef46c
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2022-06-24 13:51:26 +00:00
André Klitzing 399ec31db0 Add Q_GADGET and Q_ENUM to StatusCode
This generates meta information and default helper for the
StatusCode like debug streams.

Pick-to: 6.4
Change-Id: I1d8c55b9aea65560af7ea7796b5a0c3b83b84276
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-24 14:22:46 +02:00
Marc Mutz 4989fa173c QHttpServerRouterRule: don't construct a std::list to qDebug() an initializer_list
We can't add a op<<(QDebug, std::initializer_list) because this module
doesn't own either of them, so when QtBase adds one to qdebug.h, we'd
run into ODR violations.

Instead, define it for a wrapper instead.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I23fe1f6b852b7a01dd7ae044da22df19cdb7f681
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 20:48:35 +00:00
Marc Mutz 33e2ff2585 QAbstractHttpServer: prefer Q_Q-declared q over q_ptr
q_ptr isn't const-propagating.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I0cca9570bf1cd49f01a69e8ccdfdc3626dcc26a2
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 22:48:26 +02:00
Marc Mutz d27afda9ad QHttpServer: use std::vector, not std::list, to store AfterRequestHandlers
There's no reason to use a doubly-linked list here, so don't.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I6e82ab9b537800dc434a3d92fe31cca43bc513c4
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-06-23 22:48:21 +02:00
Marc Mutz f266eaf71c QHttpServer: pass std::function AfterRequestHandler by value
More idiomatic, probably more efficient, too.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I156840f046083f1400c82fcdd4c63742e7ec8503
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-06-23 22:48:17 +02:00
Marc Mutz 0dc8bb2d2f QHttpServerLiterals: allocate them on the heap
QtHttpServer depends on a lot of other libraries, any one of which may
still store a QByteArray shared with these "literals" when this leaf
library gets unloaded on program shutdown. Any attempt to index into
such QByteArrays at program shutdown would then reference unloaded
data.

It's a rather theoretical bug, but there's a reason why Qt no longer
unloads any plug-ins, and this is the same scenario, so fix by
allocating the data on the heap. Even if the file-statics are
destroyed at library unload time, the data, if referenced elsewhere,
will survive.

Pick-to: 6.4
Task-number: QTBUG-45582
Change-Id: I2b6bb4f32e86c64038efd7783b5b193bc5bc362d
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 22:48:13 +02:00
Marc Mutz 6d015dea84 QHttpServerRequest: Fix GCC's -Wmaybe-uninitialized
GCC complains that `state` may contain an unenumerated value and
therefore `read` may be used uninitialized:

  qhttpserverrequest.cpp: In member function ‘bool QHttpServerRequestPrivate::parse(QAbstractSocket*)’:
  qhttpserverrequest.cpp:297:21: error: ‘read’ may be used uninitialized [-Werror=maybe-uninitialized]
    297 |     return read != -1;
        |                     ^
  qhttpserverrequest.cpp:266:15: note: ‘read’ was declared here
    266 |     qsizetype read;
        |               ^~~~

Fix by inserting a strategic Q_UNREACHABLE(). Do so without a default:
case which would break -Wswitch warning about unhandled enum values.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: If9514c676f3e927fd748781147f2c02e5ca35d4c
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 22:48:09 +02:00
Marc Mutz 10a5078472 QHttpServer: fix deprecated implicit capture of this in [=]
Just capture [this] instead.

Pick-to: 6.4
Task-number: QTBUG-100868
Task-number: QTBUG-104172
Change-Id: I1bb0819bc004c793983cc9cd9650ef8bdeb526ee
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 22:48:04 +02:00
Marc Mutz f81bc838c7 QHttpServer: simplify afterRequestHelper()
Use constexpr-if instead of overloads with enable_if. Keeps things DRY
and easier to follow.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I2e8acd6b9164e92fcabe1f91ce7529f8d4b00b98
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 22:47:59 +02:00
Marc Mutz 62f94ae60f Prefer printf-style logging over std::ostream-style
Generates less code, and we may be able to remove QDebug includes.

Some uses aren't easily ported, leave them as ostream-style.

Also prefer %ls/qUtf16Printable() over %s/qPrintable() (again: less
code).

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I812bed2ecfeb5776155ff5f95320d6accc5974d3
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-06-23 22:47:54 +02:00
Marc Mutz d645b0eff6 QHttpServer: don't translate debug output
Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I55a8c8282eb5dbc09a54d2c2a8a297c2fe987d03
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 22:47:50 +02:00
Marc Mutz 4336cdca1a Make QHttpServerLiterals a namespace
... instead of an exported class with only static members.

Also minimize header includes.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: Iab63dc30600b536030f84f435701ae2ff845d7e0
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-06-23 22:47:45 +02:00
Marc Mutz c6a25ebf8d Remove lone QHttpServerRequestPrivate::header() declaration
There was no implementation to back it.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: Ieb2b2ff65d96a6aa7d63ea34956f584446f5e262
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-06-23 22:47:41 +02:00
Marc Mutz 623c71d3de Simplify QHttpServerRequestPrivate::headerField()
First, the implementation is 1:1 identical with
QHttpHeaderParser::combinedHeaderFields(), so simply call
that. Second, the defaulted defaultValue argument isn't used, so
remove.

Since the implementation is now a trivial forwarder, inline it.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I7fe0c7f28a4686a464b0faa10cd41e45995cb5f1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-06-23 22:47:36 +02:00
Marc Mutz 6cf3091a63 Remove useless QHttpServerRequestPrivate::headerFieldNames()
It's just as thin wrapper around the QHttpHeaderParser function of the
same name, so remove the function and inline it into the only user.

Pick-to: 6.4
Task-number: QTBUG-100868
Change-Id: I0120ec9b6b1476a03eded250baad64b5ddd5df9d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2022-06-23 22:47:31 +02:00
Ievgenii Meshcheriakov 03c36a251f QAbstractHttpServer: Make constructor explicit
To avoid an implicit conversion from QObject *.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: I9081264228e52f8abac6a4469d933be3dcb5d318
Reviewed-by: Jesus Fernandez <jsfdez@gmail.com>
2022-06-23 14:35:40 +02:00
Ievgenii Meshcheriakov 442a11ae5f QHttpServerResponder: Remove unused includes
Also include qstringfwd.h for QByteArray.

Task-number: QTBUG-100868
Pick-to: 6.4
Change-Id: Ibae6314f584af418bddad6e5976e5c15e990189e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-06-23 13:03:59 +02:00