ipfs/kubo · error
%s: %s
Error message
%s: %s
What it means
Not a raised error itself: handleError is the p2p proxy's reporting helper that formats an already-caught error as '<msg>: <err>' and writes it to the HTTP response with the given status code. Seeing this text means an underlying proxy operation failed and was surfaced to the HTTP client.
Source
Thrown at core/corehttp/p2p_proxy.go:86
if _, err := peer.Decode(split[2]); err != nil {
return nil, fmt.Errorf("invalid request path '%s'", path)
}
if split[3] == "http" {
return &proxyRequest{split[2], protocol.ID("/http"), split[4]}, nil
}
split = strings.SplitN(path, "/", 7)
if len(split) < 7 || split[3] != "x" || split[5] != "http" {
return nil, fmt.Errorf("invalid request path '%s'", path)
}
return &proxyRequest{split[2], protocol.ID("/x/" + split[4] + "/http"), split[6]}, nil
}
func handleError(w http.ResponseWriter, msg string, err error, code int) {
http.Error(w, fmt.Sprintf("%s: %s", msg, err), code)
}
View on GitHub (pinned to 329838acdf)
Solutions
- Read the second half of the message: it carries the underlying cause (unknown protocol, peer dial failure, invalid path)
- Verify the p2p tunnel/listener exists ('ipfs p2p ls') and the remote peer is reachable
- Re-establish the listener with 'ipfs p2p listen' if it was closed
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at core/corehttp/p2p_proxy.go:86 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03).
Data as JSON: /api/errors/dca65500abb9d504.
Report an issue: GitHub.