{"record":{"id":"526d6f7e12a80e73","repo":"cloudflare/cloudflared","slug":"too-many-addresses-provided-max-10","errorCode":null,"errorMessage":"too many addresses provided, max: 10","messagePattern":"too many addresses provided, max: 10","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cloudflared/tunnel/configuration.go","lineNumber":508,"sourceCode":"\t\tIP:   dst,\n\t\tPort: port,\n\t})\n\tif err != nil {\n\t\treturn netip.Addr{}, err\n\t}\n\tdefer func() { _ = udpConn.Close() }()\n\tlocalAddrPort, err := netip.ParseAddrPort(udpConn.LocalAddr().String())\n\tif err != nil {\n\t\treturn netip.Addr{}, err\n\t}\n\tlocalAddr := localAddrPort.Addr()\n\treturn localAddr, nil\n}\n\nfunc parseResolverAddrPorts(input []string) ([]netip.AddrPort, error) {\n\t// We don't allow more than 10 resolvers to be provided statically for the resolver service.\n\tif len(input) > 10 {\n\t\treturn nil, errors.New(\"too many addresses provided, max: 10\")\n\t}\n\taddrs := make([]netip.AddrPort, 0, len(input))\n\tfor _, val := range input {\n\t\taddr, err := netip.ParseAddrPort(val)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\taddrs = append(addrs, addr)\n\t}\n\treturn addrs, nil\n}\n","sourceCodeStart":490,"sourceCodeEnd":520,"githubUrl":"https://github.com/cloudflare/cloudflared/blob/2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f/cmd/cloudflared/tunnel/configuration.go#L490-L520","documentation":"parseResolverAddrPorts enforces a hard cap of 10 statically configured resolver addresses for the resolver service. If the resolver address input contains more than 10 entries, it returns this error before parsing any of them.","triggerScenarios":"Passing more than 10 resolver address:port entries via the resolver configuration flag when preparing tunnel config.","commonSituations":"Enterprises mirroring all internal DNS resolvers into cloudflared; config files with an over-long resolver list generated by tooling.","solutions":["Reduce the resolver list to 10 or fewer addresses.","Point cloudflared at a single local forwarder (e.g. unbound/dnsmasq) that fans out to the full resolver set.","Dynamically discover resolvers instead of static configuration if your setup supports it."],"exampleFix":"# before\nresolvers:\n  - 10.0.0.1:53\n  - 10.0.0.2:53\n  # ... 15 entries total\n# after: keep at most 10 entries, or use one upstream forwarder\nresolvers:\n  - 10.0.0.1:53\n  - 10.0.0.2:53","handlingStrategy":"validation","validationCode":"const resolvers = cfg.resolvers ?? [];\nif (resolvers.length > 10) throw new Error(`resolvers must be <= 10, got ${resolvers.length}`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep static resolver lists at 10 entries or fewer.","Use a local DNS forwarder to scale beyond 10 upstreams.","Validate resolver lists in config-generation tooling before writing them."],"tags":["configuration","dns","validation","limits"],"backgroundTag":"value-out-of-range","analyzedSha":"2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f","analyzedAt":"2026-09-06T04:14:33.757Z","contentChangedAt":"2026-09-06T04:14:33.757Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}