Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean DuBois <sean@pion.ly>2023-09-26 22:17:29 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-11-10 18:32:39 +0300
commit2aacc74a44194afe15226ff402cb96548ce0d4f6 (patch)
treef40493c9fd7997e8387713e5ae70b5d07119be9b
parentd2e5cb43ccf6b2f7e7509fe797e72f3e7b6e073f (diff)
net: webrtc/webrtchttp: Respect HTTP redirects
Properly follow redirect URL. Before new request would be made, but with original URL again. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1387>
-rw-r--r--net/webrtchttp/src/whepsrc/imp.rs19
-rw-r--r--net/webrtchttp/src/whipsink/imp.rs19
2 files changed, 18 insertions, 20 deletions
diff --git a/net/webrtchttp/src/whepsrc/imp.rs b/net/webrtchttp/src/whepsrc/imp.rs
index 29d5f2d5..f5bfec4b 100644
--- a/net/webrtchttp/src/whepsrc/imp.rs
+++ b/net/webrtchttp/src/whepsrc/imp.rs
@@ -755,11 +755,7 @@ impl WhepSrc {
redirect_url.as_str()
);
- if let Err(err) =
- wait_async(&self.canceller, self.do_post(sess_desc), timeout).await
- {
- self.handle_future_error(err);
- }
+ self.do_post(sess_desc, redirect_url).await
}
Err(e) => self.raise_error(gst::ResourceError::Failed, e.to_string()),
}
@@ -931,27 +927,30 @@ impl WhepSrc {
let sess_desc = WebRTCSessionDescription::new(WebRTCSDPType::Offer, offer_sdp.sdp());
let timeout;
+ let endpoint;
+
{
let settings = self.settings.lock().unwrap();
timeout = settings.timeout;
+ endpoint =
+ reqwest::Url::parse(settings.whep_endpoint.as_ref().unwrap().as_str()).unwrap();
drop(settings);
}
- if let Err(e) = wait_async(&self.canceller, self.do_post(sess_desc), timeout).await {
+ if let Err(e) =
+ wait_async(&self.canceller, self.do_post(sess_desc, endpoint), timeout).await
+ {
self.handle_future_error(e);
}
}
#[async_recursion]
- async fn do_post(&self, offer: WebRTCSessionDescription) {
+ async fn do_post(&self, offer: WebRTCSessionDescription, endpoint: reqwest::Url) {
let auth_token;
- let endpoint;
let timeout;
{
let settings = self.settings.lock().unwrap();
- endpoint =
- reqwest::Url::parse(settings.whep_endpoint.as_ref().unwrap().as_str()).unwrap();
auth_token = settings.auth_token.clone();
timeout = settings.timeout;
drop(settings);
diff --git a/net/webrtchttp/src/whipsink/imp.rs b/net/webrtchttp/src/whipsink/imp.rs
index cc5c9abc..a22e5e37 100644
--- a/net/webrtchttp/src/whipsink/imp.rs
+++ b/net/webrtchttp/src/whipsink/imp.rs
@@ -546,27 +546,30 @@ impl WhipSink {
);
let timeout;
+ let endpoint;
+
{
let settings = self.settings.lock().unwrap();
timeout = settings.timeout;
+ endpoint =
+ reqwest::Url::parse(settings.whip_endpoint.as_ref().unwrap().as_str()).unwrap();
drop(settings);
}
- if let Err(e) = wait_async(&self.canceller, self.do_post(offer_sdp), timeout).await {
+ if let Err(e) =
+ wait_async(&self.canceller, self.do_post(offer_sdp, endpoint), timeout).await
+ {
self.handle_future_error(e);
}
}
#[async_recursion]
- async fn do_post(&self, offer: gst_webrtc::WebRTCSessionDescription) {
+ async fn do_post(&self, offer: gst_webrtc::WebRTCSessionDescription, endpoint: reqwest::Url) {
let auth_token;
- let endpoint;
let timeout;
{
let settings = self.settings.lock().unwrap();
- endpoint =
- reqwest::Url::parse(settings.whip_endpoint.as_ref().unwrap().as_str()).unwrap();
auth_token = settings.auth_token.clone();
timeout = settings.timeout;
drop(settings);
@@ -794,11 +797,7 @@ impl WhipSink {
redirect_url.as_str()
);
- if let Err(err) =
- wait_async(&self.canceller, self.do_post(offer), timeout).await
- {
- self.handle_future_error(err);
- }
+ self.do_post(offer, redirect_url).await
}
Err(e) => self.raise_error(gst::ResourceError::Failed, e.to_string()),
}