diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.h.mustache index f7c73187f8f..2b1c0cf75da 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.h.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.h.mustache @@ -30,7 +30,16 @@ signals: protected: virtual void process(QHttpEngine::Socket *socket, const QString &path){ Q_UNUSED(path); - emit requestReceived(socket); + + // If the slot requires all data to be received, check to see if this is + // already the case, otherwise, wait until the rest of it arrives + if (socket->bytesAvailable() >= socket->contentLength()) { + emit requestReceived(socket); + } else { + connect(socket, &Socket::readChannelFinished, [this, socket, m]() { + emit requestReceived(socket); + }); + } } }; diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.h b/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.h index 395a863b9ff..fbfe6d9e916 100644 --- a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.h +++ b/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.h @@ -40,7 +40,16 @@ signals: protected: virtual void process(QHttpEngine::Socket *socket, const QString &path){ Q_UNUSED(path); - emit requestReceived(socket); + + // If the slot requires all data to be received, check to see if this is + // already the case, otherwise, wait until the rest of it arrives + if (socket->bytesAvailable() >= socket->contentLength()) { + emit requestReceived(socket); + } else { + connect(socket, &Socket::readChannelFinished, [this, socket, m]() { + emit requestReceived(socket); + }); + } } };