diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2015-05-17 20:33:48 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2015-05-17 21:11:53 +0200 |
commit | 7efa8ba74a506352121c0aaab0190bda0bad6400 (patch) | |
tree | f8a4cbb215e45934fdc3478a0a071606a6f64e4c /lib/system.c | |
parent | 901722312d789125b0e28f59054d3162bbcdc95e (diff) | |
download | gnutls-7efa8ba74a506352121c0aaab0190bda0bad6400.tar.gz |
Allow the usage of MSG_NOSIGNAL in send functions
That introduces the GNUTLS_NO_SIGNAL flag for gnutls_init(),
which is available in systems that support the MSG_NOSIGNAL
flag to send(). That eases the usage of the library within
other libraries.
Resolves #11
Diffstat (limited to 'lib/system.c')
-rw-r--r-- | lib/system.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/system.c b/lib/system.c index d336b529b1..f12dbfc2f3 100644 --- a/lib/system.c +++ b/lib/system.c @@ -110,16 +110,31 @@ int system_errno(gnutls_transport_ptr_t ptr) return errno; } +#ifdef MSG_NOSIGNAL +ssize_t +system_writev_nosignal(gnutls_transport_ptr_t ptr, const giovec_t * iovec, + int iovec_cnt) +{ + struct msghdr hdr; + + memset(&hdr, 0, sizeof(hdr)); + hdr.msg_iov = (struct iovec *)iovec; + hdr.msg_iovlen = iovec_cnt; + + return sendmsg(GNUTLS_POINTER_TO_INT(ptr), &hdr, MSG_NOSIGNAL); +} +#endif + ssize_t system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) { return writev(GNUTLS_POINTER_TO_INT(ptr), (struct iovec *) iovec, iovec_cnt); - } #endif + ssize_t system_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size) { |