Moved the code to HttpManager to get rid of the duplicated code.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger, Rafa.Lecina
[CL 32128159 by lorry li in ue5-main branch]
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger
#tests Passed WebTests on Windows
[CL 32118356 by lorry li in ue5-main branch]
Use FTSTicker in http manager instead to manage game thread tasks.
#jira UE-163631
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Rafa.Lecina
#tests Passed all tests in WebTests project
[CL 32052075 by lorry li in ue5-main branch]
Only output log if request had completed when activity timeout, it can continue to run even if that happened.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina
#rb Rafa.Lecina
[CL 31948912 by lorry li in ue5-main branch]
Format the indents in IHttpRequest.h.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Michael.Kirzinger, Rafa.Lecina
[CL 31943658 by lorry li in ue5-main branch]
Reason:
When FHttpManager::Tick get called from different threads, it might get same request in CompletedThreadedRequests through the http thread, because Thread->GetCompletedRequests is not thread safe. In the end it will crash due to access destroyed CompletedRequest.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger
[CL 31885410 by lorry li in ue5-main branch]
Make the test case "Test platform request requests limits" covers the cancelling using CompleteOnHttpThread as delegate thread policy.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina [at]stephen.ma
#rb Rafa.Lecina
#tests Passed the WebTests.
[CL 31879765 by lorry li in ue5-main branch]
Reason: When FHttpRequestCommon::CancelRequest get called, it will set bCanceled as true and abort request which will in the end call FinishRequest. But in http thread it will also check IsThreadedRequestComplete to see if the request is complete and call FinishRequest, in that function we shouldn't check bCanceled or bTimedOut, because request has already been aborted when those flags changed.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina [at]jens.petersam
#jira UE-206965
#rb Michael.Kirzinger, Rafa.Lecina
#tests Reproduced and fixed with a test case
[CL 31858760 by lorry li in ue5-main branch]
Also fixed a wrong unconditional cast in case of non http response
#jira UE-207067
[REVIEW] [at]lorry.li [at]michael.kirzinger [at]michael.atchison
#rb lorry.li, michael.atchison
#changelist validated
#virtualized
[CL 31844753 by rafa lecina in ue5-main branch]
Use cvar for the new flow just in case the headers needs to be read when complete for some urls
#jira UE-203938
[REVIEW] [at]Lorry.Li [at]Michael.Kirzinger [at]Michael.Atchison
#rb lorry.li, michael.atchison, Sam.Zamani
[CL 31843775 by rafa lecina in ue5-main branch]
Deperecate the FGenericPlatformHttp::UsesThreadedHttp interface and remove corresponding impls, now all platforms are using threaded http requests;
Re-enable retry system off-game thread support.
Reason:
When accessing requests lock and trigger complete callback in http manager Tick from main thread, the complete callback could have been bound to retry manager which will try to access retry manager lock, while retry manager lock can be holding by FHttpRetrySystem::FManager::RetryHttpRequestWithDelay, which triggered by timer callback from http thread and is trying to access http manager's requests lock in order to add the retry request to http manager.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina
#rb michael.atchison
[CL 31821069 by lorry li in ue5-main branch]
Add test cases to test that after canceling/shut down request, the response body receive delegate won't ever been called.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jens.petersam
#jira UE-207423, FORT-706402
#rb michael.atchison, Rafa.Lecina
[CL 31820574 by lorry li in ue5-main branch]
Get rid of platform specific code in WebTests, define macros in Http.Build.cs instead.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#jira UE-207067, UE-207061
#rb Rafa.Lecina
[CL 31777105 by lorry li in ue5-main branch]
- Retry period changed from linear to exponential;
- Adds random jitter multiplication to computed backoff.
Final default retry lockout period formula looks like this:
RandRange(JitterMin, JitterMax) * Pow(Base, RetryNumber + 1 + Bias) where RetryNumber is 0, 1, 2, 3...
Defaults:
JitterMin = 0.5
JitterMax = 1.0
Base = 2.0
Bias = 1.0
[REVIEW] [at]david.parton [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Rafa.Lecina
[CL 31776593 by lorry li in ue5-main branch]
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina [at]evgenii.babinets
#rb michael.atchison
[CL 31700324 by lorry li in ue5-main branch]
Fix the test case the response in request is not cleared on some platforms when retrying.
#jira UE-202804
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Rafa.Lecina
[CL 31518978 by lorry li in ue5-main branch]