{"record":{"id":"4fef583fa48da002","repo":"AlistGo/alist","slug":"invalid-range-header","errorCode":null,"errorMessage":"invalid range header","messagePattern":"invalid range header","errorType":"validation","errorClass":null,"httpStatus":416,"severity":"error","filePath":"drivers/proton_drive/util.go","lineNumber":293,"sourceCode":"\n\td.tokenMutex.Unlock()\n\n\tgo func() {\n\n\t\t// Token expires in 1 hour\n\t\ttime.Sleep(1 * time.Hour)\n\t\td.tokenMutex.Lock()\n\n\t\tdelete(d.downloadTokens, token)\n\t\td.tokenMutex.Unlock()\n\t}()\n\n\treturn token\n}\n\nfunc parseRange(rangeHeader string, size int64) ([]httpRange, error) {\n\tif !strings.HasPrefix(rangeHeader, \"bytes=\") {\n\t\treturn nil, fmt.Errorf(\"invalid range header\")\n\t}\n\n\trangeSpec := strings.TrimPrefix(rangeHeader, \"bytes=\")\n\tranges := strings.Split(rangeSpec, \",\")\n\n\tvar result []httpRange\n\tfor _, r := range ranges {\n\t\tr = strings.TrimSpace(r)\n\t\tif strings.Contains(r, \"-\") {\n\t\t\tparts := strings.Split(r, \"-\")\n\t\t\tif len(parts) != 2 {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid range format\")\n\t\t\t}\n\n\t\t\tvar start, end int64\n\t\t\tvar err error\n\n\t\t\tif parts[0] == \"\" {","sourceCodeStart":275,"sourceCodeEnd":311,"githubUrl":"https://github.com/AlistGo/alist/blob/843d9dc8149126976b2625911e45a4d3ffd6f2f5/drivers/proton_drive/util.go#L275-L311","documentation":"Error \"invalid range header\" thrown in AlistGo/alist.","triggerScenarios":"Thrown at drivers/proton_drive/util.go:293 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Send a valid HTTP Range header within the file size bounds and retry the request."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"843d9dc8149126976b2625911e45a4d3ffd6f2f5","analyzedAt":"2026-08-15T12:14:11.722Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}