{"record":{"id":"7c926dfeb6762e8e","repo":"grpc/grpc-java","slug":"transport-socket-with-name-proto-gettransportsoc","errorCode":null,"errorMessage":"transport-socket with name ${proto.getTransportSocket().getName()} not supported.","messagePattern":"transport-socket with name (.+?) not supported\\.","errorType":"exception","errorClass":"ResourceInvalidException","httpStatus":null,"severity":"error","filePath":"xds/src/main/java/io/grpc/xds/XdsListenerResource.java","lineNumber":271,"sourceCode":"      throw new ResourceInvalidException(\"FilterChain \" + filterChainName + \" with filter \"\n          + l4Filter.getName() + \" failed to unpack message\", e);\n    }\n    io.grpc.xds.HttpConnectionManager httpConnectionManager = parseHttpConnectionManager(\n        hcmProto, filterRegistry, false /* isForClient */, args);\n\n    // Parse Transport Socket.\n    EnvoyServerProtoData.DownstreamTlsContext downstreamTlsContext = null;\n    if (proto.hasTransportSocket()) {\n      if (!TRANSPORT_SOCKET_NAME_TLS.equals(proto.getTransportSocket().getName())) {\n        throw new ResourceInvalidException(\"transport-socket with name \"\n            + proto.getTransportSocket().getName() + \" not supported.\");\n      }\n      DownstreamTlsContext downstreamTlsContextProto;\n      try {\n        downstreamTlsContextProto =\n            proto.getTransportSocket().getTypedConfig().unpack(DownstreamTlsContext.class);\n      } catch (InvalidProtocolBufferException e) {\n        throw new ResourceInvalidException(\"FilterChain \" + filterChainName\n            + \" failed to unpack message\", e);\n      }\n      downstreamTlsContext =\n          EnvoyServerProtoData.DownstreamTlsContext.fromEnvoyProtoDownstreamTlsContext(\n              validateDownstreamTlsContext(downstreamTlsContextProto, certProviderInstances));\n    }\n\n    // Parse FilterChainMatch.\n    FilterChainMatch filterChainMatch = parseFilterChainMatch(proto.getFilterChainMatch());\n    // null used to skip this check for defaultFilterChain.\n    if (filterChainMatchSet != null) {\n      validateFilterChainMatchForUniqueness(filterChainMatchSet, filterChainMatch);\n    }\n\n    return FilterChain.create(\n        filterChainName,\n        filterChainMatch,\n        httpConnectionManager,","sourceCodeStart":253,"sourceCodeEnd":289,"githubUrl":"https://github.com/grpc/grpc-java/blob/64daddc1f3d1975670f769f3e97bde8b2ba32d25/xds/src/main/java/io/grpc/xds/XdsListenerResource.java#L253-L289","documentation":"gRPC xDS only supports a transport_socket named 'tls' on server-side filter chains; any other name (e.g. 'envoy.transport_sockets.tls' or a custom name) is rejected with ResourceInvalidException. Names are used as a discriminator for which transport socket implementation to instantiate.","triggerScenarios":"A FilterChain proto sets transport_socket whose name field differs from the expected TRANSPORT_SOCKET_NAME_TLS constant ('tls') when parsed by parseFilterChain.","commonSituations":"Envoy configs using default/raw-buffer transport sockets or custom names; control planes auto-annotating transport sockets with implementation names like 'envoy.transport_sockets.tls'; hand-written configs using descriptive names.","solutions":["Rename the filter chain's transport_socket to exactly 'tls' in the LDS resource","If no TLS is intended, remove the transport_socket field entirely (downstreamTlsContext stays null and plaintext is used)","Update the control plane template so emitted transport sockets always carry name: tls"],"exampleFix":"# before\ntransport_socket:\n  name: envoy.transport_sockets.tls\n  typed_config: {...}\n# after\ntransport_socket:\n  name: tls\n  typed_config: {...}","handlingStrategy":"validation","validationCode":"if (fc.hasTransportSocket()\n    && !\"tls\".equals(fc.getTransportSocket().getName())) {\n  throw new IllegalArgumentException(\n      \"transport_socket name must be 'tls', got \" + fc.getTransportSocket().getName());\n}","typeGuard":null,"tryCatchPattern":"try {\n  listener = XdsListenerResource.parseServerSideListener(proto, ...);\n} catch (ResourceInvalidException e) {\n  if (e.getMessage().contains(\"transport-socket\") && e.getMessage().contains(\"not supported\")) {\n    logger.warn(\"Rename transport_socket to 'tls'\", e);\n  }\n}","preventionTips":["Always name downstream transport sockets exactly 'tls'","Remove transport_socket entirely when TLS is not needed","Add control-plane template check for transport socket naming"],"tags":["xds","grpc","tls","transport-socket"],"backgroundTag":"unsupported-config-value","analyzedSha":"64daddc1f3d1975670f769f3e97bde8b2ba32d25","analyzedAt":"2026-09-08T06:14:57.704Z","contentChangedAt":"2026-09-08T06:14:57.704Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}