fix: add error handling for playlist request

This commit is contained in:
antebrl
2025-01-13 22:54:40 +00:00
parent ddd9a797a2
commit 8a919768f8
2 changed files with 29 additions and 20 deletions

View File

@@ -31,32 +31,39 @@ module.exports = {
}
console.log('Proxy playlist request to:', targetUrl);
request(ProxyHelperService.getRequestOptions(targetUrl, headers), (error, response, body) => {
if (error) {
if (!res.headersSent) {
return res.status(500).json({ error: 'Failed to fetch m3u8 file' });
try {
request(ProxyHelperService.getRequestOptions(targetUrl, headers), (error, response, body) => {
if (error) {
if (!res.headersSent) {
return res.status(500).json({ error: 'Failed to fetch m3u8 file' });
}
console.error('Request error:', error);
return;
}
console.error('Request error:', error);
return;
}
try {
const proxyBaseUrl = '/proxy/';
const rewrittenBody = ProxyHelperService.rewriteUrls(body, proxyBaseUrl, headers, targetUrl).join('\n');
res.send(rewrittenBody);
} catch (e) {
console.error('Failed to rewrite URLs:', e);
res.status(500).json({ error: 'Failed to parse m3uo file. Not a valid HLS stream.' });
}
try {
const proxyBaseUrl = '/proxy/';
const rewrittenBody = ProxyHelperService.rewriteUrls(body, proxyBaseUrl, headers, targetUrl).join('\n');
res.send(rewrittenBody);
} catch (e) {
console.error('Failed to rewrite URLs:', e);
res.status(500).json({ error: 'Failed to parse m3uo file. Not a valid HLS stream.' });
}
//res.set('Content-Type', 'application/vnd.apple.mpegurl');
}).on('error', (err) => {
console.error('Unhandled error:', err);
//res.set('Content-Type', 'application/vnd.apple.mpegurl');
}).on('error', (err) => {
console.error('Unhandled error:', err);
if (!res.headersSent) {
res.status(500).json({ error: 'Proxy request failed' });
}
});
} catch (e) {
console.error('Failed to proxy request:', e);
if (!res.headersSent) {
res.status(500).json({ error: 'Proxy request failed' });
}
});
}
},
segment(req, res) {

View File

@@ -42,10 +42,12 @@ class StreamedSuSession extends SessionHandler {
const sessionDecrypted = await decryptRes.json();
this.channel.sessionUrl = sessionDecrypted.ok;
console.log('Session URL:', this.channel.sessionUrl);
return sessionDecrypted.ok;
} catch (error) {
console.error('Session initialization failed:', error);
this.channel.sessionUrl = null;
}
}