vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue May 12 22:35:25 2015 +0300| [a0391a08abc0b8edc721f5f2819b1437d83bf7d2] | committer: Rémi Denis-Courmont
adaptive: use TLS I/O functions > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a0391a08abc0b8edc721f5f2819b1437d83bf7d2 --- modules/demux/adaptative/http/Sockets.cpp | 51 +++++++---------------------- 1 file changed, 11 insertions(+), 40 deletions(-) diff --git a/modules/demux/adaptative/http/Sockets.cpp b/modules/demux/adaptative/http/Sockets.cpp index 8b0f2d7..9d7f47e 100644 --- a/modules/demux/adaptative/http/Sockets.cpp +++ b/modules/demux/adaptative/http/Sockets.cpp @@ -130,43 +130,21 @@ bool TLSSocket::connected() const ssize_t TLSSocket::read(vlc_object_t *, void *p_buffer, size_t len) { - ssize_t size; - size_t totalread = 0; - do - { - size = tls_Recv(tls, (uint8_t*)p_buffer + totalread, len - totalread); /* only returns partial chunks */ - if(size >= 0) - { - totalread += (size_t) size; - } - else if(errno != EINTR && errno!=EAGAIN) - { - break; - } - } while ( totalread < len ); - return totalread; -} - -std::string TLSSocket::readline(vlc_object_t *stream) -{ - std::string ret; - ret.reserve(256); - char c[2] = {0,0}; - ssize_t size = TLSSocket::read(stream, c, 1); - - while(size > 0) - { - ret.append( &c[0] ); - if(c[0] == '\n') - break; + return vlc_tls_Read(tls, p_buffer, len, true) == (ssize_t)len; +} - size = TLSSocket::read(stream, c, 1); - } +std::string TLSSocket::readline(vlc_object_t *) +{ + char *line = ::vlc_tls_GetLine(tls); + if(line == NULL) + return ""; + std::string ret(line); + ::free(line); return ret; } -bool TLSSocket::send(vlc_object_t *stream, const void *buf, size_t size) +bool TLSSocket::send(vlc_object_t *, const void *buf, size_t size) { if (!connected()) return false; @@ -174,14 +152,7 @@ bool TLSSocket::send(vlc_object_t *stream, const void *buf, size_t size) if (size == 0) return true; - ssize_t ret = tls_Send(tls, buf, size); - if (ret <= 0) - return false; - - if ( (size_t)ret < size ) - send( stream, ((uint8_t*)buf) + ret, size - ret ); - - return true; + return vlc_tls_Write(tls, buf, size) == (ssize_t)size; } void TLSSocket::disconnect() _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
