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
@@ -45,16 +45,6 @@ void grpc_iomgr_shutdown_background_closure();
45
45
  */
46
46
  bool grpc_iomgr_run_in_background();
47
47
 
48
- /* Returns true if polling engine is non-polling, false otherwise.
49
- * Currently only 'none' is non-polling.
50
- */
51
- bool grpc_iomgr_non_polling();
52
-
53
- /* Mark the polling engine as non-polling. For internal use only.
54
- * Currently only 'none' is non-polling.
55
- */
56
- void grpc_iomgr_mark_non_polling_internal();
57
-
58
48
  /** Returns true if the caller is a worker thread for any background poller. */
59
49
  bool grpc_iomgr_is_any_background_poller_thread();
60
50
 
@@ -18,8 +18,8 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/ext/filters/client_channel/parse_address.h"
22
21
  #include "src/core/lib/iomgr/grpc_if_nametoindex.h"
22
+ #include "src/core/lib/iomgr/parse_address.h"
23
23
  #include "src/core/lib/iomgr/sockaddr.h"
24
24
  #include "src/core/lib/iomgr/socket_utils.h"
25
25
 
@@ -16,8 +16,8 @@
16
16
  *
17
17
  */
18
18
 
19
- #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H
20
- #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H
19
+ #ifndef GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H
20
+ #define GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -50,4 +50,4 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
50
50
  /* Converts named or numeric port to a uint16 suitable for use in a sockaddr. */
51
51
  uint16_t grpc_strhtons(const char* port);
52
52
 
53
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H */
53
+ #endif /* GRPC_CORE_LIB_IOMGR_PARSE_ADDRESS_H */
@@ -198,7 +198,8 @@ std::string grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
198
198
  return out;
199
199
  }
200
200
 
201
- void grpc_string_to_sockaddr(grpc_resolved_address* out, char* addr, int port) {
201
+ void grpc_string_to_sockaddr(grpc_resolved_address* out, const char* addr,
202
+ int port) {
202
203
  memset(out, 0, sizeof(grpc_resolved_address));
203
204
  grpc_sockaddr_in6* addr6 = (grpc_sockaddr_in6*)out->addr;
204
205
  grpc_sockaddr_in* addr4 = (grpc_sockaddr_in*)out->addr;
@@ -66,7 +66,8 @@ int grpc_sockaddr_set_port(const grpc_resolved_address* addr, int port);
66
66
  std::string grpc_sockaddr_to_string(const grpc_resolved_address* addr,
67
67
  bool normalize);
68
68
 
69
- void grpc_string_to_sockaddr(grpc_resolved_address* out, char* addr, int port);
69
+ void grpc_string_to_sockaddr(grpc_resolved_address* out, const char* addr,
70
+ int port);
70
71
 
71
72
  /* Returns the URI string corresponding to \a addr */
72
73
  std::string grpc_sockaddr_to_uri(const grpc_resolved_address* addr);
@@ -32,6 +32,7 @@
32
32
  #include "src/core/lib/iomgr/error.h"
33
33
  #include "src/core/lib/iomgr/iomgr_custom.h"
34
34
  #include "src/core/lib/iomgr/resource_quota.h"
35
+ #include "src/core/lib/iomgr/sockaddr_utils.h"
35
36
  #include "src/core/lib/iomgr/tcp_client.h"
36
37
  #include "src/core/lib/iomgr/tcp_custom.h"
37
38
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -57,24 +58,24 @@ struct custom_tcp_endpoint {
57
58
  gpr_refcount refcount;
58
59
  grpc_custom_socket* socket;
59
60
 
60
- grpc_closure* read_cb;
61
- grpc_closure* write_cb;
61
+ grpc_closure* read_cb = nullptr;
62
+ grpc_closure* write_cb = nullptr;
62
63
 
63
- grpc_slice_buffer* read_slices;
64
- grpc_slice_buffer* write_slices;
64
+ grpc_slice_buffer* read_slices = nullptr;
65
+ grpc_slice_buffer* write_slices = nullptr;
65
66
 
66
67
  grpc_resource_user* resource_user;
67
68
  grpc_resource_user_slice_allocator slice_allocator;
68
69
 
69
70
  bool shutting_down;
70
71
 
71
- char* peer_string;
72
+ std::string peer_string;
73
+ std::string local_address;
72
74
  };
73
75
  static void tcp_free(grpc_custom_socket* s) {
74
76
  custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)s->endpoint;
75
77
  grpc_resource_user_unref(tcp->resource_user);
76
- gpr_free(tcp->peer_string);
77
- gpr_free(tcp);
78
+ delete tcp;
78
79
  s->refs--;
79
80
  if (s->refs == 0) {
80
81
  grpc_custom_socket_vtable->destroy(s);
@@ -132,7 +133,8 @@ static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error* error) {
132
133
  for (i = 0; i < tcp->read_slices->count; i++) {
133
134
  char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
134
135
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
135
- gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string, dump);
136
+ gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string.c_str(),
137
+ dump);
136
138
  gpr_free(dump);
137
139
  }
138
140
  }
@@ -233,8 +235,8 @@ static void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* write_slices,
233
235
  for (j = 0; j < write_slices->count; j++) {
234
236
  char* data = grpc_dump_slice(write_slices->slices[j],
235
237
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
236
- gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp->socket, tcp->peer_string,
237
- data);
238
+ gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp->socket,
239
+ tcp->peer_string.c_str(), data);
238
240
  gpr_free(data);
239
241
  }
240
242
  }
@@ -317,9 +319,14 @@ static void endpoint_destroy(grpc_endpoint* ep) {
317
319
  grpc_custom_socket_vtable->close(tcp->socket, custom_close_callback);
318
320
  }
319
321
 
320
- static char* endpoint_get_peer(grpc_endpoint* ep) {
322
+ static absl::string_view endpoint_get_peer(grpc_endpoint* ep) {
321
323
  custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
322
- return gpr_strdup(tcp->peer_string);
324
+ return tcp->peer_string;
325
+ }
326
+
327
+ static absl::string_view endpoint_get_local_address(grpc_endpoint* ep) {
328
+ custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
329
+ return tcp->local_address;
323
330
  }
324
331
 
325
332
  static grpc_resource_user* endpoint_get_resource_user(grpc_endpoint* ep) {
@@ -340,27 +347,36 @@ static grpc_endpoint_vtable vtable = {endpoint_read,
340
347
  endpoint_destroy,
341
348
  endpoint_get_resource_user,
342
349
  endpoint_get_peer,
350
+ endpoint_get_local_address,
343
351
  endpoint_get_fd,
344
352
  endpoint_can_track_err};
345
353
 
346
354
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
347
355
  grpc_resource_quota* resource_quota,
348
356
  const char* peer_string) {
349
- custom_tcp_endpoint* tcp =
350
- (custom_tcp_endpoint*)gpr_malloc(sizeof(custom_tcp_endpoint));
357
+ custom_tcp_endpoint* tcp = new custom_tcp_endpoint;
351
358
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
352
359
  grpc_core::ExecCtx exec_ctx;
353
360
 
354
361
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
355
362
  gpr_log(GPR_INFO, "Creating TCP endpoint %p", socket);
356
363
  }
357
- memset(tcp, 0, sizeof(custom_tcp_endpoint));
358
364
  socket->refs++;
359
365
  socket->endpoint = (grpc_endpoint*)tcp;
360
366
  tcp->socket = socket;
361
367
  tcp->base.vtable = &vtable;
362
368
  gpr_ref_init(&tcp->refcount, 1);
363
- tcp->peer_string = gpr_strdup(peer_string);
369
+ tcp->peer_string = peer_string;
370
+ grpc_resolved_address resolved_local_addr;
371
+ resolved_local_addr.len = sizeof(resolved_local_addr.addr);
372
+ if (grpc_custom_socket_vtable->getsockname(
373
+ socket, reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
374
+ reinterpret_cast<int*>(&resolved_local_addr.len)) !=
375
+ GRPC_ERROR_NONE) {
376
+ tcp->local_address = "";
377
+ } else {
378
+ tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
379
+ }
364
380
  tcp->shutting_down = false;
365
381
  tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
366
382
  grpc_resource_user_slice_allocator_init(
@@ -54,6 +54,7 @@
54
54
  #include "src/core/lib/iomgr/buffer_list.h"
55
55
  #include "src/core/lib/iomgr/ev_posix.h"
56
56
  #include "src/core/lib/iomgr/executor.h"
57
+ #include "src/core/lib/iomgr/sockaddr_utils.h"
57
58
  #include "src/core/lib/iomgr/socket_utils_posix.h"
58
59
  #include "src/core/lib/profiling/timers.h"
59
60
  #include "src/core/lib/slice/slice_internal.h"
@@ -351,6 +352,8 @@ using grpc_core::TcpZerocopySendRecord;
351
352
 
352
353
  namespace {
353
354
  struct grpc_tcp {
355
+ grpc_tcp(int max_sends, size_t send_bytes_threshold)
356
+ : tcp_zerocopy_send_ctx(max_sends, send_bytes_threshold) {}
354
357
  grpc_endpoint base;
355
358
  grpc_fd* em_fd;
356
359
  int fd;
@@ -385,7 +388,8 @@ struct grpc_tcp {
385
388
  grpc_closure write_done_closure;
386
389
  grpc_closure error_closure;
387
390
 
388
- char* peer_string;
391
+ std::string peer_string;
392
+ std::string local_address;
389
393
 
390
394
  grpc_resource_user* resource_user;
391
395
  grpc_resource_user_slice_allocator slice_allocator;
@@ -605,7 +609,7 @@ static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) {
605
609
  * choose to retry. */
606
610
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
607
611
  GRPC_ERROR_STR_TARGET_ADDRESS,
608
- grpc_slice_from_copied_string(tcp->peer_string));
612
+ grpc_slice_from_copied_string(tcp->peer_string.c_str()));
609
613
  }
610
614
 
611
615
  static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error);
@@ -623,7 +627,6 @@ static void tcp_free(grpc_tcp* tcp) {
623
627
  "tcp_unref_orphan");
624
628
  grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
625
629
  grpc_resource_user_unref(tcp->resource_user);
626
- gpr_free(tcp->peer_string);
627
630
  /* The lock is not really necessary here, since all refs have been released */
628
631
  gpr_mu_lock(&tcp->tb_mu);
629
632
  grpc_core::TracedBuffer::Shutdown(
@@ -632,8 +635,7 @@ static void tcp_free(grpc_tcp* tcp) {
632
635
  gpr_mu_unlock(&tcp->tb_mu);
633
636
  tcp->outgoing_buffer_arg = nullptr;
634
637
  gpr_mu_destroy(&tcp->tb_mu);
635
- tcp->tcp_zerocopy_send_ctx.~TcpZerocopySendCtx();
636
- gpr_free(tcp);
638
+ delete tcp;
637
639
  }
638
640
 
639
641
  #ifndef NDEBUG
@@ -680,7 +682,8 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error* error) {
680
682
  gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
681
683
  size_t i;
682
684
  const char* str = grpc_error_string(error);
683
- gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp, tcp->peer_string, str);
685
+ gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
686
+ tcp->peer_string.c_str(), str);
684
687
 
685
688
  if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
686
689
  for (i = 0; i < tcp->incoming_buffer->count; i++) {
@@ -1563,7 +1566,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1563
1566
  size_t i;
1564
1567
 
1565
1568
  for (i = 0; i < buf->count; i++) {
1566
- gpr_log(GPR_INFO, "WRITE %p (peer=%s)", tcp, tcp->peer_string);
1569
+ gpr_log(GPR_INFO, "WRITE %p (peer=%s)", tcp, tcp->peer_string.c_str());
1567
1570
  if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1568
1571
  char* data =
1569
1572
  grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
@@ -1637,9 +1640,14 @@ static void tcp_delete_from_pollset_set(grpc_endpoint* ep,
1637
1640
  grpc_pollset_set_del_fd(pollset_set, tcp->em_fd);
1638
1641
  }
1639
1642
 
1640
- static char* tcp_get_peer(grpc_endpoint* ep) {
1643
+ static absl::string_view tcp_get_peer(grpc_endpoint* ep) {
1641
1644
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1642
- return gpr_strdup(tcp->peer_string);
1645
+ return tcp->peer_string;
1646
+ }
1647
+
1648
+ static absl::string_view tcp_get_local_address(grpc_endpoint* ep) {
1649
+ grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1650
+ return tcp->local_address;
1643
1651
  }
1644
1652
 
1645
1653
  static int tcp_get_fd(grpc_endpoint* ep) {
@@ -1677,6 +1685,7 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
1677
1685
  tcp_destroy,
1678
1686
  tcp_get_resource_user,
1679
1687
  tcp_get_peer,
1688
+ tcp_get_local_address,
1680
1689
  tcp_get_fd,
1681
1690
  tcp_can_track_err};
1682
1691
 
@@ -1745,10 +1754,21 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1745
1754
  tcp_read_chunk_size = GPR_CLAMP(tcp_read_chunk_size, tcp_min_read_chunk_size,
1746
1755
  tcp_max_read_chunk_size);
1747
1756
 
1748
- grpc_tcp* tcp = static_cast<grpc_tcp*>(gpr_malloc(sizeof(grpc_tcp)));
1757
+ grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
1758
+ tcp_tx_zerocopy_send_bytes_thresh);
1749
1759
  tcp->base.vtable = &vtable;
1750
- tcp->peer_string = gpr_strdup(peer_string);
1760
+ tcp->peer_string = peer_string;
1751
1761
  tcp->fd = grpc_fd_wrapped_fd(em_fd);
1762
+ grpc_resolved_address resolved_local_addr;
1763
+ memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
1764
+ resolved_local_addr.len = sizeof(resolved_local_addr.addr);
1765
+ if (getsockname(tcp->fd,
1766
+ reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
1767
+ &resolved_local_addr.len) < 0) {
1768
+ tcp->local_address = "";
1769
+ } else {
1770
+ tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
1771
+ }
1752
1772
  tcp->read_cb = nullptr;
1753
1773
  tcp->write_cb = nullptr;
1754
1774
  tcp->current_zerocopy_send = nullptr;
@@ -1765,8 +1785,6 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1765
1785
  tcp->socket_ts_enabled = false;
1766
1786
  tcp->ts_capable = true;
1767
1787
  tcp->outgoing_buffer_arg = nullptr;
1768
- new (&tcp->tcp_zerocopy_send_ctx) TcpZerocopySendCtx(
1769
- tcp_tx_zerocopy_max_simult_sends, tcp_tx_zerocopy_send_bytes_thresh);
1770
1788
  if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
1771
1789
  #ifdef GRPC_LINUX_ERRQUEUE
1772
1790
  const int enable = 1;
@@ -125,17 +125,17 @@ typedef struct grpc_tcp {
125
125
  int shutting_down;
126
126
  grpc_error* shutdown_error;
127
127
 
128
- char* peer_string;
128
+ std::string peer_string;
129
+ std::string local_address;
129
130
  } grpc_tcp;
130
131
 
131
132
  static void tcp_free(grpc_tcp* tcp) {
132
133
  grpc_winsocket_destroy(tcp->socket);
133
134
  gpr_mu_destroy(&tcp->mu);
134
- gpr_free(tcp->peer_string);
135
135
  grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
136
136
  grpc_resource_user_unref(tcp->resource_user);
137
137
  if (tcp->shutting_down) GRPC_ERROR_UNREF(tcp->shutdown_error);
138
- gpr_free(tcp);
138
+ delete tcp;
139
139
  }
140
140
 
141
141
  #ifndef NDEBUG
@@ -213,8 +213,8 @@ static void on_read(void* tcpp, grpc_error* error) {
213
213
  for (i = 0; i < tcp->read_slices->count; i++) {
214
214
  char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
215
215
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
216
- gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string,
217
- dump);
216
+ gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp,
217
+ tcp->peer_string.c_str(), dump);
218
218
  gpr_free(dump);
219
219
  }
220
220
  }
@@ -361,7 +361,8 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
361
361
  for (i = 0; i < slices->count; i++) {
362
362
  char* data =
363
363
  grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
364
- gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string, data);
364
+ gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string.c_str(),
365
+ data);
365
366
  gpr_free(data);
366
367
  }
367
368
  }
@@ -475,9 +476,14 @@ static void win_destroy(grpc_endpoint* ep) {
475
476
  TCP_UNREF(tcp, "destroy");
476
477
  }
477
478
 
478
- static char* win_get_peer(grpc_endpoint* ep) {
479
+ static absl::string_view win_get_peer(grpc_endpoint* ep) {
479
480
  grpc_tcp* tcp = (grpc_tcp*)ep;
480
- return gpr_strdup(tcp->peer_string);
481
+ return tcp->peer_string;
482
+ }
483
+
484
+ static absl::string_view win_get_local_address(grpc_endpoint* ep) {
485
+ grpc_tcp* tcp = (grpc_tcp*)ep;
486
+ return tcp->local_address;
481
487
  }
482
488
 
483
489
  static grpc_resource_user* win_get_resource_user(grpc_endpoint* ep) {
@@ -498,6 +504,7 @@ static grpc_endpoint_vtable vtable = {win_read,
498
504
  win_destroy,
499
505
  win_get_resource_user,
500
506
  win_get_peer,
507
+ win_get_local_address,
501
508
  win_get_fd,
502
509
  win_can_track_err};
503
510
 
@@ -514,7 +521,7 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
514
521
  }
515
522
  }
516
523
  }
517
- grpc_tcp* tcp = (grpc_tcp*)gpr_malloc(sizeof(grpc_tcp));
524
+ grpc_tcp* tcp = new grpc_tcp;
518
525
  memset(tcp, 0, sizeof(grpc_tcp));
519
526
  tcp->base.vtable = &vtable;
520
527
  tcp->socket = socket;
@@ -522,7 +529,16 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
522
529
  gpr_ref_init(&tcp->refcount, 1);
523
530
  GRPC_CLOSURE_INIT(&tcp->on_read, on_read, tcp, grpc_schedule_on_exec_ctx);
524
531
  GRPC_CLOSURE_INIT(&tcp->on_write, on_write, tcp, grpc_schedule_on_exec_ctx);
525
- tcp->peer_string = gpr_strdup(peer_string);
532
+ grpc_resolved_address resolved_local_addr;
533
+ resolved_local_addr.len = sizeof(resolved_local_addr.addr);
534
+ if (getsockname(tcp->socket->socket,
535
+ reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
536
+ &resolved_local_addr.len) < 0) {
537
+ tcp->local_address = "";
538
+ } else {
539
+ tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
540
+ }
541
+ tcp->peer_string = peer_string;
526
542
  grpc_slice_buffer_init(&tcp->last_read_buffer);
527
543
  tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
528
544
  grpc_resource_quota_unref_internal(resource_quota);
@@ -0,0 +1,177 @@
1
+ // Copyright 2020 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include <grpc/support/port_platform.h>
16
+
17
+ #include "absl/memory/memory.h"
18
+
19
+ #include "src/core/lib/security/authorization/authorization_engine.h"
20
+
21
+ namespace grpc_core {
22
+
23
+ namespace {
24
+
25
+ // Symbols for traversing Envoy Attributes
26
+ constexpr char kUrlPath[] = "url_path";
27
+ constexpr char kHost[] = "host";
28
+ constexpr char kMethod[] = "method";
29
+ constexpr char kHeaders[] = "headers";
30
+ constexpr char kSourceAddress[] = "source_address";
31
+ constexpr char kSourcePort[] = "source_port";
32
+ constexpr char kDestinationAddress[] = "destination_address";
33
+ constexpr char kDestinationPort[] = "destination_port";
34
+ constexpr char kSpiffeId[] = "spiffe_id";
35
+ constexpr char kCertServerName[] = "cert_server_name";
36
+
37
+ } // namespace
38
+
39
+ std::unique_ptr<AuthorizationEngine>
40
+ AuthorizationEngine::CreateAuthorizationEngine(
41
+ const std::vector<envoy_config_rbac_v3_RBAC*>& rbac_policies) {
42
+ if (rbac_policies.empty() || rbac_policies.size() > 2) {
43
+ gpr_log(GPR_ERROR,
44
+ "Invalid rbac policies vector. Must contain either one or two rbac "
45
+ "policies.");
46
+ return nullptr;
47
+ } else if (rbac_policies.size() == 2 &&
48
+ (envoy_config_rbac_v3_RBAC_action(rbac_policies[0]) != kDeny ||
49
+ envoy_config_rbac_v3_RBAC_action(rbac_policies[1]) != kAllow)) {
50
+ gpr_log(GPR_ERROR,
51
+ "Invalid rbac policies vector. Must contain one deny \
52
+ policy and one allow policy, in that order.");
53
+ return nullptr;
54
+ } else {
55
+ return absl::make_unique<AuthorizationEngine>(rbac_policies);
56
+ }
57
+ }
58
+
59
+ AuthorizationEngine::AuthorizationEngine(
60
+ const std::vector<envoy_config_rbac_v3_RBAC*>& rbac_policies) {
61
+ for (const auto& rbac_policy : rbac_policies) {
62
+ // Extract array of policies and store their condition fields in either
63
+ // allow_if_matched_ or deny_if_matched_, depending on the policy action.
64
+ upb::Arena temp_arena;
65
+ size_t policy_num = UPB_MAP_BEGIN;
66
+ const envoy_config_rbac_v3_RBAC_PoliciesEntry* policy_entry;
67
+ while ((policy_entry = envoy_config_rbac_v3_RBAC_policies_next(
68
+ rbac_policy, &policy_num)) != nullptr) {
69
+ const upb_strview policy_name_strview =
70
+ envoy_config_rbac_v3_RBAC_PoliciesEntry_key(policy_entry);
71
+ const std::string policy_name(policy_name_strview.data,
72
+ policy_name_strview.size);
73
+ const envoy_config_rbac_v3_Policy* policy =
74
+ envoy_config_rbac_v3_RBAC_PoliciesEntry_value(policy_entry);
75
+ const google_api_expr_v1alpha1_Expr* condition =
76
+ envoy_config_rbac_v3_Policy_condition(policy);
77
+ // Parse condition to make a pointer tied to the lifetime of arena_.
78
+ size_t serial_len;
79
+ const char* serialized = google_api_expr_v1alpha1_Expr_serialize(
80
+ condition, temp_arena.ptr(), &serial_len);
81
+ const google_api_expr_v1alpha1_Expr* parsed_condition =
82
+ google_api_expr_v1alpha1_Expr_parse(serialized, serial_len,
83
+ arena_.ptr());
84
+ if (envoy_config_rbac_v3_RBAC_action(rbac_policy) == kAllow) {
85
+ allow_if_matched_.insert(std::make_pair(policy_name, parsed_condition));
86
+ } else {
87
+ deny_if_matched_.insert(std::make_pair(policy_name, parsed_condition));
88
+ }
89
+ }
90
+ }
91
+ }
92
+
93
+ std::unique_ptr<mock_cel::Activation> AuthorizationEngine::CreateActivation(
94
+ const EvaluateArgs& args) {
95
+ std::unique_ptr<mock_cel::Activation> activation;
96
+ for (const auto& elem : envoy_attributes_) {
97
+ if (elem == kUrlPath) {
98
+ absl::string_view url_path(args.GetPath());
99
+ if (!url_path.empty()) {
100
+ activation->InsertValue(kUrlPath,
101
+ mock_cel::CelValue::CreateStringView(url_path));
102
+ }
103
+ } else if (elem == kHost) {
104
+ absl::string_view host(args.GetHost());
105
+ if (!host.empty()) {
106
+ activation->InsertValue(kHost,
107
+ mock_cel::CelValue::CreateStringView(host));
108
+ }
109
+ } else if (elem == kMethod) {
110
+ absl::string_view method(args.GetMethod());
111
+ if (!method.empty()) {
112
+ activation->InsertValue(kMethod,
113
+ mock_cel::CelValue::CreateStringView(method));
114
+ }
115
+ } else if (elem == kHeaders) {
116
+ std::multimap<absl::string_view, absl::string_view> headers =
117
+ args.GetHeaders();
118
+ std::vector<std::pair<mock_cel::CelValue, mock_cel::CelValue>>
119
+ header_items;
120
+ for (const auto& header_key : header_keys_) {
121
+ auto header_item = headers.find(header_key);
122
+ if (header_item != headers.end()) {
123
+ header_items.push_back(
124
+ std::pair<mock_cel::CelValue, mock_cel::CelValue>(
125
+ mock_cel::CelValue::CreateStringView(header_key),
126
+ mock_cel::CelValue::CreateStringView(header_item->second)));
127
+ }
128
+ }
129
+ headers_ = mock_cel::ContainerBackedMapImpl::Create(
130
+ absl::Span<std::pair<mock_cel::CelValue, mock_cel::CelValue>>(
131
+ header_items));
132
+ activation->InsertValue(kHeaders,
133
+ mock_cel::CelValue::CreateMap(headers_.get()));
134
+ } else if (elem == kSourceAddress) {
135
+ absl::string_view source_address(args.GetPeerAddress());
136
+ if (!source_address.empty()) {
137
+ activation->InsertValue(
138
+ kSourceAddress,
139
+ mock_cel::CelValue::CreateStringView(source_address));
140
+ }
141
+ } else if (elem == kSourcePort) {
142
+ activation->InsertValue(
143
+ kSourcePort, mock_cel::CelValue::CreateInt64(args.GetPeerPort()));
144
+ } else if (elem == kDestinationAddress) {
145
+ absl::string_view destination_address(args.GetLocalAddress());
146
+ if (!destination_address.empty()) {
147
+ activation->InsertValue(
148
+ kDestinationAddress,
149
+ mock_cel::CelValue::CreateStringView(destination_address));
150
+ }
151
+ } else if (elem == kDestinationPort) {
152
+ activation->InsertValue(kDestinationPort, mock_cel::CelValue::CreateInt64(
153
+ args.GetLocalPort()));
154
+ } else if (elem == kSpiffeId) {
155
+ absl::string_view spiffe_id(args.GetSpiffeId());
156
+ if (!spiffe_id.empty()) {
157
+ activation->InsertValue(
158
+ kSpiffeId, mock_cel::CelValue::CreateStringView(spiffe_id));
159
+ }
160
+ } else if (elem == kCertServerName) {
161
+ absl::string_view cert_server_name(args.GetCertServerName());
162
+ if (!cert_server_name.empty()) {
163
+ activation->InsertValue(
164
+ kCertServerName,
165
+ mock_cel::CelValue::CreateStringView(cert_server_name));
166
+ }
167
+ } else {
168
+ gpr_log(GPR_ERROR,
169
+ "Error: Authorization engine does not support evaluating "
170
+ "attribute %s.",
171
+ elem.c_str());
172
+ }
173
+ }
174
+ return activation;
175
+ }
176
+
177
+ } // namespace grpc_core