vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Fri Dec 18 19:05:07 2015 +0200| [b616c49e561267c1f8bad735b2e3177fb39e723e] | committer: Rémi Denis-Courmont
https: move TLS send function and remove dead non-TLS send function > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b616c49e561267c1f8bad735b2e3177fb39e723e --- modules/access/http/h2output.c | 42 +++++++++++++++++++++++++++++ modules/access/http/transport.c | 56 --------------------------------------- modules/access/http/transport.h | 9 ------- 3 files changed, 42 insertions(+), 65 deletions(-) diff --git a/modules/access/http/h2output.c b/modules/access/http/h2output.c index 26a0ff3..b5d3824 100644 --- a/modules/access/http/h2output.c +++ b/modules/access/http/h2output.c @@ -23,7 +23,11 @@ #endif #include <assert.h> +#include <errno.h> #include <stdlib.h> +#ifdef HAVE_POLL +# include <poll.h> +#endif #include <vlc_common.h> #include <vlc_tls.h> #include "h2frame.h" @@ -173,6 +177,44 @@ static void vlc_h2_output_flush_unlocked(struct vlc_h2_output *out) } /** + * Sends bytes to a connection. + * @note This may be a cancellation point. + * The caller is responsible for serializing writes on a given connection. + */ +static ssize_t vlc_https_send(vlc_tls_t *tls, const void *buf, size_t len) +{ + struct pollfd ufd; + size_t count = 0; + + ufd.fd = tls->fd; + ufd.events = POLLOUT; + + while (count < len) + { + int canc = vlc_savecancel(); + ssize_t val = tls->send(tls, (char *)buf + count, len - count); + + vlc_restorecancel(canc); + + if (val > 0) + { + count += val; + continue; + } + + if (val == 0) + break; + + if (errno != EINTR && errno != EAGAIN) + return count ? (ssize_t)count : -1; + + poll(&ufd, 1, -1); + } + + return count; +} + +/** * Sends one HTTP/2 frame through TLS. * * This function sends a whole HTTP/2 frame through a TLS session, then diff --git a/modules/access/http/transport.c b/modules/access/http/transport.c index c6bfeea..c02163a 100644 --- a/modules/access/http/transport.c +++ b/modules/access/http/transport.c @@ -92,62 +92,6 @@ ssize_t vlc_http_recv(int fd, void *buf, size_t len) return count; } -ssize_t vlc_https_send(vlc_tls_t *tls, const void *buf, size_t len) -{ - struct pollfd ufd; - size_t count = 0; - - ufd.fd = tls->fd; - ufd.events = POLLOUT; - - while (count < len) - { - int canc = vlc_savecancel(); - ssize_t val = tls->send(tls, (char *)buf + count, len - count); - - vlc_restorecancel(canc); - - if (val > 0) - { - count += val; - continue; - } - - if (val == 0) - break; - - if (errno != EINTR && errno != EAGAIN) - return -1; - - poll(&ufd, 1, -1); - } - - return count; -} - -ssize_t vlc_http_send(int fd, const void *buf, size_t len) -{ - size_t count = 0; - - while (count < len) - { - ssize_t val = send(fd, buf, len, MSG_NOSIGNAL); - if (val > 0) - { - count += val; - continue; - } - - if (val == 0) - break; - - if (errno != EINTR) - return -1; - } - - return count; -} - static void cleanup_addrinfo(void *data) { freeaddrinfo(data); diff --git a/modules/access/http/transport.h b/modules/access/http/transport.h index 9f57785..8b9d45a 100644 --- a/modules/access/http/transport.h +++ b/modules/access/http/transport.h @@ -38,15 +38,6 @@ ssize_t vlc_http_recv(int fd, void *buf, size_t len); */ ssize_t vlc_https_recv(struct vlc_tls *tls, void *buf, size_t len); -ssize_t vlc_http_send(int fd, const void *buf, size_t len); - -/** - * Sends bytes to a connection. - * @note This may be a cancellation point. - * The caller is responsible for serializing writes on a given connection. - */ -ssize_t vlc_https_send(struct vlc_tls *tls, const void *buf, size_t len); - struct vlc_tls *vlc_https_connect(struct vlc_tls_creds *creds, const char *name, unsigned port, bool *restrict two); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
