From ace1c74ec2d9784a5d85563e9cb7165ee5f72719 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Fri, 7 Nov 2025 08:08:16 -0800 Subject: [PATCH] server: prevent invalid media converter from crashing all conversions --- server/src/plugin/media.ts | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/server/src/plugin/media.ts b/server/src/plugin/media.ts index b96ab21ea..628901a13 100644 --- a/server/src/plugin/media.ts +++ b/server/src/plugin/media.ts @@ -208,20 +208,25 @@ export abstract class MediaManagerBase implements MediaManager { .map(([id]) => { const device = this.getDeviceById(id); - return (device.converters || []).map(([fromMimeType, toMimeType], index) => { - return { - id: `${id}-${index}`, - name: device.name, - fromMimeType, - toMimeType, - convert(data, fromMimeType, toMimeType, options?) { - // MediaConverter is injected the plugin's node runtime which may be compiled against an - // older sdk that does not have MediaConverter. use the older convert method instead. - // once BufferConverter is removed, this can be simplified to device.convertMedia. - return (device.convertMedia || device.convert)(data, fromMimeType, toMimeType, options); - }, - } as IdBufferConverter; - }); + try { + return (device.converters || []).map(([fromMimeType, toMimeType], index) => { + return { + id: `${id}-${index}`, + name: device.name, + fromMimeType, + toMimeType, + convert(data, fromMimeType, toMimeType, options?) { + // MediaConverter is injected the plugin's node runtime which may be compiled against an + // older sdk that does not have MediaConverter. use the older convert method instead. + // once BufferConverter is removed, this can be simplified to device.convertMedia. + return (device.convertMedia || device.convert)(data, fromMimeType, toMimeType, options); + }, + } as IdBufferConverter; + }); + } + catch (e) { + return []; + } }); const converters = [...mediaConverters.flat(), ...bufferConverters];