summaryrefslogtreecommitdiff
path: root/lib/buffers.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/buffers.c')
-rw-r--r--lib/buffers.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/buffers.c b/lib/buffers.c
index 756969903e..7e4f4abf1c 100644
--- a/lib/buffers.c
+++ b/lib/buffers.c
@@ -496,8 +496,19 @@ _gnutls_writev(gnutls_session_t session, const giovec_t * giovec,
}
if (no_writev == 0) {
- i = session->internals.vec_push_func(fd, giovec,
- giovec_cnt);
+ if (session->internals.connect_addr) {
+#ifdef HAVE_WRITEV
+ if (session->internals.vec_push_func == system_writev)
+ i = system_writev_tfo(session, giovec, giovec_cnt);
+#ifdef MSG_NOSIGNAL
+ else if (session->internals.vec_push_func == system_writev_nosignal)
+ i = system_writev_nosignal_tfo(session, giovec, giovec_cnt);
+#endif
+ else
+#endif
+ i = session->internals.vec_push_func(fd, giovec, giovec_cnt);
+ } else
+ i = session->internals.vec_push_func(fd, giovec, giovec_cnt);
} else {
i = _gnutls_writev_emu(session, fd, giovec, giovec_cnt, 1);
}