[vlc-commits] adaptive: use TLS I/O functions
Rémi Denis-Courmont
git at videolan.org
Tue May 12 21:39:21 CEST 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | 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()
More information about the vlc-commits
mailing list