From 794f0ef42a12f30d300c03662e82318266d301d7 Mon Sep 17 00:00:00 2001 From: advplyr Date: Thu, 7 Aug 2025 17:21:05 -0500 Subject: [PATCH] Fix server crash when transcode requests are made to the direct play endpoint #4555 --- server/controllers/SessionController.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/server/controllers/SessionController.js b/server/controllers/SessionController.js index ed662ee8..872f635d 100644 --- a/server/controllers/SessionController.js +++ b/server/controllers/SessionController.js @@ -4,6 +4,7 @@ const Logger = require('../Logger') const Database = require('../Database') const { toNumber, isUUID } = require('../utils/index') const { getAudioMimeTypeFromExtname, encodeUriPath } = require('../utils/fileUtils') +const { PlayMethod } = require('../utils/constants') const ShareManager = require('../managers/ShareManager') @@ -299,6 +300,18 @@ class SessionController { return res.sendStatus(404) } + // Redirect transcode requests to the HLS router + // Handles bug introduced in android v0.10.0-beta where transcode requests are made to this endpoint + if (playbackSession.playMethod === PlayMethod.TRANSCODE && audioTrack.contentUrl) { + Logger.debug(`[SessionController] Redirecting transcode request to "${audioTrack.contentUrl}"`) + return res.redirect(audioTrack.contentUrl) + } + + if (!audioTrack.metadata?.path) { + Logger.error(`[SessionController] Invalid audio track "${audioTrack.index}" for session "${req.params.id}"`) + return res.sendStatus(500) + } + const user = await Database.userModel.getUserById(playbackSession.userId) Logger.debug(`[SessionController] Serving audio track ${audioTrack.index} for session "${req.params.id}" belonging to user "${user.username}"`)