{"record":{"id":"a6ae14767f544636","repo":"caddyserver/caddy","slug":"marshaling-ech-config-list-v","errorCode":null,"errorMessage":"marshaling ECH config list: %v","messagePattern":"marshaling ECH config list: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"modules/caddytls/ech.go","lineNumber":379,"sourceCode":"\t\t\t\t\tconfigIDs = append(configIDs, c.ConfigID)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor _, cfgOuterName := range publication.Configs {\n\t\t\t\tif cfgList, ok := t.EncryptedClientHello.configs[cfgOuterName]; ok {\n\t\t\t\t\techCfgList = append(echCfgList, cfgList...)\n\t\t\t\t\tfor _, c := range cfgList {\n\t\t\t\t\t\tconfigIDs = append(configIDs, c.ConfigID)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tt.EncryptedClientHello.configsMu.RUnlock()\n\n\t\t// marshal the ECH config list as binary for publication\n\t\techCfgListBin, err := echCfgList.MarshalBinary()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"marshaling ECH config list: %v\", err)\n\t\t}\n\n\t\t// now we have our list of ECH configs to publish and the inner names\n\t\t// to publish for (i.e. the names being protected); iterate each publisher\n\t\t// and do the publish for any config+name that needs a publish\n\t\tfor _, publisher := range publication.publishers {\n\t\t\tpublisherKey := publisher.PublisherKey()\n\n\t\t\t// by default, publish for all (non-outer) server names, unless\n\t\t\t// a specific list of names is configured\n\t\t\tvar serverNamesSet map[string]struct{}\n\t\t\tif publication.Domains == nil {\n\t\t\t\tserverNamesSet = make(map[string]struct{}, len(t.serverNames))\n\t\t\t\tfor name := range t.serverNames {\n\t\t\t\t\t// skip Tailscale names, a special case we also handle differently in our auto-HTTPS\n\t\t\t\t\tif strings.HasSuffix(name, \".ts.net\") {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}","sourceCodeStart":361,"sourceCodeEnd":397,"githubUrl":"https://github.com/caddyserver/caddy/blob/50e54ee279aa1e504fe218ca49ab6ae16c100410/modules/caddytls/ech.go#L361-L397","documentation":"Error \"marshaling ECH config list: %v\" thrown in caddyserver/caddy.","triggerScenarios":"Thrown at modules/caddytls/ech.go:379 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["This is an internal serialization failure; check the wrapped error and report if persistent."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"50e54ee279aa1e504fe218ca49ab6ae16c100410","analyzedAt":"2026-08-15T09:20:21.641Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}