static struct vlc_http_stream *stream_open(void) { struct vlc_http_msg *m = vlc_http_req_create("GET", "https", "www.example.com", "/"); assert(m != NULL); struct vlc_http_stream *s = vlc_http_stream_open(conn, m); vlc_http_msg_destroy(m); return s; }
static struct vlc_http_msg *vlc_http_tunnel_open(struct vlc_http_conn *conn, const char *hostname, unsigned port) { char *authority = vlc_http_authority(hostname, port); if (authority == NULL) return NULL; struct vlc_http_msg *req = vlc_http_req_create("CONNECT", NULL, authority, NULL); free(authority); if (unlikely(req == NULL)) return NULL; vlc_http_msg_add_header(req, "ALPN", "h2, http%%2F1.1"); vlc_http_msg_add_agent(req, PACKAGE_NAME "/" PACKAGE_VERSION); struct vlc_http_stream *stream = vlc_http_stream_open(conn, req); vlc_http_msg_destroy(req); if (stream == NULL) return NULL; struct vlc_http_msg *resp = vlc_http_msg_get_initial(stream); resp = vlc_http_msg_get_final(resp); if (resp == NULL) return NULL; int status = vlc_http_msg_get_status(resp); if ((status / 100) != 2) { vlc_http_msg_destroy(resp); resp = NULL; } return resp; }