vlc | branch: master | Rémi Denis-Courmont <[email protected]> | 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); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
