curl_version_info: add CURL_VERSION_THREADSAFE_INIT

This flag can be used to make sure that curl_global_init() is
thread-safe.

This can be useful for libraries that can't control what other
dependencies are doing with Curl.

Closes #8680
This commit is contained in:
Thomas Guillem 2022-04-05 16:00:37 +02:00 committed by Daniel Stenberg
parent 23af112f55
commit 2ed1012564
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
10 changed files with 141 additions and 4 deletions

View file

@ -2607,8 +2607,10 @@ CURL_EXTERN void curl_free(void *p);
*
* curl_global_init() should be invoked exactly once for each application that
* uses libcurl and before any call of other libcurl functions.
*
* This function is not thread-safe!
* This function is thread-safe if CURL_VERSION_THREADSAFE_INIT is set in the
* curl_version_info_data.features flag (fetch by curl_version_info()).
*/
CURL_EXTERN CURLcode curl_global_init(long flags);
@ -3025,6 +3027,8 @@ typedef struct curl_version_info_data curl_version_info_data;
#define CURL_VERSION_UNICODE (1<<27) /* Unicode support on Windows */
#define CURL_VERSION_HSTS (1<<28) /* HSTS is supported */
#define CURL_VERSION_GSASL (1<<29) /* libgsasl is supported */
#define CURL_VERSION_THREADSAFE_INIT (1<<30) /* curl_global_init/cleanup() are
thread-safe */
/*
* NAME curl_version_info()