summaryrefslogtreecommitdiff
path: root/lib/system.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2015-05-17 20:33:48 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2015-05-17 21:11:53 +0200
commit7efa8ba74a506352121c0aaab0190bda0bad6400 (patch)
treef8a4cbb215e45934fdc3478a0a071606a6f64e4c /lib/system.c
parent901722312d789125b0e28f59054d3162bbcdc95e (diff)
downloadgnutls-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.c17
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)
{