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

  1. 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.