Http requests are very slow

Hi,

A while i posted https://answers.unrealengine.com/questions/320627/varest-http-get-slow.html

The issue is the following. When making http requests using WinInet everything goes smooth, as soon as we switch to CURL the requests take ages to complete or time-out. Manual calls to our client via any other way result in fast queries (even using the curl command line on linux is fast)
What could be the issue here?

The following makes my http requests very fast, opposed to the default, which is curl.

[Networking]
 UseLibCurl=False

This solution is not good enough for us, since we also want to release on linux and there Curl is the only option at the moment, so we really have to fix it. Any ideas what the cause could be? Serverside, UE4 side?

In addition to this i figured out something interesting. It seems you are still using version 7.41.0 of CURL, while the installation scripts in Engine\Source\ThirdParty\libcurl\BUILD.EPIC.sh seems to indicate it should be 7.48.0. I tried running the script myself, but it seems not to work properly anymore failing at includes etc.

Top content of BUILD.EPIC.sh:

ZLIB_VERSION=v1.2.8
SSL_VERSION=OpenSSL_1_0_1s
CURL_VERSION=curl-7_48_0
WS_VERSION=v1.7.4

Please let me know whats up with this latest find as well.

Upvote! Would Love to hear an answer.

Hey cageman and ERuts,

Thank you for the report. The issue has already been logged. You can follow its progress through the development staff here:

https://issues.unrealengine.com/issue/UE-33732

Atm it is impossible to build for Linux now since Linux requires cURL. Do you have a workaround? We were just to launch on Steam…

Hey ERuts,

This sounds like a different issue. There shouldn’t be anything blocking Linux from making builds.

Feel free to make another Answer Hub post under Packaging / Installation and we can look into the issue for you.

Hi there Kyle,

I AM able to build for Linux, but i am required to turn of cURL. If cURL is turned of it does not work on Linux. (yes i am able to start the game, but connection is very slow.) So yes it is the same issue and it is not about packaging.

I looked around and there is no current internal work around for this issue. Keep an eye on the issue report and feel free to upvote it, which will let the developers know that this issue is important to the community.

We identified the problem with the Curl implementation in Unreal Engine source.

Whenever performing a GET request, the message payload will not get uploaded. The timeout happens after the server waits for the data to be received (since the Content-Length header is getting sent), and never sends back a response.

The problem is resolved by

  1. using POST or PUT to upload data and not a GET verb.

In particular, the VARest plugin can be patched to never sent the default JSON object when performing non-POST and non-PUT requests. I.e. conditionally executing HttpRequest->SetContentAsString(OutputString); only for the working verbs.

We have confirmed that this solution works on Windows.

Kind regards,

Hans

Technical Director HyperReuts Europe

I encountered a similar issue where http requests were really slow. The problem was that the thread tick rate was way too slow, limiting my download speed to ~1MB/s.

To fix, I updated my Engine.ini:

[HTTP]
HttpThreadActiveFrameTimeInSeconds = 0.0001