[vlc-commits] http: add opaque data pointer to connection structures

Rémi Denis-Courmont git at videolan.org
Sat Feb 25 22:41:57 CET 2017


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Feb 25 19:07:20 2017 +0200| [1d384b96dbce33149eb1c47781736c8784a53ce9] | committer: Rémi Denis-Courmont

http: add opaque data pointer to connection structures

This is to pass a VLC object (so far for logging only).

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

 modules/access/http/conn.h         |  8 +++-
 modules/access/http/connmgr.c      | 29 +++++++++++---
 modules/access/http/h1conn.c       | 12 +++---
 modules/access/http/h1conn_test.c  |  4 +-
 modules/access/http/h2conn.c       | 79 +++++++++++++++++++++++---------------
 modules/access/http/h2conn_test.c  |  2 +-
 modules/access/http/h2frame.c      | 17 ++++----
 modules/access/http/h2frame.h      |  6 +--
 modules/access/http/h2frame_test.c | 11 ++++++
 modules/access/http/h2output.c     |  2 -
 modules/access/http/transport.h    |  2 +-
 modules/access/http/tunnel.c       |  6 +--
 modules/access/http/tunnel_test.c  |  8 ++--
 13 files changed, 116 insertions(+), 70 deletions(-)

diff --git a/modules/access/http/conn.h b/modules/access/http/conn.h
index 59aa8c9..27f0e31 100644
--- a/modules/access/http/conn.h
+++ b/modules/access/http/conn.h
@@ -54,11 +54,15 @@ static inline void vlc_http_conn_release(struct vlc_http_conn *conn)
     conn->cbs->release(conn);
 }
 
+void vlc_http_err(void *, const char *msg, ...) VLC_FORMAT(2, 3);
+void vlc_http_dbg(void *, const char *msg, ...) VLC_FORMAT(2, 3);
+
 /**
  * \defgroup http1 HTTP/1.x
  * @{
  */
-struct vlc_http_conn *vlc_h1_conn_create(struct vlc_tls *, bool proxy);
+struct vlc_http_conn *vlc_h1_conn_create(void *ctx, struct vlc_tls *,
+                                         bool proxy);
 struct vlc_http_stream *vlc_chunked_open(struct vlc_http_stream *,
                                          struct vlc_tls *);
 
@@ -68,7 +72,7 @@ struct vlc_http_stream *vlc_chunked_open(struct vlc_http_stream *,
  * \defgroup h2 HTTP/2.0
  * @{
  */
-struct vlc_http_conn *vlc_h2_conn_create(struct vlc_tls *);
+struct vlc_http_conn *vlc_h2_conn_create(void *ctx, struct vlc_tls *);
 
 /** @} */
 
diff --git a/modules/access/http/connmgr.c b/modules/access/http/connmgr.c
index c8f8b39..9bc374d 100644
--- a/modules/access/http/connmgr.c
+++ b/modules/access/http/connmgr.c
@@ -34,6 +34,24 @@
 
 #pragma GCC visibility push(default)
 
+void vlc_http_err(void *ctx, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    msg_GenericVa((vlc_object_t *)ctx, VLC_MSG_ERR, fmt, ap);
+    va_end(ap);
+}
+
+void vlc_http_dbg(void *ctx, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    msg_GenericVa((vlc_object_t *)ctx, VLC_MSG_DBG, fmt, ap);
+    va_end(ap);
+}
+
 static char *vlc_http_proxy_find(const char *hostname, unsigned port,
                                  bool secure)
 {
@@ -62,7 +80,8 @@ static vlc_tls_t *vlc_https_connect_i11e(vlc_tls_creds_t *creds,
     char *proxy = vlc_http_proxy_find(host, port, true);
     if (proxy != NULL)
     {
-        tls = vlc_https_connect_proxy(creds, host, port, http_two, proxy);
+        tls = vlc_https_connect_proxy(creds->obj.parent, creds, host, port,
+                                      http_two, proxy);
         free(proxy);
     }
     else
@@ -186,9 +205,9 @@ static struct vlc_http_msg *vlc_https_request(struct vlc_http_mgr *mgr,
      * NOTE: We do not enforce TLS version 1.2 for HTTP 2.0 explicitly.
      */
     if (http2)
-        conn = vlc_h2_conn_create(tls);
+        conn = vlc_h2_conn_create(mgr->obj, tls);
     else
-        conn = vlc_h1_conn_create(tls, false);
+        conn = vlc_h1_conn_create(mgr->obj, tls, false);
 
     if (unlikely(conn == NULL))
     {
@@ -220,9 +239,9 @@ static struct vlc_http_msg *vlc_http_request(struct vlc_http_mgr *mgr,
     struct vlc_http_conn *conn;
 
     if (mgr->use_h2c)
-        conn = vlc_h2_conn_create(tls);
+        conn = vlc_h2_conn_create(mgr->obj, tls);
     else
-        conn = vlc_h1_conn_create(tls, proxy);
+        conn = vlc_h1_conn_create(mgr->obj, tls, proxy);
 
     if (unlikely(conn == NULL))
     {
diff --git a/modules/access/http/h1conn.c b/modules/access/http/h1conn.c
index bc4ac48..eaedcbf 100644
--- a/modules/access/http/h1conn.c
+++ b/modules/access/http/h1conn.c
@@ -116,9 +116,10 @@ struct vlc_h1_conn
     bool active;
     bool released;
     bool proxy;
+    void *opaque;
 };
 
-#define CO(conn) ((conn)->conn.tls->obj)
+#define CO(conn) ((conn)->opaque)
 
 static void vlc_h1_conn_destroy(struct vlc_h1_conn *conn);
 
@@ -126,7 +127,7 @@ static void *vlc_h1_stream_fatal(struct vlc_h1_conn *conn)
 {
     if (conn->conn.tls != NULL)
     {
-        msg_Dbg(CO(conn), "connection failed");
+        vlc_http_dbg(CO(conn), "connection failed");
         vlc_tls_Shutdown(conn->conn.tls, true);
         vlc_tls_Close(conn->conn.tls);
         conn->conn.tls = NULL;
@@ -155,7 +156,7 @@ static struct vlc_http_stream *vlc_h1_stream_open(struct vlc_http_conn *c,
     if (unlikely(payload == NULL))
         return NULL;
 
-    msg_Dbg(CO(conn), "outgoing request:\n%.*s", (int)len, payload);
+    vlc_http_dbg(CO(conn), "outgoing request:\n%.*s", (int)len, payload);
     val = vlc_tls_Write(conn->conn.tls, payload, len);
     free(payload);
 
@@ -185,7 +186,7 @@ static struct vlc_http_msg *vlc_h1_stream_wait(struct vlc_http_stream *stream)
     if (payload == NULL)
         return vlc_h1_stream_fatal(conn);
 
-    msg_Dbg(CO(conn), "incoming response:\n%.*s", (int)len, payload);
+    vlc_http_dbg(CO(conn), "incoming response:\n%.*s", (int)len, payload);
 
     resp = vlc_http_msg_headers(payload);
     minor = vlc_http_minor(payload);
@@ -321,7 +322,7 @@ static const struct vlc_http_conn_cbs vlc_h1_conn_callbacks =
     vlc_h1_conn_release,
 };
 
-struct vlc_http_conn *vlc_h1_conn_create(vlc_tls_t *tls, bool proxy)
+struct vlc_http_conn *vlc_h1_conn_create(void *ctx, vlc_tls_t *tls, bool proxy)
 {
     struct vlc_h1_conn *conn = malloc(sizeof (*conn));
     if (unlikely(conn == NULL))
@@ -333,6 +334,7 @@ struct vlc_http_conn *vlc_h1_conn_create(vlc_tls_t *tls, bool proxy)
     conn->active = false;
     conn->released = false;
     conn->proxy = proxy;
+    conn->opaque = ctx;
 
     return &conn->conn;
 }
diff --git a/modules/access/http/h1conn_test.c b/modules/access/http/h1conn_test.c
index 4e313c8..a6f8222 100644
--- a/modules/access/http/h1conn_test.c
+++ b/modules/access/http/h1conn_test.c
@@ -25,7 +25,7 @@
 #undef NDEBUG
 
 #include <assert.h>
-#include <stddef.h>
+#include <stdio.h>
 #include <string.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -52,7 +52,7 @@ static void conn_create(void)
 
     external_fd = fds[0];
 
-    conn = vlc_h1_conn_create(tls, false);
+    conn = vlc_h1_conn_create(NULL, tls, false);
     assert(conn != NULL);
 }
 
diff --git a/modules/access/http/h2conn.c b/modules/access/http/h2conn.c
index 6b83285..6854aba 100644
--- a/modules/access/http/h2conn.c
+++ b/modules/access/http/h2conn.c
@@ -39,7 +39,7 @@
 #include "conn.h"
 #include "message.h"
 
-#define CO(c) ((c)->conn.tls->obj)
+#define CO(c) ((c)->opaque)
 #define SO(s) CO((s)->conn)
 
 /** HTTP/2 connection */
@@ -47,6 +47,7 @@ struct vlc_h2_conn
 {
     struct vlc_http_conn conn;
     struct vlc_h2_output *out; /**< Send thread */
+    void *opaque;
 
     struct vlc_h2_stream *streams; /**< List of open streams */
     uint32_t next_id; /**< Next free stream identifier */
@@ -80,6 +81,20 @@ struct vlc_h2_stream
     vlc_cond_t recv_wait;
 };
 
+static int vlc_h2_conn_queue(struct vlc_h2_conn *conn, struct vlc_h2_frame *f)
+{
+    vlc_h2_frame_dump(conn->opaque, f, "out");
+    return vlc_h2_output_send(conn->out, f);
+}
+
+static int vlc_h2_conn_queue_prio(struct vlc_h2_conn *conn,
+                                  struct vlc_h2_frame *f)
+{
+    vlc_h2_frame_dump(conn->opaque, f, "out (priority)");
+    return vlc_h2_output_send_prio(conn->out, f);
+}
+
+
 /* Stream callbacks */
 
 /** Looks a stream up by ID. */
@@ -100,11 +115,11 @@ static int vlc_h2_stream_error(void *ctx, uint_fast32_t id, uint_fast32_t code)
 
     /* NOTE: This function is used both w/ and w/o conn->lock. Care. */
     if (code != VLC_H2_NO_ERROR)
-        msg_Err(CO(conn), "local stream %"PRIuFAST32" error: "
-                "%s (0x%"PRIXFAST32")", id, vlc_h2_strerror(code), code);
+        vlc_http_err(CO(conn), "local stream %"PRIuFAST32" error: "
+                     "%s (0x%"PRIXFAST32")", id, vlc_h2_strerror(code), code);
     else
-        msg_Dbg(CO(conn), "local stream %"PRIuFAST32" shut down", id);
-    return vlc_h2_output_send(conn->out, vlc_h2_frame_rst_stream(id, code));
+        vlc_http_dbg(CO(conn), "local stream %"PRIuFAST32" shut down", id);
+    return vlc_h2_conn_queue(conn, vlc_h2_frame_rst_stream(id, code));
 }
 
 static int vlc_h2_stream_fatal(struct vlc_h2_stream *s, uint_fast32_t code)
@@ -125,15 +140,15 @@ static void vlc_h2_stream_headers(void *ctx, unsigned count,
      * Then it is safe to discard the existing header. */
     if (s->recv_hdr != NULL)
     {
-        msg_Dbg(SO(s), "stream %"PRIu32" discarding old headers", s->id);
+        vlc_http_dbg(SO(s), "stream %"PRIu32" discarding old headers", s->id);
         vlc_http_msg_destroy(s->recv_hdr);
         s->recv_hdr = NULL;
     }
 
-    msg_Dbg(SO(s), "stream %"PRIu32" %u headers:", s->id, count);
+    vlc_http_dbg(SO(s), "stream %"PRIu32" %u headers:", s->id, count);
 
     for (unsigned i = 0; i < count; i++)
-        msg_Dbg(SO(s), " %s: \"%s\"", hdrs[i][0], hdrs[i][1]);
+        vlc_http_dbg(SO(s), " %s: \"%s\"", hdrs[i][0], hdrs[i][1]);
 
     s->recv_hdr = vlc_http_msg_h2_headers(count, hdrs);
     if (unlikely(s->recv_hdr == NULL))
@@ -173,7 +188,7 @@ static void vlc_h2_stream_end(void *ctx)
 {
     struct vlc_h2_stream *s = ctx;
 
-    msg_Dbg(SO(s), "stream %"PRIu32" closed by peer", s->id);
+    vlc_http_dbg(SO(s), "stream %"PRIu32" closed by peer", s->id);
 
     s->recv_end = true;
     vlc_cond_broadcast(&s->recv_wait);
@@ -184,8 +199,8 @@ static int vlc_h2_stream_reset(void *ctx, uint_fast32_t code)
 {
     struct vlc_h2_stream *s = ctx;
 
-    msg_Err(SO(s), "peer stream %"PRIu32" error: %s (0x%"PRIXFAST32")",
-            s->id, vlc_h2_strerror(code), code);
+    vlc_http_err(SO(s), "peer stream %"PRIu32" error: %s (0x%"PRIXFAST32")",
+                 s->id, vlc_h2_strerror(code), code);
 
     s->recv_end = true;
     s->recv_err = ECONNRESET;
@@ -289,8 +304,7 @@ static block_t *vlc_h2_stream_read(struct vlc_http_stream *stream)
     /* Credit the receive window if missing credit exceeds 50%. */
     uint_fast32_t credit = VLC_H2_INIT_WINDOW - s->recv_cwnd;
     if (credit >= (VLC_H2_INIT_WINDOW / 2)
-     && !vlc_h2_output_send(conn->out,
-                            vlc_h2_frame_window_update(s->id, credit)))
+     && !vlc_h2_conn_queue(conn, vlc_h2_frame_window_update(s->id, credit)))
         s->recv_cwnd += credit;
 
     vlc_h2_stream_unlock(s);
@@ -405,7 +419,7 @@ static struct vlc_http_stream *vlc_h2_stream_open(struct vlc_http_conn *c,
 
     if (conn->next_id > 0x7ffffff)
     {   /* Out of stream identifiers */
-        msg_Dbg(CO(conn), "no more stream identifiers");
+        vlc_http_dbg(CO(conn), "no more stream identifiers");
         goto error;
     }
 
@@ -416,7 +430,7 @@ static struct vlc_http_stream *vlc_h2_stream_open(struct vlc_http_conn *c,
     if (f == NULL)
         goto error;
 
-    vlc_h2_output_send(conn->out, f);
+    vlc_h2_conn_queue(conn, f);
 
     s->older = conn->streams;
     if (s->older != NULL)
@@ -439,8 +453,8 @@ static void vlc_h2_setting(void *ctx, uint_fast16_t id, uint_fast32_t value)
 {
     struct vlc_h2_conn *conn = ctx;
 
-    msg_Dbg(CO(conn), "setting: %s (0x%04"PRIxFAST16"): %"PRIuFAST32,
-            vlc_h2_setting_name(id), id, value);
+    vlc_http_dbg(CO(conn), "setting: %s (0x%04"PRIxFAST16"): %"PRIuFAST32,
+                 vlc_h2_setting_name(id), id, value);
 }
 
 /** Reports end of HTTP/2 peer settings */
@@ -448,7 +462,7 @@ static int vlc_h2_settings_done(void *ctx)
 {
     struct vlc_h2_conn *conn = ctx;
 
-    return vlc_h2_output_send(conn->out, vlc_h2_frame_settings_ack());
+    return vlc_h2_conn_queue(conn, vlc_h2_frame_settings_ack());
 }
 
 /** Reports a ping received from HTTP/2 peer */
@@ -456,7 +470,7 @@ static int vlc_h2_ping(void *ctx, uint_fast64_t opaque)
 {
     struct vlc_h2_conn *conn = ctx;
 
-    return vlc_h2_output_send_prio(conn->out, vlc_h2_frame_pong(opaque));
+    return vlc_h2_conn_queue_prio(conn, vlc_h2_frame_pong(opaque));
 }
 
 /** Reports a local HTTP/2 connection failure */
@@ -466,12 +480,12 @@ static void vlc_h2_error(void *ctx, uint_fast32_t code)
 
     /* NOTE: This function is used both w/ and w/o conn->lock. Care. */
     if (code != VLC_H2_NO_ERROR)
-        msg_Err(CO(conn), "local error: %s (0x%"PRIxFAST32")",
-                vlc_h2_strerror(code), code);
+        vlc_http_err(CO(conn), "local error: %s (0x%"PRIxFAST32")",
+                     vlc_h2_strerror(code), code);
     else
-        msg_Dbg(CO(conn), "local shutdown");
+        vlc_http_dbg(CO(conn), "local shutdown");
     /* NOTE: currently, the peer cannot create a stream, so ID=0 */
-    vlc_h2_output_send(conn->out, vlc_h2_frame_goaway(0, code));
+    vlc_h2_conn_queue(conn, vlc_h2_frame_goaway(0, code));
 }
 
 /** Reports a remote HTTP/2 connection error */
@@ -479,12 +493,12 @@ static int vlc_h2_reset(void *ctx, uint_fast32_t last_seq, uint_fast32_t code)
 {
     struct vlc_h2_conn *conn = ctx;
 
-    msg_Err(CO(conn), "peer error: %s (0x%"PRIxFAST32")",
-            vlc_h2_strerror(code), code);
-    msg_Dbg(CO(conn), "last stream: %"PRIuFAST32, last_seq);
+    vlc_http_err(CO(conn), "peer error: %s (0x%"PRIxFAST32")",
+                 vlc_h2_strerror(code), code);
+    vlc_http_dbg(CO(conn), "last stream: %"PRIuFAST32, last_seq);
 
     /* NOTE: currently, the peer cannot create a stream, so ID=0 */
-    vlc_h2_output_send(conn->out, vlc_h2_frame_goaway(0, VLC_H2_NO_ERROR));
+    vlc_h2_conn_queue(conn, vlc_h2_frame_goaway(0, VLC_H2_NO_ERROR));
 
     /* Prevent adding new streams on this end. */
     conn->next_id = 0x80000000;
@@ -504,8 +518,8 @@ static void vlc_h2_window_status(void *ctx, uint32_t *restrict rcwd)
     /* Maintain connection receive window to insanely large values.
      * Congestion control is done per stream instead. */
     if (*rcwd < (1 << 30)
-     && vlc_h2_output_send_prio(conn->out,
-                                vlc_h2_frame_window_update(0, 1 << 30)) == 0)
+     && vlc_h2_conn_queue_prio(conn,
+                               vlc_h2_frame_window_update(0, 1 << 30)) == 0)
         *rcwd += 1 << 30;
 }
 
@@ -641,7 +655,7 @@ static void *vlc_h2_recv_thread(void *data)
 
         if (frame == NULL)
         {
-            msg_Dbg(CO(conn), "connection shutdown");
+            vlc_http_dbg(CO(conn), "connection shutdown");
             break;
         }
 
@@ -700,7 +714,7 @@ static const struct vlc_http_conn_cbs vlc_h2_conn_callbacks =
     vlc_h2_conn_release,
 };
 
-struct vlc_http_conn *vlc_h2_conn_create(struct vlc_tls *tls)
+struct vlc_http_conn *vlc_h2_conn_create(void *ctx, struct vlc_tls *tls)
 {
     struct vlc_h2_conn *conn = malloc(sizeof (*conn));
     if (unlikely(conn == NULL))
@@ -709,6 +723,7 @@ struct vlc_http_conn *vlc_h2_conn_create(struct vlc_tls *tls)
     conn->conn.cbs = &vlc_h2_conn_callbacks;
     conn->conn.tls = tls;
     conn->out = vlc_h2_output_create(tls, true);
+    conn->opaque = ctx;
     conn->streams = NULL;
     conn->next_id = 1; /* TODO: server side */
     conn->released = false;
@@ -718,7 +733,7 @@ struct vlc_http_conn *vlc_h2_conn_create(struct vlc_tls *tls)
 
     vlc_mutex_init(&conn->lock);
 
-    if (vlc_h2_output_send(conn->out, vlc_h2_frame_settings())
+    if (vlc_h2_conn_queue(conn, vlc_h2_frame_settings())
      || vlc_clone(&conn->thread, vlc_h2_recv_thread, conn,
                   VLC_THREAD_PRIORITY_INPUT))
     {
diff --git a/modules/access/http/h2conn_test.c b/modules/access/http/h2conn_test.c
index 8668404..308529d 100644
--- a/modules/access/http/h2conn_test.c
+++ b/modules/access/http/h2conn_test.c
@@ -98,7 +98,7 @@ static void conn_create(void)
 
     external_fd = fds[0];
 
-    conn = vlc_h2_conn_create(tls);
+    conn = vlc_h2_conn_create(NULL, tls);
     assert(conn != NULL);
     conn_send(vlc_h2_frame_settings());
 
diff --git a/modules/access/http/h2frame.c b/modules/access/http/h2frame.c
index acaa5ab..2ece26e 100644
--- a/modules/access/http/h2frame.c
+++ b/modules/access/http/h2frame.c
@@ -31,6 +31,7 @@
 
 #include <vlc_common.h>
 
+#include "conn.h"
 #include "hpack.h"
 #include "h2frame.h"
 
@@ -403,8 +404,8 @@ const char *vlc_h2_strerror(uint_fast32_t code)
     return names[code];
 }
 
-void (vlc_h2_frame_dump)(vlc_object_t *obj, const struct vlc_h2_frame *f,
-                         const char *msg)
+void vlc_h2_frame_dump(void *opaque, const struct vlc_h2_frame *f,
+                       const char *msg)
 {
     size_t len = vlc_h2_frame_length(f);
     uint_fast8_t type = vlc_h2_frame_type(f);
@@ -412,13 +413,13 @@ void (vlc_h2_frame_dump)(vlc_object_t *obj, const struct vlc_h2_frame *f,
     uint_fast32_t sid = vlc_h2_frame_id(f);
 
     if (sid != 0)
-        msg_Dbg(obj, "%s %s (0x%02"PRIxFAST8") frame of %zu bytes, "
-                "flags 0x%02"PRIxFAST8", stream %"PRIuFAST32, msg,
-                vlc_h2_type_name(type), type, len,  flags, sid);
+        vlc_http_dbg(opaque, "%s %s (0x%02"PRIxFAST8") frame of %zu bytes, "
+                     "flags 0x%02"PRIxFAST8", stream %"PRIuFAST32, msg,
+                     vlc_h2_type_name(type), type, len,  flags, sid);
     else
-        msg_Dbg(obj, "%s %s (0x%02"PRIxFAST8") frame of %zu bytes, "
-                "flags 0x%02"PRIxFAST8", global", msg,
-                vlc_h2_type_name(type), type, len,  flags);
+        vlc_http_dbg(opaque, "%s %s (0x%02"PRIxFAST8") frame of %zu bytes, "
+                     "flags 0x%02"PRIxFAST8", global", msg,
+                     vlc_h2_type_name(type), type, len,  flags);
 }
 
 const uint8_t *(vlc_h2_frame_data_get)(const struct vlc_h2_frame *f,
diff --git a/modules/access/http/h2frame.h b/modules/access/http/h2frame.h
index f790242..182239a 100644
--- a/modules/access/http/h2frame.h
+++ b/modules/access/http/h2frame.h
@@ -52,11 +52,7 @@ vlc_h2_frame_goaway(uint_fast32_t last_stream_id, uint_fast32_t error_code);
 struct vlc_h2_frame *
 vlc_h2_frame_window_update(uint_fast32_t stream_id, uint_fast32_t credit);
 
-struct vlc_object_t;
-
-void vlc_h2_frame_dump(struct vlc_object_t *, const struct vlc_h2_frame *,
-                       const char *);
-#define vlc_h2_frame_dump(o, f, m) vlc_h2_frame_dump(VLC_OBJECT(o), f, m)
+void vlc_h2_frame_dump(void *, const struct vlc_h2_frame *, const char *);
 
 enum vlc_h2_error {
     VLC_H2_NO_ERROR,
diff --git a/modules/access/http/h2frame_test.c b/modules/access/http/h2frame_test.c
index 2cbb082..0a474a8 100644
--- a/modules/access/http/h2frame_test.c
+++ b/modules/access/http/h2frame_test.c
@@ -32,12 +32,23 @@
 #include <string.h>
 
 #include "h2frame.h"
+#include <vlc_common.h>
+#include "conn.h"
 
 #define CTX ((void *)(uintptr_t)0x44556677)
 
 static unsigned settings;
 
 /* Callbacks */
+void vlc_http_dbg(void *stream, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vfprintf(stream, fmt, ap);
+    va_end(ap);
+}
+
 static void vlc_h2_setting(void *ctx, uint_fast16_t id, uint_fast32_t value)
 {
     assert(ctx == CTX);
diff --git a/modules/access/http/h2output.c b/modules/access/http/h2output.c
index 05207b5..c082a1c 100644
--- a/modules/access/http/h2output.c
+++ b/modules/access/http/h2output.c
@@ -258,8 +258,6 @@ static void *vlc_h2_output_thread(void *data)
 
     while ((frame = vlc_h2_output_dequeue(out)) != NULL)
     {
-        vlc_h2_frame_dump(out->tls->obj, frame, "out");
-
         if (vlc_h2_frame_send(out->tls, frame))
         {   /* The connection failed asynchronously. The caller will be
              * notified at the next attempt to queue (as with TCP sockets). */
diff --git a/modules/access/http/transport.h b/modules/access/http/transport.h
index 7a61674..2bfe1a3 100644
--- a/modules/access/http/transport.h
+++ b/modules/access/http/transport.h
@@ -30,7 +30,7 @@ struct vlc_tls_creds;
 struct vlc_tls *vlc_https_connect(struct vlc_tls_creds *creds,
                                   const char *name, unsigned port,
                                   bool *restrict two);
-struct vlc_tls *vlc_https_connect_proxy(struct vlc_tls_creds *creds,
+struct vlc_tls *vlc_https_connect_proxy(void *ctx, struct vlc_tls_creds *creds,
                                         const char *name, unsigned port,
                                         bool *restrict two, const char *proxy);
 #endif
diff --git a/modules/access/http/tunnel.c b/modules/access/http/tunnel.c
index 15c4eb0..fcebafd 100644
--- a/modules/access/http/tunnel.c
+++ b/modules/access/http/tunnel.c
@@ -123,7 +123,7 @@ static void vlc_tls_ProxyClose(vlc_tls_t *tls)
     (void) tls;
 }
 
-vlc_tls_t *vlc_https_connect_proxy(vlc_tls_creds_t *creds,
+vlc_tls_t *vlc_https_connect_proxy(void *ctx, vlc_tls_creds_t *creds,
                                    const char *hostname, unsigned port,
                                    bool *restrict two, const char *proxy)
 {
@@ -180,8 +180,8 @@ vlc_tls_t *vlc_https_connect_proxy(vlc_tls_creds_t *creds,
     psock->close = vlc_tls_ProxyClose;
     psock->p = NULL;
 
-    struct vlc_http_conn *conn = /*ptwo ? vlc_h2_conn_create(psock)
-                                      :*/ vlc_h1_conn_create(psock, false);
+    struct vlc_http_conn *conn = /*ptwo ? vlc_h2_conn_create(ctx, psock)
+                                     :*/ vlc_h1_conn_create(ctx, psock, false);
     if (unlikely(conn == NULL))
     {
         vlc_tls_Close(psock);
diff --git a/modules/access/http/tunnel_test.c b/modules/access/http/tunnel_test.c
index 0687056..3afee3c 100644
--- a/modules/access/http/tunnel_test.c
+++ b/modules/access/http/tunnel_test.c
@@ -138,9 +138,9 @@ int main(void)
     bool two = false;
 
     /* Test bad URLs */
-    vlc_https_connect_proxy(NULL, "www.example.com", 0, &two,
+    vlc_https_connect_proxy(NULL, NULL, "www.example.com", 0, &two,
                             "/test");
-    vlc_https_connect_proxy(NULL, "www.example.com", 0, &two,
+    vlc_https_connect_proxy(NULL, NULL, "www.example.com", 0, &two,
                             "ftp://proxy.example.com/");
 
     int lfd = server_socket(&port);
@@ -153,7 +153,7 @@ int main(void)
     assert(url != NULL);
 
     /* Test connection failure */
-    vlc_https_connect_proxy(NULL, "www.example.com", 0, &two, url);
+    vlc_https_connect_proxy(NULL, NULL, "www.example.com", 0, &two, url);
 
     if (listen(lfd, 255))
     {
@@ -167,7 +167,7 @@ int main(void)
         assert(!"Thread error");
 
     /* Test proxy error */
-    vlc_https_connect_proxy(NULL, "www.example.com", 0, &two, url);
+    vlc_https_connect_proxy(NULL, NULL, "www.example.com", 0, &two, url);
 
     vlc_cancel(th);
     vlc_join(th, NULL);



More information about the vlc-commits mailing list