bug处理

This commit is contained in:
truewhile
2026-09-08 08:41:01 +08:00
parent b23b1d728e
commit fdfb2ee987
3 changed files with 13 additions and 7 deletions
+3 -3
View File
@@ -94,8 +94,8 @@ func appendQueryToHLSSegments(playlist, rawQuery string) string {
if strings.TrimSpace(rawQuery) == "" {
return playlist
}
// Segment fetches only need auth/profile tokens; drop start= so a seek
// restart does not keep forcing EnsureJobFrom on every .ts hit.
// Segment fetches do not need start=, but must keep _seek as a cache-busting
// generation because every transcode restart reuses seg_00000.ts names.
q := filterHLSSegmentQuery(rawQuery)
if q == "" {
return playlist
@@ -131,7 +131,7 @@ func filterHLSSegmentQuery(rawQuery string) string {
key = part[:i]
}
switch strings.ToLower(key) {
case "start", "_seek":
case "start":
continue
}
kept = append(kept, part)
+6 -3
View File
@@ -302,9 +302,12 @@ func TestRequestTokenFromMediaBrowserAuthorizationHeader(t *testing.T) {
func TestAppendQueryToHLSSegments(t *testing.T) {
in := "#EXTM3U\n#EXTINF:4.0,\nseg_00000.ts\n#EXTINF:4.0,\nseg_00001.ts?old=1\n"
got := appendQueryToHLSSegments(in, "token=abc")
if !strings.Contains(got, "seg_00000.ts?token=abc") {
t.Fatalf("missing tokenized segment: %q", got)
got := appendQueryToHLSSegments(in, "token=abc&start=120.5&_seek=1001")
if !strings.Contains(got, "seg_00000.ts?token=abc&_seek=1001") {
t.Fatalf("missing token or seek generation on segment: %q", got)
}
if strings.Contains(got, "start=120.5") {
t.Fatalf("segment URL must not contain transcode start: %q", got)
}
if !strings.Contains(got, "seg_00001.ts?old=1") {
t.Fatalf("existing query should be preserved: %q", got)
+4 -1
View File
@@ -284,11 +284,14 @@ func TestShouldReplaceHLSJob(t *testing.T) {
}
func TestFilterHLSSegmentQueryDropsStart(t *testing.T) {
got := filterHLSSegmentQuery("token=abc&start=120.5&profile_id=1")
got := filterHLSSegmentQuery("token=abc&start=120.5&_seek=1001&profile_id=1")
if strings.Contains(got, "start=") {
t.Fatalf("start should be stripped, got %q", got)
}
if !strings.Contains(got, "token=abc") || !strings.Contains(got, "profile_id=1") {
t.Fatalf("auth/profile query should remain, got %q", got)
}
if !strings.Contains(got, "_seek=1001") {
t.Fatalf("_seek must remain to isolate cached segment generations, got %q", got)
}
}