curl/.github
Aki a2bcec0ee0
openssl: fix the data race when sharing an SSL session between threads
The SSL_Session object is mutated during connection inside openssl,
and it might not be thread-safe. Besides, according to documentation
of openssl:

```
SSL_SESSION objects keep internal link information about the session
cache list, when being inserted into one SSL_CTX object's session
cache. One SSL_SESSION object, regardless of its reference count,
must therefore only be used with one SSL_CTX object (and the SSL
objects created from this SSL_CTX object).
```
If I understand correctly, it is not safe to share it even in a
single thread.

Instead, serialize the SSL_SESSION before adding it to the cache,
and deserialize it after retrieving it from the cache, so that no
concurrent write to the same object is infeasible.

Also
 - add a ci test for thread sanitizer
 - add a test for sharing ssl sessions concurrently
 - avoid redefining memory functions when not building libcurl, but
   including the soruce in libtest
 - increase the concurrent connections limit in sws

Notice that there are fix for a global data race for openssl which
is not yet release. The fix is cherry pick for the ci test with
thread sanitizer.
d8def79838

Closes #14751
2024-09-02 23:35:44 +02:00
..
ISSUE_TEMPLATE ISSUE_TEMPLATE/docs: correct the field identifiers 2024-07-12 12:22:15 +02:00
scripts CONTRIBUTE: polished 2024-08-26 15:04:01 +02:00
workflows openssl: fix the data race when sharing an SSL session between threads 2024-09-02 23:35:44 +02:00
CODEOWNERS CI: add whitespace checker 2024-06-27 13:33:30 +02:00
CONTRIBUTING.md copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
dependabot.yml reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
FUNDING.yml copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
labeler.yml CI: consolidate workflows for source and docs check 2024-08-23 09:00:08 -07:00
lock.yml copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
stale.yml copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00