• Home
  • Raw
  • Download

Lines Matching +full:openssl +full:- +full:c +full:- +full:ares

1 ---
2 c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
3 SPDX-License-Identifier: curl
4 Title: libcurl-thread
7 See-also:
8 - libcurl-security (3)
10 - All
11 Added-in: n/a
12 ---
16 libcurl-thread - libcurl thread safety
18 # Multi-threading with libcurl
36 Note that some items are specifically documented as not thread-safe in the
41 All current TLS libraries libcurl supports are thread-safe.
43 ## OpenSSL section in TLS
45 OpenSSL 1.1.0+ can be safely used in multi-threaded applications provided that
46 support for the underlying OS threading API is built-in. For older versions of
47 OpenSSL, the user must set mutex callbacks.
49 libcurl may not be able to fully clean up after multi-threaded OpenSSL
50 depending on how OpenSSL was built and loaded as a library. It is possible in
52 OpenSSL thread cleanup.
54 For example, on Windows if both libcurl and OpenSSL are linked statically to a
55 DLL or application then OpenSSL may leak memory unless the DLL or application
56 calls OPENSSL_thread_stop() before each thread terminates. If OpenSSL is built
58 libcurl is built as a DLL and OpenSSL is linked statically to it then libcurl
61 Please review the OpenSSL documentation for a full list of circumstances:
62 https://docs.openssl.org/3.0/man3/OPENSSL_init_crypto/#notes
66 Signals are used for timing out name resolves (during DNS lookup) - when built
67 without using either the c-ares or threaded resolver backends. On systems that
72 cannot be honored during DNS lookups - which you can work around by building
73 libcurl with c-ares or threaded-resolver support. c-ares is a library that
75 function properly multi-threaded unless the CURLOPT_NOSIGNAL(3) option
79 with the risk of a SIGPIPE (that at least the OpenSSL backend can
98 These functions are thread-safe since libcurl 7.84.0 if
102 If these functions are not thread-safe and you are using libcurl with multiple
106 fail-safe initialization that takes place the first time
107 curl_easy_init(3) is called. For an in-depth explanation refer to
116 # Non-safe functions
118 CURLOPT_DNS_USE_GLOBAL_CACHE(3) is not thread-safe.
120 curl_version_info(3) is not thread-safe before libcurl initialization.