[BUG] [Server: C++] [Qt5] Incomplete Read JSON
Created by: natanlaverde
Bug Report Checklist
-
Have you provided a full/minimal spec to reproduce the issue? -
Have you validated the input using an OpenAPI validator? -
What's the version of OpenAPI Generator used? -
Have you search for related issues/PRs? -
What's the actual output vs expected output?
Description
If the HTTP(S) request spans to several TCP segments, the method process
in class ApiRequestHandler
will emit the signal requestReceived
immediately after be called.
This signal is received by ApiRouter
that calls ApiRequest
requested method, that will try to read the Json content by calling QHttpEngine::Socket::readJson
.
At this moment, the content received by the socket could not be complete yet, causing an QJsonParseError
and returning a 400 Bad Request
to the request peer.
openapi-generator version
5.0.0-SNAPSHOT (master).
OpenAPI declaration file content or url
N/A.
Command line used for generation
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate
-i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml
-g cpp-qt5-qhttpengine-server
-o /tmp/server/petstore/cpp-qt5-qhttpengine-server
Steps to reproduce
The problem was intermittent, but if will try with a sufficiently huge request this bug will probably occor.
Related issues/PRs
N/A.
Suggest a fix
We could use the same approach of the parent class QHttpEngine::QObjectHandler::process
.
Compare the number of Bytes Available with the Content Length before emit the signal requestReceived
.