diff options
author | Daniel Stenberg <daniel@haxx.se> | 2018-08-21 14:52:17 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-08-23 08:29:55 +0200 |
commit | 1b8ed4ad2318765665fef636a3d66b89fa4d8da6 (patch) | |
tree | 89e7903509ce2ddcbd21749ee364b7c5d376cf0f | |
parent | 3c7511b92eca99892646bdd8ccdc141b852cf5a6 (diff) |
libcurl-thread.3: expand somewhat on the NO_SIGNAL motivation
Multi-threaded applictions basically MUST set CURLOPT_NO_SIGNAL to 1L to
avoid the risk of getting a SIGPIPE.
Either way, a multi-threaded application that uses libcurl/openssl needs
to have a signhandler for or ignore SIGPIPE on its own.
Based on discussions in #2800
Closes #2904
-rw-r--r-- | docs/libcurl/libcurl-thread.3 | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3 index c18676e7e..1433f63ff 100644 --- a/docs/libcurl/libcurl-thread.3 +++ b/docs/libcurl/libcurl-thread.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 2015 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. +.\" * Copyright (C) 2015 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -79,8 +79,14 @@ all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares or threaded-resolver support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not -function properly multi-threaded unless the \fICURLOPT_NOSIGNAL(3)\fP option is -set. +function properly multi-threaded unless the \fICURLOPT_NOSIGNAL(3)\fP option +is set. + +When \fICURLOPT_NOSIGNAL(3)\fP is set to 1L, your application needs to deal +with the risk of a SIGPIPE (that at least the OpenSSL backend can +trigger). Note that setting \fICURLOPT_NOSIGNAL(3)\fP to 0L will not work in a +threaded situation as there will be race where libcurl risks restoring the +former signal handler while another thread should still ignore it. .IP "Name resolving" \fBgethostby* functions and other system calls.\fP These functions, provided by your operating system, must be thread safe. It is very important that |