[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