{"record":{"id":"a5b78bd59867088e","repo":"tailscale/tailscale","slug":"missing-ip-parameter-a5b78b","errorCode":null,"errorMessage":"missing 'ip' parameter","messagePattern":"missing 'ip' parameter","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"ipn/localapi/localapi.go","lineNumber":1271,"sourceCode":"\t}\n\terr := h.b.SetExpirySooner(r.Context(), expiryTime)\n\tif err != nil {\n\t\thttp.Error(w, err.Error(), http.StatusBadRequest)\n\t\treturn\n\t}\n\tw.Header().Set(\"Content-Type\", \"text/plain\")\n\tio.WriteString(w, \"done\\n\")\n}\n\nfunc (h *Handler) servePing(w http.ResponseWriter, r *http.Request) {\n\tctx := r.Context()\n\tif r.Method != httpm.POST {\n\t\thttp.Error(w, \"want POST\", http.StatusBadRequest)\n\t\treturn\n\t}\n\tipStr := r.FormValue(\"ip\")\n\tif ipStr == \"\" {\n\t\thttp.Error(w, \"missing 'ip' parameter\", http.StatusBadRequest)\n\t\treturn\n\t}\n\tip, err := netip.ParseAddr(ipStr)\n\tif err != nil {\n\t\thttp.Error(w, \"invalid IP\", http.StatusBadRequest)\n\t\treturn\n\t}\n\tpingTypeStr := r.FormValue(\"type\")\n\tif pingTypeStr == \"\" {\n\t\thttp.Error(w, \"missing 'type' parameter\", http.StatusBadRequest)\n\t\treturn\n\t}\n\tsize := 0\n\tsizeStr := r.FormValue(\"size\")\n\tif sizeStr != \"\" {\n\t\tsize, err = strconv.Atoi(sizeStr)\n\t\tif err != nil {\n\t\t\thttp.Error(w, \"invalid 'size' parameter\", http.StatusBadRequest)","sourceCodeStart":1253,"sourceCodeEnd":1289,"githubUrl":"https://github.com/tailscale/tailscale/blob/6e0912f97994f927632b34ae9e63b53d6516a6ac/ipn/localapi/localapi.go#L1253-L1289","documentation":"Sent as 400 by servePing when the 'ip' parameter is absent.","triggerScenarios":"Thrown at ipn/localapi/localapi.go:1271 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the 'ip' parameter (e.g. ip=100.64.1.2)","Check parameter spelling and form encoding","Use the tailscale CLI ping command which sets it correctly"],"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-14T05:17:10.506Z"}