caddyserver/caddy · error
marshaling ECH config list: %v
Error message
marshaling ECH config list: %v
What it means
Error "marshaling ECH config list: %v" thrown in caddyserver/caddy.
Source
Thrown at modules/caddytls/ech.go:379
configIDs = append(configIDs, c.ConfigID)
}
}
} else {
for _, cfgOuterName := range publication.Configs {
if cfgList, ok := t.EncryptedClientHello.configs[cfgOuterName]; ok {
echCfgList = append(echCfgList, cfgList...)
for _, c := range cfgList {
configIDs = append(configIDs, c.ConfigID)
}
}
}
}
t.EncryptedClientHello.configsMu.RUnlock()
// marshal the ECH config list as binary for publication
echCfgListBin, err := echCfgList.MarshalBinary()
if err != nil {
return fmt.Errorf("marshaling ECH config list: %v", err)
}
// now we have our list of ECH configs to publish and the inner names
// to publish for (i.e. the names being protected); iterate each publisher
// and do the publish for any config+name that needs a publish
for _, publisher := range publication.publishers {
publisherKey := publisher.PublisherKey()
// by default, publish for all (non-outer) server names, unless
// a specific list of names is configured
var serverNamesSet map[string]struct{}
if publication.Domains == nil {
serverNamesSet = make(map[string]struct{}, len(t.serverNames))
for name := range t.serverNames {
// skip Tailscale names, a special case we also handle differently in our auto-HTTPS
if strings.HasSuffix(name, ".ts.net") {
continue
}View on GitHub (pinned to 50e54ee279)
Solutions
- This is an internal serialization failure; check the wrapped error and report if persistent.
When it happens
Trigger: Thrown at modules/caddytls/ech.go:379 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of caddyserver/caddy@50e54ee279 (2026-08-15).
Data as JSON: /api/errors/a6ae14767f544636.
Report an issue: GitHub.