Fix return proper error message instead of empty m3u8

This commit is contained in:
Ingo Oppermann 2023-11-16 11:39:00 +01:00
parent 728e4c6ab4
commit 0457d16391
No known key found for this signature in database
GPG Key ID: 2AB32426E9DD229E

View File

@ -172,38 +172,42 @@ func (h *handler) handleHLSEgress(c echo.Context, ctxuser string, data map[strin
res.Writer = rewriter
}
defer func() {
// Restore the original writer
res.Writer = writer
err := next(c)
if rewrite {
if res.Status < 200 || res.Status >= 300 {
res.Write(rewriter.buffer.Bytes())
return
}
// Restore the original writer
res.Writer = writer
// Rewrite the data befor sending it to the client
rewriter.rewriteHLS(sessionID, c.Request().URL)
if err != nil {
return err
}
res.Header().Set("Cache-Control", "private")
if rewrite {
if res.Status < 200 || res.Status >= 300 {
res.Write(rewriter.buffer.Bytes())
return nil
}
if isM3U8 || isTS {
if res.Status >= 200 && res.Status < 300 {
// Collect how many bytes we've written in this session
h.hlsEgressCollector.Egress(sessionID, headerSize(res.Header()))
h.hlsEgressCollector.Egress(sessionID, res.Size)
// Rewrite the data befor sending it to the client
rewriter.rewriteHLS(sessionID, c.Request().URL)
if isTS {
// Activate the session. If the session is already active, this is a noop
h.hlsEgressCollector.Activate(sessionID)
}
res.Header().Set("Cache-Control", "private")
res.Write(rewriter.buffer.Bytes())
}
if isM3U8 || isTS {
if res.Status >= 200 && res.Status < 300 {
// Collect how many bytes we've written in this session
h.hlsEgressCollector.Egress(sessionID, headerSize(res.Header()))
h.hlsEgressCollector.Egress(sessionID, res.Size)
if isTS {
// Activate the session. If the session is already active, this is a noop
h.hlsEgressCollector.Activate(sessionID)
}
}
}()
}
return next(c)
return nil
}
type bodyReader struct {