Commit Graph

1504 Commits

Author SHA1 Message Date
Dennis Oberst 84b552086d Remove unnecessary QObject:: namespace to improve readability
Removed redundant 'QObject::' namespace to streamline code and enhance
readability, especially in lambda handlers.

Due to our formatting, all lambda handlers will be unnecessarily aligned
to the very right side. Given that connections and lambda handlers are
very common in this codebase this improves the readability of those
lambda handlers.

Change-Id: I178a838c7702382b4b3845c729d7c11eeeb1c8d1
Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io>
(cherry picked from commit eb703a45a1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 2720a3e74d)
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 7a3ebbc1f9)
2025-08-07 10:57:56 +00:00
Dennis Oberst e56545b318 QGrpcHttp2Channel: add more debug logging
Easily allows to have a deeper inspection of the system by adding more
debug prints, which can be enabled with the logging category.

Change-Id: I86d7f6c0c53c412a79a3d66f515fa1cd6757a023
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 7e06d79d6d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit f48600b44b)
(cherry picked from commit b214760208)
2025-08-07 10:57:54 +00:00
Dennis Oberst a462c05372 QGrpcHttp2Channel: use logging categories and printf style logging
Given the complexity of the http2channel implementation it comes natural
to extend its logging clarity. This aligns with best practices in Qt
development. Also this makes it easier to debug the system remotely.

Change-Id: Idf00020408b678fc6b17a25db538abd5a838bced
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit f1200375f0)
(cherry picked from commit abb6a173de)
(cherry picked from commit 5bf8f9ace3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-08-07 10:57:51 +00:00
Dennis Oberst 21d0e52cf5 Http2Handler: improve readability for dataReceived handler
1. Remove nesting by reversing the state check.
2. Split the messageReceived calculation to be outside of the function
   call. Given that this is an important calculation it should be easily
   understandable.

Change-Id: Icfaa29a5dc92eb5b1c86469639a3deb90b5aacd0
Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io>
(cherry picked from commit 4504e44869)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 954c3bd94d)
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 11efb10198)
2025-08-07 10:57:48 +00:00
Dennis Oberst 3d4ebe5a56 QGrpcHttp2Channel: unify socket error handler
De-duplicate the logic for the error handlers.

Change-Id: I1f8745046ba996ba81eb1bf2f5c3882b6c31059b
Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io>
(cherry picked from commit 4cf1dd3093)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 6c4c494395)
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit a33e3191d9)
2025-08-07 10:57:46 +00:00
Dennis Oberst 234d4bddb5 Http2Handler: Re-order ctor args and rename m_operation
Re-order the argument to the Http2Handler ctor. The parent should come
first. Furthermore rename the m_operation to m_context as I think
context is a more fitting name for this important member.

This improves the readability and makes it easier to follow the code.

Change-Id: I396e205ec345d80a8cf2cfebe43625f72d39ac6e
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 1ac37b787a)
(cherry picked from commit a3c497adf3)
(cherry picked from commit 9a08967617)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-08-07 10:57:42 +00:00
Dennis Oberst 223dffbcfd Emit cancelled finished() in channel implementation
Currently, the QGrpcOperation was finishing itself so that the channel
implementation should only cancel the corresponding RPC. This is the
only place such self-finishing is used.

Let the channel implementation rather take care of the cancellation
logic and emit the finished signal. The actual handler implementation is
responsible for itself, i.e. finished meaning it's done and no
communication will happen through this stream.

Simplify the logic for timeouts and requested cancellations.

Update the deadline testcase to not check for specific messages but
rather for non-empty messages.

Changes will only be relevant for custom channel implementation.

[ChangeLog][QGrpcOperationContext][Important Behavior Changes]
Cancellation logic should also emit finished now. Custom
QAbstractGrpcChannel implementations should adapt their logic.

Change-Id: Ic4e70b50afe46b5a883f099a6cf245ea9a0e66c1
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 814c0b6ac2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit c1b7403996)
(cherry picked from commit bc7de6f42f)
2025-08-07 10:57:39 +00:00
Dennis Oberst c8bb0abb42 QGrpcHttp2Channel: Improve the lifetime management of Http2Handler
Our lifetime management was extremely flawed, as there were many points
where Http2Handler instances were not properly deleted, resulting in
inactive zombie handlers that would never be cleaned up.

In a running event loop, there should be no active or pending handlers
left at the time of channel destruction. If we had previously asserted
this condition:

QGrpcHttp2ChannelPrivate::~QGrpcHttp2ChannelPrivate()
{
    Q_ASSERT(children().isEmpty());
}

and then ran our tests, many cases would reveal that we were effectively
leaking memory due to inproper lifetime management on our side.
This is fixed by applying the following:

When the finished signal is emitted, the corresponding Http2Handler
should be deleted. It no longer makes sense to keep it alive beyond that
point, as this aligns with our documented lifetime for client-side RPC
handlers.

Transform the operation context into a QPointer to not steady convert
into shared_ptr's. Connect to the destroyed signal to keep track when
the user-side handler gets deleted.

We definitely don't want to take part in sharing the ownership (and
therefore lifetime) of the operationContext. Pass down a pointer very
early on so that no mistakes happen in the future (as to take a copy of
the shared_ptr in a lambda).

This is streamlined by introducing the finish and asyncFinish functions.

Task-number: QTBUG-128338
Fixes: QTBUG-129160
Change-Id: I8e17f7832659fb348e7d05aeabe164b16b6ff283
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 3fea4be230)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit d381fcfef2)
(cherry picked from commit 0a8ad4fc23)
2025-08-07 10:57:36 +00:00
Dennis Oberst 740e5981eb QGrpcHttp2Channel: Remove unneeded check when creating stream
The `m_connection` check was not needed as there are two places where
this is called:
 - inside createHttp2Connection() -> connection gets created, 100% valid
 - inside processOperation(), where we need the m_connection check
   anyways.

Remove the check + error and replace it with an assert.

Change-Id: Ib1d8a16db65cadfecb242f54a27ab70bb08a78fd
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 5e969e8646)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit fa07b01070)
(cherry picked from commit bcade980cc)
2025-08-07 10:57:31 +00:00
Dennis Oberst 3eff22f4fb QGrpcHttp2Channel: Fix missing handling of failed operations
createHttp2Stream is calling finished asynchronously. It must report the
outcome back immediately though, as processOperation() depends on it.

Change-Id: Ic01fea69dba491c8f119eb3a28523878a8e214d7
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit e48296e650)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 9ce9ab229c)
(cherry picked from commit 032ae28866)
2025-08-07 10:57:28 +00:00
Dennis Oberst e57e3b5b6e QGrpcHttp2Channel: Fix memory leak for cancelled Http2Handler
The QGrpcOperation::cancel() logic is already emitting
QGrpcOperation::finished() for us but the previous cancellation logic
was not deleting the cancelled handler.

Fix this by deleting unconditionally. This is fine for cancelled
handlers. Furthermore transform the cancel() function to return void.
Cancellation should be used unconditionally.

Task-number: QTBUG-129160
Change-Id: Ifad7230a7592dc5d7691379031356afe1f8f8dc3
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit e232a4ee5e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 0a8559c3f6)
(cherry picked from commit 9524471516)
2025-08-07 10:57:25 +00:00
Dennis Oberst 01ad63f495 QGrpcHttp2Channel: validate received headers using protocol rules
The QHttp2Stream implementation doesn't provide any handling or
verification of the HTTP/2 spec. The gRPC over HTTP/2 protocol clearly
defines how Response-Headers, Trailers and Trailers-Only have to behave.

Currently we are missing crucial steps of validation, like:
 - HTTP status to be 200
 - Trailers contain gRPC status
 - Valid gRPC content-type found

Ref: https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#responses

Create the handleHeaders() function to correctly handle the protocol.
Correctly differentiate between Initial, Trailers and TrailersOnly now.

Fixes: QTBUG-138494
Change-Id: I0d2aba0f123a408b43dc4eb0f2a045898b41bc96
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 9de5085814)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 3a2caf9ece)
(cherry picked from commit f48fb557ca)
2025-08-07 10:57:22 +00:00
Dennis Oberst 5e8aec53f1 QGrpcHttp2Channel: Fix deadline timeout start location
We should start the deadline-timer when the actual call is beginning and
this is indicated when the initial headers have been sent and not the
stream that has been attached. As a drive-by mark the timer as
single-shot.

Change-Id: I1eb58d143e4934a3c0770cd3ff24ed47972a5289
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit cdc6938bbf)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 2f2649fa20)
(cherry picked from commit 90209b70ba)
2025-08-07 10:57:19 +00:00
Dennis Oberst e715509ceb QGrpcHttp2Channel: fix double-free when deleting pending handlers
The deletion was invalid and could result in a double free. If
createHttp2Connection() encountered expired handlers, it deleted them
but did not remove them from the container. Later, when
settingsFrameReceived() iterated over the same container, it would
encounter the already-deleted handler again.

Harden our handler management by relying on QObject parent <> child
relationship instead of additionally tracking the children by our own.
The handler (child) was already doing that. The channel didn't actually
need any active or pending containers. It's enough to handle the
processing through QObject::children().

We have to add the Q_OBJECT macro now to fully support parent <> child
relationship.

Change-Id: Iee81e98e826f6019fdf525b167faa33944ebadb2
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit 8d58b8ba6a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit c0b3a93937)
(cherry picked from commit 21becf8b31)
2025-08-07 10:57:16 +00:00
Dennis Oberst c5d528bef3 Http2Handler: improve state handling
Since the Http2Handler is largely self-managed, having a clear and
accurate state representation is crucial.

Previously, some key states were missing—particularly those relevant to
the header phase. This made it harder to ensure correct behavior and
state transitions.

This change introduces the 'Idle' and 'RequestHeadersSent' states to
better reflect the handler’s lifecycle. With this we can enforce more
robust validation and ensure the handler behaves as expected.

Furthermore we change the onDone() handling logic (to only allow it to
be called once) to use a bool. Using state management for this is
impractical. It's not a real state of our Http2Handler. It's leaking out
the internal stream state.

Change-Id: I30b5c935c4fe3aaafb66ed91e25562afca2f8804
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 76b8c2626a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 3f5d1aa65c)
(cherry picked from commit 3e8b231008)
2025-08-07 10:57:14 +00:00
Dennis Oberst ea3b793ae4 Http2Handler: construct initial headers in initialization list
This patch follows C++ best practices. Refactor the
'prepareInitialRequest' function to directly return the constructed
headers so that we can use them in the initializer list.

Ref: https://isocpp.org/wiki/faq/ctors#init-lists

Change-Id: I095d9ecc3574b8ad1ed344d16701102d2c79df92
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 46bce56bfb)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit c2232f75b4)
(cherry picked from commit e577763fb4)
2025-08-07 10:57:11 +00:00
Dennis Oberst 7585325842 Http2Handler: provide channel() and channelPriv() accessors
For consistency. No null checking is needed as the channel will always
destroy all children before destroying itself.

Change-Id: I4638cd906dc6c66d2559048bd147216518655110
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit f8196f8050)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit b5e89d251e)
(cherry picked from commit 3002f4ce82)
2025-08-07 10:57:08 +00:00
Dennis Oberst 417bc0fd22 QtGrpcSslClientTest: verify that incorrectSSL status is not okay
Extends the testcase. The call should fail here with a non-OK status
code.

Change-Id: I4b8f833f2cb147d9b301004c51dc2a3388876fb6
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit ef9ff0cd55)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit a3c69b53fb)
(cherry picked from commit a71b2691c9)
2025-08-07 10:57:06 +00:00
Dennis Oberst ae905d5df9 QtGrpcClientUnaryCallTest: improve test logic for metadata()
Extend the testcase to cover both, initial and trailing metadata. This
also shows the current problems with having a QHash metadata and also
the missing separation between initial and trailing metadata.

Change-Id: I880846ae06e8db338cdb3629dafdff430cab3edb
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 542efe69ec)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 8dc879a824)
(cherry picked from commit a6fef73f28)
2025-08-07 10:57:02 +00:00
Qt Submodule Update Bot e589950c3a Update dependencies on '6.9' in qt/qtgrpc
Change-Id: Ie4d53626341c74ffc96eac3c3ac2a4da1c9b1326
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-08-04 08:31:50 +00:00
Qt Submodule Update Bot fd52301598 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: Ie2d2ff5491e094641caf1a82c71666e06e3acf77
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-08-01 08:06:07 +00:00
Alexey Edelev af534732cb Move CmdLineGeneratedDir declaration out of SKIP_COMMAND_LINE_TESTS
The variable is used unconditionally.

Amends c91d02c007

Pick-to: 6.8
Change-Id: I36910a7b40f16a5a13bf2839a2e6c27aec5e7b26
Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
(cherry picked from commit 740c809f94)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit bb1c65de03)
2025-07-30 17:44:58 +00:00
Qt Submodule Update Bot 6b178fb57d Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I1cfdd8ca6a28eac3673170a9e555444a871364d9
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-07-30 16:48:17 +00:00
Qt Submodule Update Bot c24d1fc5e5 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: Idf042c59a8209ac4bcbb5d69b9fdbeaa959878ee
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-07-24 09:25:57 +00:00
Qt Submodule Update Bot f8433009cc Update dependencies on '6.9' in qt/qtgrpc
Change-Id: Id396436764d3c429625ddc7e1d7ba1505b166c1f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-07-22 19:02:54 +00:00
Qt Submodule Update Bot 3db1fe504f Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I29547bf41a0dff75259e90877162f726c18931a7
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-07-14 09:41:23 +00:00
Alexey Edelev ff47bc7cce UnTP the CMake protobuf API
Remove the technical preview markers from CMake API. Leftovers
from TP phase.

Pick-to: 6.8
Change-Id: Ic1c363638f2848467845f41e3f20b97c5ed9bfb4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit cbab241c75)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit a4321cb012)
2025-07-10 23:39:47 +00:00
Alexey Edelev 16832f927c Use common::iterateMessageFields in MessageDeclarationPrinter::printProperties
Deduplicate code.

Pick-to: 6.8
Change-Id: Ieb50b0e41787fb3988f85ca83024069d161c872a
Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
(cherry picked from commit 342694b2d3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 17d2bef72b)
2025-07-09 18:54:35 +00:00
Qt Submodule Update Bot 0a80e114d2 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I12a4c9d83003adfcea428b0a6514f69290790855
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-07-08 09:22:40 +00:00
Marc Mutz 226f603467 Include what you need: qquaternion.h
qmatrix4x4.h will lose its qquaternion.h include, so include
qquaternion.h explicitly in all files that mention 'QQuaternion',
unless, for a foo.cpp, the own foo.h has already included it.

Amends 6637773cbd.

Pick-to: 6.8
Change-Id: I114f58d1d443164eb419dab98623d06044419a81
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 944aa03dea)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 487f87c78c)
2025-07-04 18:03:29 +00:00
Alexei Cazacov f2a834fd08 Docs: Fix weird duplications in documentation tree
This commit removes the latest example entry from the TOC, because it
somehow breaks the tree generation. The example entry is not needed
here, because the examples are added to the TOC automatically.

Fixes: QTBUG-138180
Change-Id: I7d0491684af8c651cafb988acfac311f148a71b6
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
(cherry picked from commit 837145416f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 1280f84db4)
2025-07-03 21:36:20 +00:00
Dennis Oberst d731e4c729 chat example: various enhancements
This patch includes:
  - Show available server ports dynamically. Qt built without SSL
    support should not show the https port.
  - Add an early note about the prerequisites for running the example so
    that users are guided from early on.
  - Use std::cout in combination with std::endl to flush the buffer.
    QtCreator doesn't print when simply using "\n".

Pick-to: 6.8
Change-Id: I4eb7f6fbc1474508af2a88a3313cf94325a63657
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit e81b5d59ad)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 9bbd8d17fc)
2025-07-03 21:36:20 +00:00
Alexey Edelev 6a61290666 Make the well-known type scheme lookup explicit in installed Qt
Instead of storing the build-time path to the well-known types
protobuf includes, calculate them when configuring user projects.

New approach expects that all well-known type schemas that the
ProtobufWellKnownTypes module used at build time are present when
configuring user projects. The include paths then calculated and
stored in the QT_PROTOBUF_INCLUDES property of the
ProtobufWellKnownTypes module.

The property usage remains unchanged.

Pick-to: 6.8
Fixes: QTBUG-130113
Change-Id: I31a607404f85f2a325c63e0f28d2ab2a0f4ea25f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit a445cf4344)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-07-03 15:01:58 +00:00
Alexey Edelev dba14186de Make the types list of qt_internal_add_protobuf_wellknown_types named
Add the TYPES argument to the qt_internal_add_protobuf_wellknown_types
command instead of using ARGN. It's safer and more scalable approach.

Pick-to: 6.8
Change-Id: I75ac5df740b614433b74e8b70729211f49e0a308
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
(cherry picked from commit 5494d64908)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-07-03 15:01:56 +00:00
Alexey Edelev fb51542934 Allow specifying extra protobuf include directories for protobuf modules
Iterate the _<Module>_proto_external_include_dir variable in
<Module>ProtobufProperties.cmake and add the existing paths to
the QT_PROTO_INCLUDES property. This allow specifying extra paths
in <Module>Config.cmake.

If the respecive paths are not found or are not absolute, the
respective warning is raised.
Setting QT_NO_WARN_PROTOBUF_BROKEN_INCLUDES to ON suppresses the
warning.

Pick-to: 6.8
Change-Id: I4b6971e84f35b2986d187fb5d1766ed0cf3390f5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 18bb2ba5e1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-07-03 15:01:53 +00:00
Dennis Oberst 3a08d37e26 QGrpcHttp2Channel: use owning sendDATA interface in processQueue
Go up the chain and use the highest abstraction of the sendDATA
interfaces. Previously, we've been hit by internal QObject::deleteLater
calls for destroying the device in QtNetwork, which slowed down the
sending process. This has been fixed upstream, and all sendDATA
calls, except the QNCBD overload, now destroy the device immediately.

Reference: 4bc878ff4fbacd39d4c0ed1e8e742fd18fa74fed.

This version is now superior, as we don't have to create a new
connection just to destroy the device.

Pick-to: 6.8
Change-Id: I9416de25169fbaaa1657db7120987754699e4c00
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit 7bac7883b7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 0da4fadb73)
2025-07-01 21:17:32 +00:00
Qt Submodule Update Bot 9a06b11c2b Update dependencies on '6.9' in qt/qtgrpc
Change-Id: If048548af41fa3092f1b3e3e121adc2efb1dfef6
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-07-01 10:08:17 +00:00
Qt Submodule Update Bot ca06fdda0b Update dependencies on '6.9' in qt/qtgrpc
Change-Id: Ic399ee77c885a47fff1385387b42ef3cbce131dc
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-06-27 11:40:14 +00:00
Qt Submodule Update Bot 059be7933b Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I8742924503baa9820739a114024b6299560b5ab8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-06-25 11:25:12 +00:00
Cristian Le 3fe7945a82 Use `_qt_internal_set_source_file_generated`
Migrate implementations that set `GENERATED` source property

Task-number: QTBUG-125077
Change-Id: Idb0b7e5fe5efe9996ba3a8a097f3da746b131bac
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 8974c1c558)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit e6b08e7856)
2025-06-24 20:19:22 +00:00
Qt Submodule Update Bot 714d1c7e02 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I7e427137a862daae2dfe32b2f209a36f2e934934
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-06-17 10:34:59 +00:00
Alexey Edelev 5d2f693738 Avoid storing absolute paths to protobuf module includes
Sanitize proto includes to ensure the generated
<Module>ProtobufProperties.cmake is fully relocatable.

Drive-by, ensure that includes do not contain duplicates.

Task-number: QTBUG-130113
Pick-to: 6.8
Change-Id: I64f56d497d412705f174a027f711b90ad7614abf
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit b8b8dd9fe2)
2025-06-17 09:18:12 +00:00
Alexey Edelev 3af1e8b9a4 Fix the qmlRealtivePath calculation
The prefix was wrongly added to the parent directory but not to the
actual file name.

Amends d4e8ef8942

Fixes: QTBUG-137313
Pick-to: 6.8
Change-Id: I1e907e7be26048174899855efc6a9ed661a1e4d0
Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io>
(cherry picked from commit 9e4b2ec356)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 0505c39ba5)
2025-06-12 20:45:01 +00:00
Alexandru Croitor 1bc8ff9ee1 CMake: Add PURL and CPE info to 3rd party attribution files
[ChangeLog][Third-Party Code] Added PURL and CPE information to the
attribution files of 3rd party sources.

Pick-to: 6.8 6.5
Fixes: QTBUG-137264
Task-number: QTBUG-129602
Change-Id: Ied50c009c8208ab576e5432586c99cb0e8ba84b4
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit bd86e2f91b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 331c681fe0)
2025-06-04 20:38:12 +00:00
Qt Submodule Update Bot 5977808891 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I2527c2cb5ef559e1031ffb8073a5a4f3056e7d14
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-05-27 10:54:34 +00:00
Qt Submodule Update Bot b6426ab167 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I81d5378433b776491a6b4ead2ec4c84f4d14746b
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-05-19 17:43:31 +00:00
Dennis Oberst 9800927e90 Fix and improve benchmarks
The existing benchmarks were not optimal: bidirectional streaming wasn’t
fully asynchronous, limiting channel performance. Introduce a
`BenchmarkData` type to collect detailed metrics and print richer
results at the end. Also add latency measurements for unary READ and
WRITE operations.

As a drive-by add cxx20 checks in cmake.

Pick-to: 6.8
Change-Id: I56d61e4712b7fe9e5b8b52a14f84b0583094e373
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit bfb44df850)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-05-16 14:33:28 +00:00
Qt Submodule Update Bot 1a3151af70 Update dependencies on '6.9' in qt/qtgrpc
Change-Id: Ifa9232ada5904f51001fef7fe092c143c1d2a844
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-05-15 13:22:32 +00:00
Jani Heikkinen 672ef5812c Bump version to 6.9.2
Change-Id: I804192d153d74d4fb40c00430fe9757286b617b7
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-05-13 13:56:27 +01:00
Qt Submodule Update Bot 9f62d503cc Update dependencies on '6.9' in qt/qtgrpc
Change-Id: I7701fa61e6b3705d33b6f531bea4a608ca037fb8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2025-05-13 12:56:26 +00:00