Hi gnutls hackers!
I want to be able to use GnuTLS without ever having to bother with signals!
We're using GnuTLS within libcurl and lots of people use it
multi-threaded and then signals don't work properly and make no sense.
Within libcurl itself we then make an effort to avoid them all over, but
now we've fallen over a problem when GnuTLS sends (or rather is the
cause of) a SIGPIPE.
I've checked the _gnutls_io_write_buffered() function in both 1.4.4 and
1.5.3 and there doesn't seem to be any means to disable the
signal-generation.
May I suggest that we at least add an option that avoids signals when
using GnuTLS? It would be a matter of using the fourth send() argument
on most platforms, and the SO_NOSIGPIPE socket option on some. We
already do this magic in libcurl.
I would be willing to provide a patch if there's no major objections.
Here's the full backtrace from Brendan Jurd who faced this problem:
http://curl.haxx.se/mail/lib-2006-10/0321.html