aboutsummaryrefslogtreecommitdiff
path: root/docs/libcurl/libcurl-tutorial.3
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2005-05-09 13:13:38 +0000
committerDaniel Stenberg <daniel@haxx.se>2005-05-09 13:13:38 +0000
commite816bd259fec66d1c1f1b1c81e927650e49491f1 (patch)
treefd37d609256e58af71acbc0bf2897e08d68b5801 /docs/libcurl/libcurl-tutorial.3
parenta295408e09d731eec317007fe246d4560a84e126 (diff)
add multi-thread details for GnuTLS
Diffstat (limited to 'docs/libcurl/libcurl-tutorial.3')
-rw-r--r--docs/libcurl/libcurl-tutorial.326
1 files changed, 18 insertions, 8 deletions
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 80034a62b..1610fa559 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -21,7 +21,7 @@
.\" * $Id$
.\" **************************************************************************
.\"
-.TH libcurl-tutorial 3 "25 Jan 2005" "libcurl" "libcurl programming"
+.TH libcurl-tutorial 3 "9 May 2005" "libcurl" "libcurl programming"
.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
@@ -246,16 +246,26 @@ you intend to make another transfer. libcurl will then attempt to re-use the
previous
.SH "Multi-threading Issues"
-libcurl is completely thread safe, except for two issues: signals and alarm
-handlers. Signals are needed for a SIGPIPE handler, and the alarm() call is
-used to deal with timeouts (during DNS lookup).
+The first basic rule is that you must \fBnever\fP share a libcurl handle (be
+it easy or multi or whatever) between multiple threads. Only use one handle in
+one thread at a time.
+
+libcurl is completely thread safe, except for two issues: signals and SSL/TLS
+handlers. Signals are used timeouting name resolves (during DNS lookup) - when
+built without c-ares support and not on Windows..
If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
-then of course using OpenSSL multi-threaded and it has itself a few
-requirements on this. Basically, you need to provide one or two functions to
-allow it to function properly. For all details, see this:
+then of course using OpenSSL/GnuTLS multi-threaded and those libs have their
+own requirements on this issue. Basically, you need to provide one or two
+functions to allow it to function properly. For all details, see this:
+
+OpenSSL
+
+ http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
+
+GnuTLS
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
+ http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
When using multiple threads you should set the CURLOPT_NOSIGNAL option to
TRUE for all handles. Everything will work fine except that timeouts are not