{"record":{"id":"6ead0546e1f540df","repo":"tailscale/tailscale","slug":"invalid-waitsec","errorCode":null,"errorMessage":"invalid waitsec","messagePattern":"invalid waitsec","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"feature/taildrop/localapi.go","lineNumber":430,"sourceCode":"\t\treturn\n\t}\n\n\tsuffix, ok := strings.CutPrefix(r.URL.EscapedPath(), \"/localapi/v0/files/\")\n\tif !ok {\n\t\thttp.Error(w, \"misconfigured\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\tif suffix == \"\" {\n\t\tif r.Method != \"GET\" {\n\t\t\thttp.Error(w, \"want GET to list files\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t\tctx := r.Context()\n\t\tvar wfs []apitype.WaitingFile\n\t\tif s := r.FormValue(\"waitsec\"); s != \"\" && s != \"0\" {\n\t\t\td, err := strconv.Atoi(s)\n\t\t\tif err != nil {\n\t\t\t\thttp.Error(w, \"invalid waitsec\", http.StatusBadRequest)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdeadline := time.Now().Add(time.Duration(d) * time.Second)\n\t\t\tvar cancel context.CancelFunc\n\t\t\tctx, cancel = context.WithDeadline(ctx, deadline)\n\t\t\tdefer cancel()\n\t\t\twfs, err = ext.AwaitWaitingFiles(ctx)\n\t\t\tif err != nil && ctx.Err() == nil {\n\t\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\t\treturn\n\t\t\t}\n\t\t} else {\n\t\t\tvar err error\n\t\t\twfs, err = ext.WaitingFiles()\n\t\t\tif err != nil {\n\t\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\t\treturn\n\t\t\t}","sourceCodeStart":412,"sourceCodeEnd":448,"githubUrl":"https://github.com/tailscale/tailscale/blob/6e0912f97994f927632b34ae9e63b53d6516a6ac/feature/taildrop/localapi.go#L412-L448","documentation":"The Taildrop file list endpoint accepts a 'waitsec' parameter to long-poll for new files. It fires when a non-empty, non-zero waitsec value is not an integer, so a deadline cannot be computed.","triggerScenarios":"Thrown at feature/taildrop/localapi.go:430 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-negative integer for the waitsec query parameter."],"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"}