mirror of
https://github.com/curl/curl.git
synced 2025-03-07 15:27:17 +08:00
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
176 lines
4.3 KiB
Plaintext
176 lines
4.3 KiB
Plaintext
<testcase>
|
|
<info>
|
|
<keywords>
|
|
HTTPS
|
|
</keywords>
|
|
</info>
|
|
|
|
# Server-side
|
|
<reply>
|
|
<data>
|
|
HTTP/1.1 200 OK
|
|
Date: Tue, 09 Nov 2010 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Content-Type: text/html
|
|
Content-Length: 29
|
|
|
|
run 1: foobar and so on fun!
|
|
</data>
|
|
<datacheck>
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
run 1: foobar and so on fun!
|
|
</datacheck>
|
|
</reply>
|
|
|
|
# Client-side
|
|
<client>
|
|
<features>
|
|
SSL
|
|
OpenSSL
|
|
</features>
|
|
<server>
|
|
https
|
|
</server>
|
|
<name>
|
|
concurrent HTTPS GET using shared ssl session cache
|
|
</name>
|
|
<tool>
|
|
lib%TESTNUMBER
|
|
</tool>
|
|
# provide URL and ca-cert
|
|
<command>
|
|
https://localhost:%HTTPSPORT/%TESTNUMBER %SRCDIR/certs/EdelCurlRoot-ca.crt
|
|
</command>
|
|
</client>
|
|
|
|
# Verify data after the test has been "shot"
|
|
<verify>
|
|
</verify>
|
|
</testcase>
|