From 2ff342764f7382c1796f929c3dcc3faa90f43ebd Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 20 Jun 2026 20:16:51 +0000 Subject: [PATCH] state: return ErrGivenNameInvalid for invalid node rename RenameNode wrapped the raw dnsname error, so the v2 API mapped it to a 500. Emit the sentinel so an invalid name surfaces as a 400. --- hscontrol/state/state.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hscontrol/state/state.go b/hscontrol/state/state.go index 9c003378..6068dbbe 100644 --- a/hscontrol/state/state.go +++ b/hscontrol/state/state.go @@ -1034,7 +1034,7 @@ func (s *State) SetApprovedRoutes(nodeID types.NodeID, routes []netip.Prefix) (t func (s *State) RenameNode(nodeID types.NodeID, newName string) (types.NodeView, change.Change, error) { err := dnsname.ValidLabel(newName) if err != nil { - return types.NodeView{}, change.Change{}, fmt.Errorf("renaming node: %w", err) + return types.NodeView{}, change.Change{}, fmt.Errorf("%w: %w", ErrGivenNameInvalid, err) } view, err := s.nodeStore.SetGivenName(nodeID, newName)