[vlc-commits] vlc_tls_ServerSessionCreate() takes a vlc_tls_t

Rémi Denis-Courmont git at videolan.org
Sun Feb 26 14:38:57 CET 2017


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Feb 26 15:12:29 2017 +0200| [899f81113f62cc8e0ce8d293da077789b3930dd9] | committer: Rémi Denis-Courmont

vlc_tls_ServerSessionCreate() takes a vlc_tls_t

This adds transitional vlc_tls_ServerSessionCreateFD() helper for
compatiblity. This is only to maintain sequential builds. The helper
will be removed shortly.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=899f81113f62cc8e0ce8d293da077789b3930dd9
---

 include/vlc_tls.h       | 20 +++++++++++++++++---
 src/network/httpd.c     |  2 +-
 src/network/tls.c       | 18 +++++-------------
 test/modules/misc/tls.c |  2 +-
 4 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/include/vlc_tls.h b/include/vlc_tls.h
index 35c6b51..de5e90c 100644
--- a/include/vlc_tls.h
+++ b/include/vlc_tls.h
@@ -163,7 +163,8 @@ VLC_API vlc_tls_t *vlc_tls_ClientSessionCreate(vlc_tls_creds_t *creds,
  *
  * @return TLS session, or NULL on error.
  */
-VLC_API vlc_tls_t *vlc_tls_ServerSessionCreate(vlc_tls_creds_t *creds, int fd,
+VLC_API vlc_tls_t *vlc_tls_ServerSessionCreate(vlc_tls_creds_t *creds,
+                                               vlc_tls_t *sock,
                                                const char *const *alpn);
 
 /** @} */
@@ -331,8 +332,21 @@ vlc_tls_ClientSessionCreateFD(vlc_tls_creds_t *crd, int fd, const char *host,
     vlc_tls_t *tls = vlc_tls_ClientSessionCreate(crd, sock, host, srv, lp, p);
     if (unlikely(tls == NULL))
         free(sock);
-    else
-        tls->p = sock;
+    return tls;
+}
+
+VLC_DEPRECATED
+static inline vlc_tls_t *
+vlc_tls_ServerSessionCreateFD(vlc_tls_creds_t *crd, int fd,
+                              const char *const *alp)
+{
+    vlc_tls_t *sock = vlc_tls_SocketOpen(fd);
+    if (unlikely(sock == NULL))
+        return NULL;
+
+    vlc_tls_t *tls = vlc_tls_ServerSessionCreate(crd, sock, alp);
+    if (unlikely(tls == NULL))
+        free(sock);
     return tls;
 }
 
diff --git a/src/network/httpd.c b/src/network/httpd.c
index 26c4bfe..daab75d 100644
--- a/src/network/httpd.c
+++ b/src/network/httpd.c
@@ -2042,7 +2042,7 @@ static void httpdLoop(httpd_host_t *host)
         {
             const char *alpn[] = { "http/1.1", NULL };
 
-            p_tls = vlc_tls_ServerSessionCreate(host->p_tls, fd, alpn);
+            p_tls = vlc_tls_ServerSessionCreateFD(host->p_tls, fd, alpn);
         }
         else
             p_tls = NULL;
diff --git a/src/network/tls.c b/src/network/tls.c
index 9cde48e..3dcf2f9 100644
--- a/src/network/tls.c
+++ b/src/network/tls.c
@@ -139,6 +139,8 @@ static vlc_tls_t *vlc_tls_SessionCreate(vlc_tls_creds_t *crd,
     int canc = vlc_savecancel();
     session = crd->open(crd, sock, host, alpn);
     vlc_restorecancel(canc);
+    if (session != NULL)
+        session->p = sock;
     return session;
 }
 
@@ -167,8 +169,6 @@ vlc_tls_t *vlc_tls_ClientSessionCreate(vlc_tls_creds_t *crd, vlc_tls_t *sock,
     if (session == NULL)
         return NULL;
 
-    session->p = sock;
-
     int canc = vlc_savecancel();
     mtime_t deadline = mdate ();
     deadline += var_InheritInteger (crd, "ipv4-timeout") * 1000;
@@ -209,19 +209,11 @@ error:
     return session;
 }
 
-vlc_tls_t *vlc_tls_ServerSessionCreate(vlc_tls_creds_t *crd, int fd,
+vlc_tls_t *vlc_tls_ServerSessionCreate(vlc_tls_creds_t *crd,
+                                       vlc_tls_t *sock,
                                        const char *const *alpn)
 {
-    vlc_tls_t *sock = vlc_tls_SocketOpen(fd);
-    if (unlikely(sock == NULL))
-        return NULL;
-
-    vlc_tls_t *tls = vlc_tls_SessionCreate(crd, sock, NULL, alpn);
-    if (unlikely(tls == NULL))
-        vlc_tls_SessionDelete(sock);
-    else
-        tls->p = sock;
-    return tls;
+    return vlc_tls_SessionCreate(crd, sock, NULL, alpn);
 }
 
 ssize_t vlc_tls_Read(vlc_tls_t *session, void *buf, size_t len, bool waitall)
diff --git a/test/modules/misc/tls.c b/test/modules/misc/tls.c
index 60898c6..96a73d2 100644
--- a/test/modules/misc/tls.c
+++ b/test/modules/misc/tls.c
@@ -121,7 +121,7 @@ static int securepair(vlc_thread_t *th, vlc_tls_t **restrict client,
     val = tlspair(insecurev);
     assert(val == 0);
 
-    server = vlc_tls_ServerSessionCreate(server_creds, insecurev[0], alpnv[0]);
+    server = vlc_tls_ServerSessionCreateFD(server_creds, insecurev[0], alpnv[0]);
     assert(server != NULL);
 
     val = vlc_clone(th, tls_echo, server, VLC_THREAD_PRIORITY_LOW);



More information about the vlc-commits mailing list