[vlc-commits] tls: add vlc_tls_DummyCreate()
Rémi Denis-Courmont
git at videolan.org
Fri Dec 18 21:07:44 CET 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Dec 18 18:34:39 2015 +0200| [30d18b6a0558c2648e40cc1c4d3c91653d1c7c49] | committer: Rémi Denis-Courmont
tls: add vlc_tls_DummyCreate()
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=30d18b6a0558c2648e40cc1c4d3c91653d1c7c49
---
include/vlc_tls.h | 10 ++++++++++
src/libvlccore.sym | 1 +
src/network/tls.c | 29 +++++++++++++++++++++++++++++
3 files changed, 40 insertions(+)
diff --git a/include/vlc_tls.h b/include/vlc_tls.h
index 4c746c4..f2a44ae 100644
--- a/include/vlc_tls.h
+++ b/include/vlc_tls.h
@@ -132,6 +132,16 @@ static inline int vlc_tls_SessionHandshake (vlc_tls_creds_t *crd,
*/
VLC_API void vlc_tls_Delete (vlc_tls_creds_t *);
+/**
+ * Fakes a TLS session.
+ *
+ * Creates a dummy TLS session structure from a socket file descriptor. Data
+ * will be sent and received directly through the socket. This can be used
+ * either to share common code between non-TLS and TLS cases, or for testing
+ * purposes.
+ */
+VLC_API vlc_tls_t *vlc_tls_DummyCreate(vlc_object_t *obj, int fd);
+
/** @} */
#endif
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index d7971d8..a97ace1 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -431,6 +431,7 @@ vlc_tls_SessionDelete
vlc_tls_Read
vlc_tls_Write
vlc_tls_GetLine
+vlc_tls_DummyCreate
ToCharset
update_Check
update_Delete
diff --git a/src/network/tls.c b/src/network/tls.c
index ebaa404..9120a27 100644
--- a/src/network/tls.c
+++ b/src/network/tls.c
@@ -308,3 +308,32 @@ error:
free(line);
return NULL;
}
+
+static ssize_t vlc_tls_DummyReceive(vlc_tls_t *tls, void *buf, size_t len)
+{
+ return recv(tls->fd, buf, len, 0);
+}
+
+static ssize_t vlc_tls_DummySend(vlc_tls_t *tls, const void *buf, size_t len)
+{
+ return send(tls->fd, buf, len, 0);
+}
+
+static void vlc_tls_DummyClose(vlc_tls_t *tls)
+{
+ (void) tls;
+}
+
+vlc_tls_t *vlc_tls_DummyCreate(vlc_object_t *obj, int fd)
+{
+ vlc_tls_t *session = malloc(sizeof (*session));
+ if (unlikely(session == NULL))
+ return NULL;
+
+ session->obj = obj;
+ session->fd = fd;
+ session->recv = vlc_tls_DummyReceive;
+ session->send = vlc_tls_DummySend;
+ session->close = vlc_tls_DummyClose;
+ return session;
+}
More information about the vlc-commits
mailing list