From 0b368f1223ffa672d3d8d311f2ee8b6004a2850e Mon Sep 17 00:00:00 2001 From: nosamu <71368227+n0samu@users.noreply.github.com> Date: Wed, 9 Aug 2023 03:44:33 -0500 Subject: [PATCH] core: Use root movie URL as base for relative NetStream URLs --- core/src/streams.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/streams.rs b/core/src/streams.rs index 64e0f8cc0..14087518d 100644 --- a/core/src/streams.rs +++ b/core/src/streams.rs @@ -28,6 +28,7 @@ use std::cmp::max; use std::io::Seek; use std::sync::{Arc, Mutex}; use swf::{VideoCodec, VideoDeblocking}; +use url::Url; /// Manager for all media streams. /// @@ -258,7 +259,13 @@ impl<'gc> NetStream<'gc> { /// available in the buffer. pub fn play(self, context: &mut UpdateContext<'_, 'gc>, name: Option>) { if let Some(name) = name { - let request = Request::get(name.to_string()); + let request = if let Ok(stream_url) = + Url::parse(context.swf.url()).and_then(|url| url.join(name.to_string().as_str())) + { + Request::get(stream_url.to_string()) + } else { + Request::get(name.to_string()) + }; let mut write = self.0.write(context.gc_context); write.url = Some(request.url().to_string()); write.preload_offset = 0;