{"record":{"id":"0039eb382a5db50e","repo":"tailscale/tailscale","slug":"not-found-0039eb","errorCode":null,"errorMessage":"not found","messagePattern":"not found","errorType":"http","errorClass":null,"httpStatus":404,"severity":"error","filePath":"util/eventbus/debughttp.go","lineNumber":71,"sourceCode":"})\n\n//go:generate go run fetch-htmx.go\n\n//go:embed assets/*.css assets/*.min.js.gz\nvar static embed.FS\n\nfunc serveStatic(name string) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tswitch {\n\t\tcase strings.HasSuffix(name, \".css\"):\n\t\t\tw.Header().Set(\"Content-Type\", \"text/css\")\n\t\tcase strings.HasSuffix(name, \".min.js.gz\"):\n\t\t\tw.Header().Set(\"Content-Type\", \"text/javascript\")\n\t\t\tw.Header().Set(\"Content-Encoding\", \"gzip\")\n\t\tcase strings.HasSuffix(name, \".js\"):\n\t\t\tw.Header().Set(\"Content-Type\", \"text/javascript\")\n\t\tdefault:\n\t\t\thttp.Error(w, \"not found\", http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\n\t\tf, err := static.Open(filepath.Join(\"assets\", name))\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"opening asset: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tdefer f.Close()\n\t\tif _, err := io.Copy(w, f); err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"serving asset: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t})\n}\n\nfunc render(w http.ResponseWriter, name string, data any) {\n\terr := templates().ExecuteTemplate(w, name+\".html\", data)","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/tailscale/tailscale/blob/6e0912f97994f927632b34ae9e63b53d6516a6ac/util/eventbus/debughttp.go#L53-L89","documentation":"The eventbus debug HTTP server only serves embedded assets whose name ends in .css, .min.js.gz, or .js. Any other requested asset name falls through the Content-Type switch and gets a 404 before the embed FS is even consulted. The input at fault is the asset name passed to serveStatic.","triggerScenarios":"Thrown at util/eventbus/debughttp.go:71 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Request an existing debug asset path."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6e0912f97994f927632b34ae9e63b53d6516a6ac","analyzedAt":"2026-08-18T08:17:25.280Z","contentChangedAt":"2026-08-18T08:17:25.280Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}