aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-26 14:35:23 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-26 14:35:23 +0200
commitf7e3841426ed4661ede6ccfff9c306141735d465 (patch)
tree793727cc80386bc1715869a3f54986e42897e656 /server/src
parent81bb9dee3ed8a029bec831e7c3f204cd0ed41472 (diff)
downloadjellything-master.tar
jellything-master.tar.bz2
jellything-master.tar.zst
refactor remuxer trait; add webm support; add back transcodingHEADmaster
Diffstat (limited to 'server/src')
-rw-r--r--server/src/logic/stream.rs13
-rw-r--r--server/src/ui/error.rs9
2 files changed, 15 insertions, 7 deletions
diff --git a/server/src/logic/stream.rs b/server/src/logic/stream.rs
index dfe2f86..d239c92 100644
--- a/server/src/logic/stream.rs
+++ b/server/src/logic/stream.rs
@@ -9,7 +9,7 @@ use jellycommon::{api::NodeFilterSort, stream::StreamSpec, NodeID, TrackSource};
use jellyimport::asset_token::AssetInner;
use jellylogic::{node::get_node, session::Session};
use jellystream::SMediaInfo;
-use log::info;
+use log::{info, warn};
use rocket::{
get, head,
http::{Header, Status},
@@ -148,9 +148,16 @@ pub async fn r_stream(
});
// TODO cleaner solution needed
- let mut reader = spawn_blocking(move || jellystream::stream(media, spec, urange))
+ let mut reader = match spawn_blocking(move || jellystream::stream(media, spec, urange))
.await
- .unwrap()?;
+ .unwrap()
+ {
+ Ok(o) => o,
+ Err(e) => {
+ warn!("stream error: {e:?}");
+ Err(e)?
+ }
+ };
let (stream_write, stream_read) = duplex(4096);
spawn_blocking(move || std::io::copy(&mut reader, &mut SyncIoBridge::new(stream_write)));
diff --git a/server/src/ui/error.rs b/server/src/ui/error.rs
index 6fc3284..f1c9d3a 100644
--- a/server/src/ui/error.rs
+++ b/server/src/ui/error.rs
@@ -26,10 +26,11 @@ static ERROR_IMAGE: LazyLock<Vec<u8>> = LazyLock::new(|| {
#[catch(default)]
pub fn r_catch<'a>(status: Status, _request: &Request) -> RawHtml<String> {
+ catch_with_message(format!("{status}"))
+}
+fn catch_with_message(message: String) -> RawHtml<String> {
RawHtml(render_page(
- &ErrorPage {
- status: format!("{status}"),
- },
+ &ErrorPage { status: message },
RenderInfo {
importing: false,
session: None,
@@ -56,7 +57,7 @@ impl<'r> Responder<'r, 'static> for MyError {
Some(x) if x.is_avif() || x.is_png() || x.is_jpeg() => {
(ContentType::AVIF, ERROR_IMAGE.as_slice()).respond_to(req)
}
- _ => r_catch(Status::InternalServerError, req).respond_to(req),
+ _ => catch_with_message(format!("{:#}", self.0)).respond_to(req),
}
}
}