summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-08-11 15:43:42 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-08-11 15:43:42 +0200
commit4bf5c4dc5d90f8d34b2161b9ad507df37ec5998a (patch)
treed6522389184cb249fabd2b30210a5086a20a8197
parentd4ea401966a90044b4d00e3d94eee84adb9fab43 (diff)
downloadcurl-bagder/shared-conncache-threaded.tar.gz
KNOWN_BUGS: A shared connection cache is not thread-safebagder/shared-conncache-threaded
Closes #4915
-rw-r--r--docs/KNOWN_BUGS9
-rw-r--r--docs/libcurl/curl_share_setopt.38
2 files changed, 13 insertions, 4 deletions
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 267a977dd..583995cac 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -102,6 +102,7 @@ problems may have been fixed or changed somewhat since this was written!
11.8 DoH leaks memory after followlocation
11.9 DoH doesn't inherit all transfer options
11.10 Blocking socket operations in non-blocking API
+ 11.11 A shared connection cache is not thread-safe
12. LDAP and OpenLDAP
12.1 OpenLDAP hangs after returning results
@@ -744,6 +745,14 @@ problems may have been fixed or changed somewhat since this was written!
The list of blocking socket operations is in TODO section "More non-blocking".
+11.11 A shared connection cache is not thread-safe
+
+ The share interface offers CURL_LOCK_DATA_CONNECT to have multiple easy
+ handle share a connection cache, but due to how connections are used they are
+ still not thread-safe when used shared.
+
+ See https://github.com/curl/curl/issues/4915
+
12. LDAP and OpenLDAP
12.1 OpenLDAP hangs after returning results
diff --git a/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index 0291d93c2..7a3e2388c 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.3
@@ -74,10 +74,10 @@ by default. Note this symbol was added in 7.10.3 but was not implemented until
7.23.0.
.IP CURL_LOCK_DATA_CONNECT
Put the connection cache in the share object and make all easy handles using
-this share object share the connection cache. Using this, you can for example
-do multi-threaded libcurl use with one handle in each thread, and yet have a
-shared pool of unused connections and this way get way better connection
-re-use than if you use one separate pool in each thread.
+this share object share the connection cache.
+
+Note that due to a known bug, it is not safe to share connections this way
+between multiple concurrent threads.
Connections that are used for HTTP/1.1 Pipelining or HTTP/2 multiplexing only
get additional transfers added to them if the existing connection is held by