diff options
Diffstat (limited to 'lib/buffers.c')
-rw-r--r-- | lib/buffers.c | 15 |
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); } |