wavetermdev/waveterm · error

setpeerinfo only valid for proxy connections

Error message

setpeerinfo only valid for proxy connections

What it means

Error "setpeerinfo only valid for proxy connections" thrown in wavetermdev/waveterm.

Source

Thrown at pkg/wshutil/wshrouter_controlimpl.go:87

	}
	return lm.sourceRouteId, nil
}

func (impl *WshRouterControlImpl) SetPeerInfoCommand(ctx context.Context, peerInfo string) error {
	source := GetRpcSourceFromContext(ctx)
	linkId := impl.Router.GetLinkIdForRoute(source)
	if linkId == baseds.NoLinkId {
		return fmt.Errorf("no link found for source route %q", source)
	}
	lm := impl.Router.getLinkMeta(linkId)
	if lm == nil {
		return fmt.Errorf("no link meta found for linkId %d", linkId)
	}
	if proxy, ok := lm.client.(*WshRpcProxy); ok {
		proxy.SetPeerInfo(peerInfo)
		return nil
	}
	return fmt.Errorf("setpeerinfo only valid for proxy connections")
}

func (impl *WshRouterControlImpl) AuthenticateCommand(ctx context.Context, data string) (wshrpc.CommandAuthenticateRtnData, error) {
	handler := GetRpcResponseHandlerFromContext(ctx)
	if handler == nil {
		return wshrpc.CommandAuthenticateRtnData{}, fmt.Errorf("no response handler in context")
	}
	linkId := handler.GetIngressLinkId()
	if linkId == baseds.NoLinkId {
		return wshrpc.CommandAuthenticateRtnData{}, fmt.Errorf("no ingress link found")
	}

	newCtx, err := ValidateAndExtractRpcContextFromToken(data)
	if err != nil {
		log.Printf("wshrouter authenticate error linkid=%d: %v", linkId, err)
		return wshrpc.CommandAuthenticateRtnData{}, fmt.Errorf("error validating token: %w", err)
	}
	routeId, err := validateRpcContextFromAuth(newCtx)

View on GitHub (pinned to a4447c1563)

When it happens

Trigger: Thrown at pkg/wshutil/wshrouter_controlimpl.go:87 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of wavetermdev/waveterm@a4447c1563 (2026-09-01). Data as JSON: /api/errors/81d322a9cef8551b. Report an issue: GitHub.