Hi,

First, thanks for the excellent product and documentation.  This is
mostly a question about whether I am reading the documentation
correctly:

https://curl.haxx.se/libcurl/c/curl_share_setopt.html

says:

> data defines what data libcurl wants to lock, and you must make sure that 
> only one lock
> is given at any time for each kind of data.

That requirement is met by giving the *same* lock to different kinds
of data. Did I interpret the doc correctly, or should I use a
different lock for each kind of data (just the same lock for the same
CURLSH* and data kind, and one would expect).

I cannot find any further documentation, except this from the archives:

https://curl.haxx.se/mail/lib-2006-01/0217.html

which suggests a single lock is fine. However I (or rather one of my
users) reported a deadlock because the code here:

https://github.com/curl/curl/blob/2f44e94efb3df8e50bb2ddbc4ec6b569a6424517/lib/url.c

Would grab the same lock around lines 997 and 1046.  And between my
reading of the documentation and what the code does I am inclined to
believe the code :-)

I guess the bottom line is: should I use different locks for different
kinds of data in the same CURLSH* handle?  And if so, may I suggest
that the documentation could be improved to say:

> ... When using multiple kinds of data in a CURLSH you must make sure that 
> your callback
> uses a different lock for each kind of data. With that constraint in mind, 
> use a single lock a
> time for each CURLSH and kind of data.

Thanks in advance,

-- 
Carlos O'Ryan
Cloud C++ Client Libraries
#include <cute.quote> // TODO(coryan@) actually pick a quote
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html

Reply via email to