{"record":{"id":"1c77386950b35755","repo":"caddyserver/caddy","slug":"config-for-a-packet-conn-wrapper-did-not-provide-a","errorCode":null,"errorMessage":"config for a packet conn wrapper did not provide a value that implements caddy.PacketConnWrapper","messagePattern":"config for a packet conn wrapper did not provide a value that implements caddy\\.PacketConnWrapper","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"caddyconfig/httpcaddyfile/httptype.go","lineNumber":908,"sourceCode":"\t\t\tfor _, listenerConfig := range sblock.pile[\"listener_wrapper\"] {\n\t\t\t\tlistenerWrapper, ok := listenerConfig.Value.(caddy.ListenerWrapper)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"config for a listener wrapper did not provide a value that implements caddy.ListenerWrapper\")\n\t\t\t\t}\n\t\t\t\tjsonListenerWrapper := caddyconfig.JSONModuleObject(\n\t\t\t\t\tlistenerWrapper,\n\t\t\t\t\t\"wrapper\",\n\t\t\t\t\tlistenerWrapper.(caddy.Module).CaddyModule().ID.Name(),\n\t\t\t\t\twarnings,\n\t\t\t\t)\n\t\t\t\tsrv.ListenerWrappersRaw = append(srv.ListenerWrappersRaw, jsonListenerWrapper)\n\t\t\t}\n\n\t\t\t// Look for any config values that provide packet conn wrappers on the server block\n\t\t\tfor _, listenerConfig := range sblock.pile[\"packet_conn_wrapper\"] {\n\t\t\t\tpacketConnWrapper, ok := listenerConfig.Value.(caddy.PacketConnWrapper)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"config for a packet conn wrapper did not provide a value that implements caddy.PacketConnWrapper\")\n\t\t\t\t}\n\t\t\t\tjsonPacketConnWrapper := caddyconfig.JSONModuleObject(\n\t\t\t\t\tpacketConnWrapper,\n\t\t\t\t\t\"wrapper\",\n\t\t\t\t\tpacketConnWrapper.(caddy.Module).CaddyModule().ID.Name(),\n\t\t\t\t\twarnings,\n\t\t\t\t)\n\t\t\t\tsrv.PacketConnWrappersRaw = append(srv.PacketConnWrappersRaw, jsonPacketConnWrapper)\n\t\t\t}\n\n\t\t\t// set up each handler directive, making sure to honor directive order\n\t\t\tdirRoutes := sblock.pile[\"route\"]\n\t\t\tsiteSubroute, err := buildSubroute(dirRoutes, groupCounter, true)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// add the site block's route(s) to the server","sourceCodeStart":890,"sourceCodeEnd":926,"githubUrl":"https://github.com/caddyserver/caddy/blob/50e54ee279aa1e504fe218ca49ab6ae16c100410/caddyconfig/httpcaddyfile/httptype.go#L890-L926","documentation":"Error \"config for a packet conn wrapper did not provide a value that implements caddy.PacketConnWrapper\" thrown in caddyserver/caddy.","triggerScenarios":"Thrown at caddyconfig/httpcaddyfile/httptype.go:908 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the packet conn wrapper module's configuration unmarshals into a value that implements caddy.PacketConnWrapper.","Verify the module name is a registered packet conn wrapper."],"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-15T22:17:37.221Z"}