Our curl-based streams make use of the easy curl interface. This interface automatically initializes and de-initializes the global curl state by calling out to `curl_global_init` and `curl_global_cleanup`. Thus, all global state will be repeatedly re-initialized when creating multiple curl streams in succession. Despite being inefficient, this is not thread-safe due to `curl_global_init` being not thread-safe itself. Thus a multi-threaded programing handling multiple curl streams at the same time is inherently racy. Fix the issue by globally initializing and cleaning up curl's state.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
curl.c | Loading commit data... | |
curl.h | Loading commit data... | |
openssl.c | Loading commit data... | |
openssl.h | Loading commit data... | |
socket.c | Loading commit data... | |
socket.h | Loading commit data... | |
stransport.c | Loading commit data... | |
stransport.h | Loading commit data... | |
tls.c | Loading commit data... | |
tls.h | Loading commit data... |