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... |