grpc 1.31.1 → 1.32.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (431) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +595 -15723
  3. data/include/grpc/grpc_security.h +31 -14
  4. data/include/grpc/impl/codegen/README.md +22 -0
  5. data/include/grpc/impl/codegen/port_platform.h +6 -1
  6. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  7. data/src/core/ext/filters/client_channel/client_channel.cc +64 -20
  8. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  9. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  10. data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
  12. data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
  13. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +20 -13
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +20 -9
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +54 -56
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  29. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  30. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +363 -14
  32. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
  33. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +5 -4
  34. data/src/core/ext/filters/client_channel/server_address.cc +40 -7
  35. data/src/core/ext/filters/client_channel/server_address.h +42 -4
  36. data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
  37. data/src/core/ext/filters/client_channel/subchannel.h +16 -4
  38. data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
  39. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  40. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
  41. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
  42. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
  44. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
  45. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
  46. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
  47. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +239 -277
  48. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  50. data/src/core/ext/transport/chttp2/transport/internal.h +5 -1
  51. data/src/core/ext/transport/chttp2/transport/parsing.cc +1 -28
  52. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
  53. data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
  54. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
  55. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
  56. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  57. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
  58. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
  59. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
  60. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
  61. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
  62. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
  63. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
  66. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
  68. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
  69. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
  70. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
  71. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
  72. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  73. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
  74. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
  75. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
  76. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  77. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
  78. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
  79. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
  80. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
  81. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
  82. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  83. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
  84. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
  85. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
  86. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  87. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
  88. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  89. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
  90. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  91. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
  92. data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
  93. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
  94. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
  95. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
  96. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
  97. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
  98. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  99. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
  100. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
  101. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
  102. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  103. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
  104. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
  105. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
  106. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
  107. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
  108. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  109. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
  110. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
  111. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
  112. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  113. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
  114. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
  115. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
  116. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
  117. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
  118. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
  119. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
  120. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
  121. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
  122. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
  123. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
  124. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
  125. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
  126. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
  127. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
  128. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
  129. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
  130. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  131. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
  132. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
  133. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
  134. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
  135. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
  136. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  137. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
  138. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  139. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
  140. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  141. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
  142. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  143. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
  144. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  145. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
  146. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  147. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
  148. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  149. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
  150. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  151. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
  152. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  153. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
  154. data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
  155. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
  156. data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
  157. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
  158. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
  159. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
  160. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  161. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
  162. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
  163. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
  164. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  165. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
  166. data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
  167. data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
  168. data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.cc +1045 -767
  169. data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +114 -99
  170. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
  171. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
  172. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
  173. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
  174. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
  175. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +85 -417
  176. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
  177. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
  178. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +3 -3
  179. data/src/core/lib/channel/channelz.cc +14 -15
  180. data/src/core/lib/channel/channelz.h +1 -1
  181. data/src/core/lib/channel/channelz_registry.cc +3 -1
  182. data/src/core/lib/gpr/sync_posix.cc +2 -8
  183. data/src/core/lib/iomgr/endpoint.cc +5 -1
  184. data/src/core/lib/iomgr/endpoint.h +7 -3
  185. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
  186. data/src/core/lib/iomgr/ev_posix.cc +0 -2
  187. data/src/core/lib/iomgr/iomgr.cc +0 -10
  188. data/src/core/lib/iomgr/iomgr.h +0 -10
  189. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
  190. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
  191. data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
  192. data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
  193. data/src/core/lib/iomgr/tcp_custom.cc +32 -16
  194. data/src/core/lib/iomgr/tcp_posix.cc +31 -13
  195. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  196. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  197. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  198. data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
  199. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  200. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  201. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
  202. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
  203. data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
  204. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  205. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
  206. data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
  207. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
  208. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -2
  209. data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
  210. data/src/core/lib/surface/call.cc +12 -12
  211. data/src/core/lib/surface/call.h +2 -1
  212. data/src/core/lib/surface/channel.cc +28 -20
  213. data/src/core/lib/surface/channel.h +12 -2
  214. data/src/core/lib/surface/completion_queue.cc +10 -272
  215. data/src/core/lib/surface/completion_queue.h +0 -8
  216. data/src/core/lib/surface/init.cc +1 -3
  217. data/src/core/lib/surface/server.cc +1066 -1244
  218. data/src/core/lib/surface/server.h +363 -87
  219. data/src/core/lib/surface/version.cc +2 -2
  220. data/src/core/lib/transport/authority_override.cc +38 -0
  221. data/src/core/lib/transport/authority_override.h +32 -0
  222. data/src/core/lib/transport/connectivity_state.cc +18 -13
  223. data/src/core/lib/transport/connectivity_state.h +18 -6
  224. data/src/core/lib/transport/error_utils.cc +13 -0
  225. data/src/core/lib/transport/error_utils.h +6 -0
  226. data/src/core/lib/transport/static_metadata.cc +295 -276
  227. data/src/core/lib/transport/static_metadata.h +80 -73
  228. data/src/core/lib/transport/transport.h +7 -0
  229. data/src/core/lib/uri/uri_parser.cc +23 -21
  230. data/src/core/lib/uri/uri_parser.h +3 -1
  231. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
  232. data/src/core/tsi/ssl_transport_security.cc +3 -9
  233. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  234. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
  235. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
  236. data/src/ruby/lib/grpc/version.rb +1 -1
  237. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  238. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  239. data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
  240. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
  241. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  242. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  243. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  244. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  245. data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
  246. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  247. data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
  248. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
  249. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
  250. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
  251. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  252. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
  253. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
  254. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  255. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
  256. data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
  257. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  258. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
  259. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
  260. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  261. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
  262. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  263. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  264. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  265. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
  266. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
  267. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
  268. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
  269. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  270. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  271. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
  272. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  273. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
  274. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
  275. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  276. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  277. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  278. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
  279. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  280. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
  281. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  282. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  283. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  284. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  285. data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
  286. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  287. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  288. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  289. data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
  290. data/third_party/abseil-cpp/absl/status/status.cc +447 -0
  291. data/third_party/abseil-cpp/absl/status/status.h +428 -0
  292. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
  293. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  294. data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
  295. data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
  296. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
  297. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  298. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  299. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  300. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  301. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  302. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  303. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  304. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  305. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  306. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
  307. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  308. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  309. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
  310. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  311. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
  312. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
  313. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  314. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  315. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  316. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  317. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  318. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  319. data/third_party/boringssl-with-bazel/err_data.c +263 -257
  320. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
  321. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
  322. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  324. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
  325. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  326. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +39 -7
  327. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
  328. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +11 -0
  329. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -0
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
  332. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
  333. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -0
  334. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  335. data/third_party/upb/upb/decode.c +64 -15
  336. data/third_party/upb/upb/encode.c +2 -2
  337. data/third_party/upb/upb/msg.h +2 -2
  338. data/third_party/upb/upb/port_def.inc +1 -1
  339. data/third_party/upb/upb/table.c +0 -11
  340. data/third_party/upb/upb/table.int.h +0 -9
  341. data/third_party/upb/upb/upb.c +16 -14
  342. data/third_party/upb/upb/upb.h +26 -0
  343. data/third_party/upb/upb/upb.hpp +2 -0
  344. metadata +257 -155
  345. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  346. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
  347. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  348. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
  349. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  350. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
  351. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  352. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
  353. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
  354. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  355. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
  356. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  357. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
  358. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  359. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
  360. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  361. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
  362. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
  363. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  364. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
  365. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  366. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
  367. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  368. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
  369. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  370. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
  371. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  372. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
  373. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  374. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  375. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
  376. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
  377. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  378. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
  379. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
  380. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  381. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
  382. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  383. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
  384. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  385. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
  386. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  387. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
  388. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
  389. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  390. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
  391. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  392. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
  393. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  394. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
  395. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  396. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
  397. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
  398. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  399. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
  400. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  401. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
  402. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  403. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
  404. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  405. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
  406. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
  407. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  408. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
  409. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  410. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
  411. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  412. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  413. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  414. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
  415. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  416. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
  417. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  418. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
  419. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  420. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  421. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  422. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  423. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
  424. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
  425. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
  426. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  427. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
  428. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  429. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  430. data/src/core/lib/slice/slice_hash_table.h +0 -199
  431. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
@@ -36,7 +36,7 @@
36
36
  static_assert(
37
37
  std::is_trivially_destructible<grpc_core::StaticMetadataSlice>::value,
38
38
  "grpc_core::StaticMetadataSlice must be trivially destructible.");
39
- #define GRPC_STATIC_MDSTR_COUNT 108
39
+ #define GRPC_STATIC_MDSTR_COUNT 110
40
40
 
41
41
  void grpc_init_static_metadata_ctx(void);
42
42
  void grpc_destroy_static_metadata_ctx(void);
@@ -132,154 +132,161 @@ inline const grpc_core::StaticMetadataSlice* grpc_static_slice_table() {
132
132
  /* "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats" */
133
133
  #define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V2_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS \
134
134
  (grpc_static_slice_table()[35])
135
+ /* "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats" */
136
+ #define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V3_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS \
137
+ (grpc_static_slice_table()[36])
135
138
  /* "/grpc.health.v1.Health/Watch" */
136
139
  #define GRPC_MDSTR_SLASH_GRPC_DOT_HEALTH_DOT_V1_DOT_HEALTH_SLASH_WATCH \
137
- (grpc_static_slice_table()[36])
140
+ (grpc_static_slice_table()[37])
138
141
  /* "/envoy.service.discovery.v2.AggregatedDiscoveryService/StreamAggregatedResources"
139
142
  */
140
143
  #define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V2_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES \
141
- (grpc_static_slice_table()[37])
144
+ (grpc_static_slice_table()[38])
145
+ /* "/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources"
146
+ */
147
+ #define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V3_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES \
148
+ (grpc_static_slice_table()[39])
142
149
  /* "deflate" */
143
- #define GRPC_MDSTR_DEFLATE (grpc_static_slice_table()[38])
150
+ #define GRPC_MDSTR_DEFLATE (grpc_static_slice_table()[40])
144
151
  /* "gzip" */
145
- #define GRPC_MDSTR_GZIP (grpc_static_slice_table()[39])
152
+ #define GRPC_MDSTR_GZIP (grpc_static_slice_table()[41])
146
153
  /* "stream/gzip" */
147
- #define GRPC_MDSTR_STREAM_SLASH_GZIP (grpc_static_slice_table()[40])
154
+ #define GRPC_MDSTR_STREAM_SLASH_GZIP (grpc_static_slice_table()[42])
148
155
  /* "GET" */
149
- #define GRPC_MDSTR_GET (grpc_static_slice_table()[41])
156
+ #define GRPC_MDSTR_GET (grpc_static_slice_table()[43])
150
157
  /* "POST" */
151
- #define GRPC_MDSTR_POST (grpc_static_slice_table()[42])
158
+ #define GRPC_MDSTR_POST (grpc_static_slice_table()[44])
152
159
  /* "/" */
153
- #define GRPC_MDSTR_SLASH (grpc_static_slice_table()[43])
160
+ #define GRPC_MDSTR_SLASH (grpc_static_slice_table()[45])
154
161
  /* "/index.html" */
155
- #define GRPC_MDSTR_SLASH_INDEX_DOT_HTML (grpc_static_slice_table()[44])
162
+ #define GRPC_MDSTR_SLASH_INDEX_DOT_HTML (grpc_static_slice_table()[46])
156
163
  /* "http" */
157
- #define GRPC_MDSTR_HTTP (grpc_static_slice_table()[45])
164
+ #define GRPC_MDSTR_HTTP (grpc_static_slice_table()[47])
158
165
  /* "https" */
159
- #define GRPC_MDSTR_HTTPS (grpc_static_slice_table()[46])
166
+ #define GRPC_MDSTR_HTTPS (grpc_static_slice_table()[48])
160
167
  /* "200" */
161
- #define GRPC_MDSTR_200 (grpc_static_slice_table()[47])
168
+ #define GRPC_MDSTR_200 (grpc_static_slice_table()[49])
162
169
  /* "204" */
163
- #define GRPC_MDSTR_204 (grpc_static_slice_table()[48])
170
+ #define GRPC_MDSTR_204 (grpc_static_slice_table()[50])
164
171
  /* "206" */
165
- #define GRPC_MDSTR_206 (grpc_static_slice_table()[49])
172
+ #define GRPC_MDSTR_206 (grpc_static_slice_table()[51])
166
173
  /* "304" */
167
- #define GRPC_MDSTR_304 (grpc_static_slice_table()[50])
174
+ #define GRPC_MDSTR_304 (grpc_static_slice_table()[52])
168
175
  /* "400" */
169
- #define GRPC_MDSTR_400 (grpc_static_slice_table()[51])
176
+ #define GRPC_MDSTR_400 (grpc_static_slice_table()[53])
170
177
  /* "404" */
171
- #define GRPC_MDSTR_404 (grpc_static_slice_table()[52])
178
+ #define GRPC_MDSTR_404 (grpc_static_slice_table()[54])
172
179
  /* "500" */
173
- #define GRPC_MDSTR_500 (grpc_static_slice_table()[53])
180
+ #define GRPC_MDSTR_500 (grpc_static_slice_table()[55])
174
181
  /* "accept-charset" */
175
- #define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table()[54])
182
+ #define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table()[56])
176
183
  /* "gzip, deflate" */
177
- #define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table()[55])
184
+ #define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table()[57])
178
185
  /* "accept-language" */
179
- #define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table()[56])
186
+ #define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table()[58])
180
187
  /* "accept-ranges" */
181
- #define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table()[57])
188
+ #define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table()[59])
182
189
  /* "accept" */
183
- #define GRPC_MDSTR_ACCEPT (grpc_static_slice_table()[58])
190
+ #define GRPC_MDSTR_ACCEPT (grpc_static_slice_table()[60])
184
191
  /* "access-control-allow-origin" */
185
- #define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table()[59])
192
+ #define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table()[61])
186
193
  /* "age" */
187
- #define GRPC_MDSTR_AGE (grpc_static_slice_table()[60])
194
+ #define GRPC_MDSTR_AGE (grpc_static_slice_table()[62])
188
195
  /* "allow" */
189
- #define GRPC_MDSTR_ALLOW (grpc_static_slice_table()[61])
196
+ #define GRPC_MDSTR_ALLOW (grpc_static_slice_table()[63])
190
197
  /* "authorization" */
191
- #define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table()[62])
198
+ #define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table()[64])
192
199
  /* "cache-control" */
193
- #define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table()[63])
200
+ #define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table()[65])
194
201
  /* "content-disposition" */
195
- #define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table()[64])
202
+ #define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table()[66])
196
203
  /* "content-language" */
197
- #define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table()[65])
204
+ #define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table()[67])
198
205
  /* "content-length" */
199
- #define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table()[66])
206
+ #define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table()[68])
200
207
  /* "content-location" */
201
- #define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table()[67])
208
+ #define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table()[69])
202
209
  /* "content-range" */
203
- #define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table()[68])
210
+ #define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table()[70])
204
211
  /* "cookie" */
205
- #define GRPC_MDSTR_COOKIE (grpc_static_slice_table()[69])
212
+ #define GRPC_MDSTR_COOKIE (grpc_static_slice_table()[71])
206
213
  /* "date" */
207
- #define GRPC_MDSTR_DATE (grpc_static_slice_table()[70])
214
+ #define GRPC_MDSTR_DATE (grpc_static_slice_table()[72])
208
215
  /* "etag" */
209
- #define GRPC_MDSTR_ETAG (grpc_static_slice_table()[71])
216
+ #define GRPC_MDSTR_ETAG (grpc_static_slice_table()[73])
210
217
  /* "expect" */
211
- #define GRPC_MDSTR_EXPECT (grpc_static_slice_table()[72])
218
+ #define GRPC_MDSTR_EXPECT (grpc_static_slice_table()[74])
212
219
  /* "expires" */
213
- #define GRPC_MDSTR_EXPIRES (grpc_static_slice_table()[73])
220
+ #define GRPC_MDSTR_EXPIRES (grpc_static_slice_table()[75])
214
221
  /* "from" */
215
- #define GRPC_MDSTR_FROM (grpc_static_slice_table()[74])
222
+ #define GRPC_MDSTR_FROM (grpc_static_slice_table()[76])
216
223
  /* "if-match" */
217
- #define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table()[75])
224
+ #define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table()[77])
218
225
  /* "if-modified-since" */
219
- #define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table()[76])
226
+ #define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table()[78])
220
227
  /* "if-none-match" */
221
- #define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table()[77])
228
+ #define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table()[79])
222
229
  /* "if-range" */
223
- #define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table()[78])
230
+ #define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table()[80])
224
231
  /* "if-unmodified-since" */
225
- #define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table()[79])
232
+ #define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table()[81])
226
233
  /* "last-modified" */
227
- #define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table()[80])
234
+ #define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table()[82])
228
235
  /* "link" */
229
- #define GRPC_MDSTR_LINK (grpc_static_slice_table()[81])
236
+ #define GRPC_MDSTR_LINK (grpc_static_slice_table()[83])
230
237
  /* "location" */
231
- #define GRPC_MDSTR_LOCATION (grpc_static_slice_table()[82])
238
+ #define GRPC_MDSTR_LOCATION (grpc_static_slice_table()[84])
232
239
  /* "max-forwards" */
233
- #define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table()[83])
240
+ #define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table()[85])
234
241
  /* "proxy-authenticate" */
235
- #define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table()[84])
242
+ #define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table()[86])
236
243
  /* "proxy-authorization" */
237
- #define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table()[85])
244
+ #define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table()[87])
238
245
  /* "range" */
239
- #define GRPC_MDSTR_RANGE (grpc_static_slice_table()[86])
246
+ #define GRPC_MDSTR_RANGE (grpc_static_slice_table()[88])
240
247
  /* "referer" */
241
- #define GRPC_MDSTR_REFERER (grpc_static_slice_table()[87])
248
+ #define GRPC_MDSTR_REFERER (grpc_static_slice_table()[89])
242
249
  /* "refresh" */
243
- #define GRPC_MDSTR_REFRESH (grpc_static_slice_table()[88])
250
+ #define GRPC_MDSTR_REFRESH (grpc_static_slice_table()[90])
244
251
  /* "retry-after" */
245
- #define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table()[89])
252
+ #define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table()[91])
246
253
  /* "server" */
247
- #define GRPC_MDSTR_SERVER (grpc_static_slice_table()[90])
254
+ #define GRPC_MDSTR_SERVER (grpc_static_slice_table()[92])
248
255
  /* "set-cookie" */
249
- #define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table()[91])
256
+ #define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table()[93])
250
257
  /* "strict-transport-security" */
251
- #define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table()[92])
258
+ #define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table()[94])
252
259
  /* "transfer-encoding" */
253
- #define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table()[93])
260
+ #define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table()[95])
254
261
  /* "vary" */
255
- #define GRPC_MDSTR_VARY (grpc_static_slice_table()[94])
262
+ #define GRPC_MDSTR_VARY (grpc_static_slice_table()[96])
256
263
  /* "via" */
257
- #define GRPC_MDSTR_VIA (grpc_static_slice_table()[95])
264
+ #define GRPC_MDSTR_VIA (grpc_static_slice_table()[97])
258
265
  /* "www-authenticate" */
259
- #define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table()[96])
266
+ #define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table()[98])
260
267
  /* "0" */
261
- #define GRPC_MDSTR_0 (grpc_static_slice_table()[97])
268
+ #define GRPC_MDSTR_0 (grpc_static_slice_table()[99])
262
269
  /* "identity" */
263
- #define GRPC_MDSTR_IDENTITY (grpc_static_slice_table()[98])
270
+ #define GRPC_MDSTR_IDENTITY (grpc_static_slice_table()[100])
264
271
  /* "trailers" */
265
- #define GRPC_MDSTR_TRAILERS (grpc_static_slice_table()[99])
272
+ #define GRPC_MDSTR_TRAILERS (grpc_static_slice_table()[101])
266
273
  /* "application/grpc" */
267
- #define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table()[100])
274
+ #define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table()[102])
268
275
  /* "grpc" */
269
- #define GRPC_MDSTR_GRPC (grpc_static_slice_table()[101])
276
+ #define GRPC_MDSTR_GRPC (grpc_static_slice_table()[103])
270
277
  /* "PUT" */
271
- #define GRPC_MDSTR_PUT (grpc_static_slice_table()[102])
278
+ #define GRPC_MDSTR_PUT (grpc_static_slice_table()[104])
272
279
  /* "lb-cost-bin" */
273
- #define GRPC_MDSTR_LB_COST_BIN (grpc_static_slice_table()[103])
280
+ #define GRPC_MDSTR_LB_COST_BIN (grpc_static_slice_table()[105])
274
281
  /* "identity,deflate" */
275
- #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table()[104])
282
+ #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table()[106])
276
283
  /* "identity,gzip" */
277
- #define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table()[105])
284
+ #define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table()[107])
278
285
  /* "deflate,gzip" */
279
- #define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table()[106])
286
+ #define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table()[108])
280
287
  /* "identity,deflate,gzip" */
281
288
  #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
282
- (grpc_static_slice_table()[107])
289
+ (grpc_static_slice_table()[109])
283
290
 
284
291
  namespace grpc_core {
285
292
  struct StaticSliceRefcount;
@@ -459,4 +459,11 @@ grpc_transport_op* grpc_make_transport_op(grpc_closure* on_consumed);
459
459
  grpc_transport_stream_op_batch* grpc_make_transport_stream_op(
460
460
  grpc_closure* on_consumed);
461
461
 
462
+ namespace grpc_core {
463
+ // This is the key to be used for loading/storing keepalive_throttling in the
464
+ // absl::Status object.
465
+ constexpr const char* kKeepaliveThrottlingKey =
466
+ "grpc.internal.keepalive_throttling";
467
+ } // namespace grpc_core
468
+
462
469
  #endif /* GRPC_CORE_LIB_TRANSPORT_TRANSPORT_H */
@@ -38,11 +38,12 @@
38
38
  /** a size_t default value... maps to all 1's */
39
39
  #define NOT_SET (~(size_t)0)
40
40
 
41
- static grpc_uri* bad_uri(const char* uri_text, size_t pos, const char* section,
42
- bool suppress_errors) {
41
+ static grpc_uri* bad_uri(absl::string_view uri_text, size_t pos,
42
+ const char* section, bool suppress_errors) {
43
43
  if (!suppress_errors) {
44
44
  std::string line_prefix = absl::StrFormat("bad uri.%s: '", section);
45
- gpr_log(GPR_ERROR, "%s%s'", line_prefix.c_str(), uri_text);
45
+ gpr_log(GPR_ERROR, "%s%s'", line_prefix.c_str(),
46
+ std::string(uri_text).c_str());
46
47
  size_t pfx_len = line_prefix.size() + pos;
47
48
  gpr_log(GPR_ERROR, "%s^ here", std::string(pfx_len, ' ').c_str());
48
49
  }
@@ -50,12 +51,12 @@ static grpc_uri* bad_uri(const char* uri_text, size_t pos, const char* section,
50
51
  }
51
52
 
52
53
  /** Returns a copy of percent decoded \a src[begin, end) */
53
- static char* decode_and_copy_component(const char* src, size_t begin,
54
+ static char* decode_and_copy_component(absl::string_view src, size_t begin,
54
55
  size_t end) {
55
56
  grpc_slice component =
56
57
  (begin == NOT_SET || end == NOT_SET)
57
58
  ? grpc_empty_slice()
58
- : grpc_slice_from_copied_buffer(src + begin, end - begin);
59
+ : grpc_slice_from_copied_buffer(src.data() + begin, end - begin);
59
60
  grpc_slice decoded_component =
60
61
  grpc_permissive_percent_decode_slice(component);
61
62
  char* out = grpc_dump_slice(decoded_component, GPR_DUMP_ASCII);
@@ -72,7 +73,7 @@ static bool valid_hex(char c) {
72
73
  /** Returns how many chars to advance if \a uri_text[i] begins a valid \a pchar
73
74
  * production. If \a uri_text[i] introduces an invalid \a pchar (such as percent
74
75
  * sign not followed by two hex digits), NOT_SET is returned. */
75
- static size_t parse_pchar(const char* uri_text, size_t i) {
76
+ static size_t parse_pchar(absl::string_view uri_text, size_t i) {
76
77
  /* pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
77
78
  * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
78
79
  * pct-encoded = "%" HEXDIG HEXDIG
@@ -105,7 +106,8 @@ static size_t parse_pchar(const char* uri_text, size_t i) {
105
106
  case '=':
106
107
  return 1;
107
108
  case '%': /* pct-encoded */
108
- if (valid_hex(uri_text[i + 1]) && valid_hex(uri_text[i + 2])) {
109
+ if (uri_text.size() > i + 2 && valid_hex(uri_text[i + 1]) &&
110
+ valid_hex(uri_text[i + 2])) {
109
111
  return 2;
110
112
  }
111
113
  return NOT_SET;
@@ -114,9 +116,8 @@ static size_t parse_pchar(const char* uri_text, size_t i) {
114
116
  }
115
117
 
116
118
  /* *( pchar / "?" / "/" ) */
117
- static int parse_fragment_or_query(const char* uri_text, size_t* i) {
118
- char c;
119
- while ((c = uri_text[*i]) != 0) {
119
+ static int parse_fragment_or_query(absl::string_view uri_text, size_t* i) {
120
+ while (uri_text.size() > *i) {
120
121
  const size_t advance = parse_pchar(uri_text, *i); /* pchar */
121
122
  switch (advance) {
122
123
  case 0: /* uri_text[i] isn't in pchar */
@@ -178,7 +179,7 @@ static void parse_query_parts(grpc_uri* uri) {
178
179
  }
179
180
  }
180
181
 
181
- grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors) {
182
+ grpc_uri* grpc_uri_parse(absl::string_view uri_text, bool suppress_errors) {
182
183
  grpc_uri* uri;
183
184
  size_t scheme_begin = 0;
184
185
  size_t scheme_end = NOT_SET;
@@ -192,7 +193,7 @@ grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors) {
192
193
  size_t fragment_end = NOT_SET;
193
194
  size_t i;
194
195
 
195
- for (i = scheme_begin; uri_text[i] != 0; i++) {
196
+ for (i = scheme_begin; i < uri_text.size(); ++i) {
196
197
  if (uri_text[i] == ':') {
197
198
  scheme_end = i;
198
199
  break;
@@ -211,15 +212,16 @@ grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors) {
211
212
  return bad_uri(uri_text, i, "scheme", suppress_errors);
212
213
  }
213
214
 
214
- if (uri_text[scheme_end + 1] == '/' && uri_text[scheme_end + 2] == '/') {
215
+ if (uri_text.size() > scheme_end + 2 && uri_text[scheme_end + 1] == '/' &&
216
+ uri_text[scheme_end + 2] == '/') {
215
217
  authority_begin = scheme_end + 3;
216
- for (i = authority_begin; uri_text[i] != 0 && authority_end == NOT_SET;
218
+ for (i = authority_begin; uri_text.size() > i && authority_end == NOT_SET;
217
219
  i++) {
218
220
  if (uri_text[i] == '/' || uri_text[i] == '?' || uri_text[i] == '#') {
219
221
  authority_end = i;
220
222
  }
221
223
  }
222
- if (authority_end == NOT_SET && uri_text[i] == 0) {
224
+ if (authority_end == NOT_SET && uri_text.size() == i) {
223
225
  authority_end = i;
224
226
  }
225
227
  if (authority_end == NOT_SET) {
@@ -231,34 +233,34 @@ grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors) {
231
233
  path_begin = scheme_end + 1;
232
234
  }
233
235
 
234
- for (i = path_begin; uri_text[i] != 0; i++) {
236
+ for (i = path_begin; i < uri_text.size(); ++i) {
235
237
  if (uri_text[i] == '?' || uri_text[i] == '#') {
236
238
  path_end = i;
237
239
  break;
238
240
  }
239
241
  }
240
- if (path_end == NOT_SET && uri_text[i] == 0) {
242
+ if (path_end == NOT_SET && uri_text.size() == i) {
241
243
  path_end = i;
242
244
  }
243
245
  if (path_end == NOT_SET) {
244
246
  return bad_uri(uri_text, i, "path", suppress_errors);
245
247
  }
246
248
 
247
- if (uri_text[i] == '?') {
249
+ if (uri_text.size() > i && uri_text[i] == '?') {
248
250
  query_begin = ++i;
249
251
  if (!parse_fragment_or_query(uri_text, &i)) {
250
252
  return bad_uri(uri_text, i, "query", suppress_errors);
251
- } else if (uri_text[i] != 0 && uri_text[i] != '#') {
253
+ } else if (uri_text.size() > i && uri_text[i] != '#') {
252
254
  /* We must be at the end or at the beginning of a fragment */
253
255
  return bad_uri(uri_text, i, "query", suppress_errors);
254
256
  }
255
257
  query_end = i;
256
258
  }
257
- if (uri_text[i] == '#') {
259
+ if (uri_text.size() > i && uri_text[i] == '#') {
258
260
  fragment_begin = ++i;
259
261
  if (!parse_fragment_or_query(uri_text, &i)) {
260
262
  return bad_uri(uri_text, i - fragment_end, "fragment", suppress_errors);
261
- } else if (uri_text[i] != 0) {
263
+ } else if (uri_text.size() > i) {
262
264
  /* We must be at the end */
263
265
  return bad_uri(uri_text, i, "fragment", suppress_errors);
264
266
  }
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include "absl/strings/string_view.h"
25
+
24
26
  #include <stddef.h>
25
27
 
26
28
  struct grpc_uri {
@@ -37,7 +39,7 @@ struct grpc_uri {
37
39
  char* fragment;
38
40
  };
39
41
  /** parse a uri, return NULL on failure */
40
- grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors);
42
+ grpc_uri* grpc_uri_parse(absl::string_view uri_text, bool suppress_errors);
41
43
 
42
44
  /** return the part of a query string after the '=' in "?key=xxx&...", or NULL
43
45
  * if key is not present */
@@ -334,6 +334,28 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
334
334
  local_service_account);
335
335
  grpc_gcp_AltsContext_set_peer_rpc_versions(
336
336
  context, const_cast<grpc_gcp_RpcProtocolVersions*>(peer_rpc_version));
337
+ grpc_gcp_Identity* peer_identity = const_cast<grpc_gcp_Identity*>(identity);
338
+ if (peer_identity == nullptr) {
339
+ gpr_log(GPR_ERROR, "Null peer identity in ALTS context.");
340
+ return TSI_FAILED_PRECONDITION;
341
+ }
342
+ if (grpc_gcp_Identity_has_attributes(identity)) {
343
+ size_t iter = UPB_MAP_BEGIN;
344
+ grpc_gcp_Identity_AttributesEntry* peer_attributes_entry =
345
+ grpc_gcp_Identity_attributes_nextmutable(peer_identity, &iter);
346
+ while (peer_attributes_entry != nullptr) {
347
+ upb_strview key = grpc_gcp_Identity_AttributesEntry_key(
348
+ const_cast<grpc_gcp_Identity_AttributesEntry*>(
349
+ peer_attributes_entry));
350
+ upb_strview val = grpc_gcp_Identity_AttributesEntry_value(
351
+ const_cast<grpc_gcp_Identity_AttributesEntry*>(
352
+ peer_attributes_entry));
353
+ grpc_gcp_AltsContext_peer_attributes_set(context, key, val,
354
+ context_arena.ptr());
355
+ peer_attributes_entry =
356
+ grpc_gcp_Identity_attributes_nextmutable(peer_identity, &iter);
357
+ }
358
+ }
337
359
  size_t serialized_ctx_length;
338
360
  char* serialized_ctx = grpc_gcp_AltsContext_serialize(
339
361
  context, context_arena.ptr(), &serialized_ctx_length);
@@ -1894,11 +1894,8 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options(
1894
1894
  #else
1895
1895
  ssl_context = SSL_CTX_new(TLSv1_2_method());
1896
1896
  #endif
1897
- // TODO(mattstev): Re-enable TLS 1.3 by using |options.min_tls_version| and
1898
- // |options.max_tls_version|, rather than hardcoding in TLS 1.2 as the min and
1899
- // max.
1900
1897
  result = tsi_set_min_and_max_tls_versions(
1901
- ssl_context, tsi_tls_version::TSI_TLS1_2, tsi_tls_version::TSI_TLS1_2);
1898
+ ssl_context, options->min_tls_version, options->max_tls_version);
1902
1899
  if (result != TSI_OK) return result;
1903
1900
  if (ssl_context == nullptr) {
1904
1901
  gpr_log(GPR_ERROR, "Could not create ssl context.");
@@ -2064,12 +2061,9 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options(
2064
2061
  #else
2065
2062
  impl->ssl_contexts[i] = SSL_CTX_new(TLSv1_2_method());
2066
2063
  #endif
2067
- // TODO(mattstev): Re-enable TLS 1.3 by using |options.min_tls_version|
2068
- // and |options.max_tls_version|, rather than hardcoding in TLS 1.2 as the
2069
- // min and max.
2070
2064
  result = tsi_set_min_and_max_tls_versions(impl->ssl_contexts[i],
2071
- tsi_tls_version::TSI_TLS1_2,
2072
- tsi_tls_version::TSI_TLS1_2);
2065
+ options->min_tls_version,
2066
+ options->max_tls_version);
2073
2067
  if (result != TSI_OK) return result;
2074
2068
  if (impl->ssl_contexts[i] == nullptr) {
2075
2069
  gpr_log(GPR_ERROR, "Could not create ssl context.");