vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sat Feb 25 23:07:16 2017 +0200| [72f0a2e63548685870403f51d725cd0650c5e8be] | committer: Rémi Denis-Courmont
tls: add support for TCP Fast Open (refs #16067) This only works underneath client-side TLS so far. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=72f0a2e63548685870403f51d725cd0650c5e8be --- src/network/tls.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/network/tls.c b/src/network/tls.c index 2d04eb4..d7450d2 100644 --- a/src/network/tls.c +++ b/src/network/tls.c @@ -480,6 +480,31 @@ static ssize_t vlc_tls_Connect(vlc_tls_t *tls) static ssize_t vlc_tls_ConnectWrite(vlc_tls_t *tls, const struct iovec *iov,unsigned count) { +#ifdef MSG_FASTOPEN + vlc_tls_socket_t *sock = (vlc_tls_socket_t *)tls; + const struct msghdr msg = + { + .msg_name = sock->peer, + .msg_namelen = sock->peerlen, + .msg_iov = (struct iovec *)iov, + .msg_iovlen = count, + }; + ssize_t ret; + + ret = sendmsg(vlc_tls_SocketGetFD(tls), &msg, MSG_NOSIGNAL|MSG_FASTOPEN); + if (ret >= 0) + { /* Fast open in progress */ + tls->writev = vlc_tls_SocketWrite; + return ret; + } + + if (errno == EINPROGRESS) + return vlc_tls_WaitConnect(tls); + if (errno != EOPNOTSUPP) + return -1; + /* Fast open not supported or disabled... fallback to normal mode */ +#endif + if (vlc_tls_Connect(tls)) return -1; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
