diff --git a/girs/GstWebRTC-1.0.gir b/girs/GstWebRTC-1.0.gir index 8e60e23513..dd7df6fad5 100644 --- a/girs/GstWebRTC-1.0.gir +++ b/girs/GstWebRTC-1.0.gir @@ -764,7 +764,7 @@ for more information. URI of the HTTP proxy of the form - http://[username:password@]hostname[:port] + http://[username:password@]hostname[:port][?alpn=<alpn>] Get HTTP Proxy to be used when connecting to TURN server. @@ -897,7 +897,7 @@ Get HTTP Proxy to be used when connecting to TURN server. URI of the HTTP proxy of the form - http://[username:password@]hostname[:port] + http://[username:password@]hostname[:port][?alpn=<alpn>] @@ -1144,7 +1144,7 @@ Get HTTP Proxy to be used when connecting to TURN server. URI of the HTTP proxy of the form - http://[username:password@]hostname[:port] + http://[username:password@]hostname[:port][?alpn=<alpn>] Get HTTP Proxy to be used when connecting to TURN server. @@ -1287,7 +1287,7 @@ Get HTTP Proxy to be used when connecting to TURN server. URI of the HTTP proxy of the form - http://[username:password@]hostname[:port] + http://[username:password@]hostname[:port][?alpn=<alpn>] @@ -1833,7 +1833,7 @@ stops automatic ICE gathering. URI of the HTTP proxy of the form - http://[username:password@]hostname[:port] + http://[username:password@]hostname[:port][?alpn=<alpn>] @@ -1844,7 +1844,7 @@ stops automatic ICE gathering. URI of the HTTP proxy of the form - http://[username:password@]hostname[:port] + http://[username:password@]hostname[:port][?alpn=<alpn>] Get HTTP Proxy to be used when connecting to TURN server. diff --git a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json index b7ad68571d..6246d458e9 100644 --- a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json +++ b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json @@ -237931,7 +237931,7 @@ "writable": false }, "http-proxy": { - "blurb": "A HTTP proxy for use with TURN/TCP of the form http://[username:password@]hostname[:port]", + "blurb": "A HTTP proxy for use with TURN/TCP of the form http://[username:password@]hostname[:port][?alpn=]", "conditionally-available": false, "construct": false, "construct-only": false, diff --git a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c index a5b023155b..1f728e386c 100644 --- a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c +++ b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c @@ -8776,7 +8776,7 @@ gst_webrtc_bin_class_init (GstWebRTCBinClass * klass) * GstWebRTCBin:http-proxy: * * A HTTP proxy for use with TURN/TCP of the form - * http://[username:password@]hostname[:port] + * http://[username:password@]hostname[:port][?alpn=] * * Since: 1.22 */ @@ -8784,7 +8784,7 @@ gst_webrtc_bin_class_init (GstWebRTCBinClass * klass) PROP_HTTP_PROXY, g_param_spec_string ("http-proxy", "HTTP Proxy", "A HTTP proxy for use with TURN/TCP of the form " - "http://[username:password@]hostname[:port]", + "http://[username:password@]hostname[:port][?alpn=]", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.c b/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.c index 22446ffd87..82a685940a 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.c @@ -458,7 +458,7 @@ gst_webrtc_ice_get_turn_server (GstWebRTCICE * ice) * gst_webrtc_ice_set_http_proxy: * @ice: The #GstWebRTCICE * @uri: (transfer none): URI of the HTTP proxy of the form - * http://[username:password@]hostname[:port] + * http://[username:password@]hostname[:port][?alpn=] * * Set HTTP Proxy to be used when connecting to TURN server. * @@ -478,7 +478,7 @@ gst_webrtc_ice_set_http_proxy (GstWebRTCICE * ice, const gchar * uri_s) * @ice: The #GstWebRTCICE * * Returns: (transfer full): URI of the HTTP proxy of the form - * http://[username:password@]hostname[:port] + * http://[username:password@]hostname[:port][?alpn=] * * Get HTTP Proxy to be used when connecting to TURN server. * diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/nice/nice.c b/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/nice/nice.c index ce15cb6cf0..4e902868e6 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/nice/nice.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/nice/nice.c @@ -1351,8 +1351,10 @@ on_http_proxy_resolved (GstWebRTCICE * ice, GAsyncResult * res, const gchar *userinfo; gchar *user = NULL; gchar *pass = NULL; + const gchar *alpn = NULL; gchar *ip = NULL; guint port = GST_URI_NO_PORT; + GHashTable *extra_headers; if (!(addresses = resolve_host_finish (nice, res, &error))) { GST_WARNING_OBJECT (ice, "Failed to resolve http proxy: %s", @@ -1382,13 +1384,23 @@ on_http_proxy_resolved (GstWebRTCICE * ice, GAsyncResult * res, userinfo = gst_uri_get_userinfo (uri); _parse_userinfo (userinfo, &user, &pass); + alpn = gst_uri_get_query_value (uri, "alpn"); + if (!alpn) { + alpn = "webrtc"; + } + extra_headers = g_hash_table_new_full (g_str_hash, + g_str_equal, g_free, g_free); + g_hash_table_insert (extra_headers, g_strdup ("ALPN"), g_strdup (alpn)); + g_object_set (nice->priv->nice_agent, "proxy-ip", ip, "proxy-port", port, "proxy-type", NICE_PROXY_TYPE_HTTP, - "proxy-username", user, "proxy-password", pass, NULL); + "proxy-username", user, "proxy-password", pass, "proxy-extra-headers", + extra_headers, NULL); g_free (ip); g_free (user); g_free (pass); + g_hash_table_unref (extra_headers); } static GstUri *