-
Notifications
You must be signed in to change notification settings - Fork 671
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Resend network requests on ContentReSendError #7174
Comments
(moved to 2.6.1 since Qt 5.12.4 is not yet released) |
Since Qt does not yet transparently resend HTTP2 requests in some cases we do it manually. The test showed a problem where the initial non-200 reply would close the target temporary file and the follow-up request couldn't store any data. Removing that close() call is safe because there also is a _saveBodyToFile flag that guards writes to the target file.
Since Qt does not yet transparently resend HTTP2 requests in some cases we do it manually. The test showed a problem where the initial non-200 reply would close the target temporary file and the follow-up request couldn't store any data. Removing that close() call is safe because there also is a _saveBodyToFile flag that guards writes to the target file.
Since Qt does not yet transparently resend HTTP2 requests in some cases we do it manually. The test showed a problem where the initial non-200 reply would close the target temporary file and the follow-up request couldn't store any data. Removing that close() call is safe because there also is a _saveBodyToFile flag that guards writes to the target file.
This Qt version fixes QTBUG-73947 and along with the resend workaround for #7174 HTTP2 should work more reliably.
Since Qt does not yet transparently resend HTTP2 requests in some cases we do it manually. The test showed a problem where the initial non-200 reply would close the target temporary file and the follow-up request couldn't store any data. Removing that close() call is safe because there also is a _saveBodyToFile flag that guards writes to the target file.
Since Qt does not yet transparently resend HTTP2 requests in some cases we do it manually. The test showed a problem where the initial non-200 reply would close the target temporary file and the follow-up request couldn't store any data. Removing that close() call is safe because there also is a _saveBodyToFile flag that guards writes to the target file.
This Qt version fixes QTBUG-73947 and along with the resend workaround for #7174 HTTP2 should work more reliably.
This is extremely hard to test, to the point where I would skip it. One needs to run with 5.12.4 and have a server that's enabled for http2 and sends GOAWAY frames in the way that triggers the Qt bug that used to exist. |
Since Qt does not yet transparently resend HTTP2 requests in some cases we do it manually. The test showed a problem where the initial non-200 reply would close the target temporary file and the follow-up request couldn't store any data. Removing that close() call is safe because there also is a _saveBodyToFile flag that guards writes to the target file. (cherry picked from commit 677e44d) Cherry-picked to allow 2.5 users with new enough Qt to test the HTTP2 workaround.
@ckamm How come all the platforms are using different version of Qt? Does this need testing on lower version than 5.12.4? |
@HanaGemela I don't know the exact reason. (@dschmidt ?) This enhancement can only be tested with Qt >=5.12.4, can't test it with an earlier version. The client will also not use HTTP2 with Qt versions before that by default. Can be overridden with OWNCLOUD_HTTP2_ENABLED=1. But that's not recommended because we know there are issues. |
@ckamm does that mean that the client with Qt 5.12.4 has HTTP2 enabled by default? |
@HanaGemela Yes, a 2.6.0 client with Qt >= 5.12.4 will check whether a server supports http2 and use it if possible. If the server doesn't support it will work as before. GOAWAY: I think this nginx config triggered the issue, but only sometimes:
|
Closing as exact steps to recreate are not known. |
The Qt version is defined by the build systems not by the client source code :-) |
@ckamm Please evaluate https://codereview.qt-project.org/c/qt/qtbase/+/272754 when you have the time.. |
Now that https://codereview.qt-project.org/#/c/254111/ is merged and will apear in Qt 5.12.4 we can prepare the client by catching the error and doing a manual resend. This will allow us to re-enable HTTP2 support once that Qt is available.
The text was updated successfully, but these errors were encountered: