grpc 1.36.0 → 1.38.0

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 (680) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +126 -92
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +15 -1
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +7 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +715 -3166
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  20. data/src/core/ext/filters/client_channel/config_selector.h +9 -1
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  24. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
  25. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  26. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  27. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  28. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  29. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
  30. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  35. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  36. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  37. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  40. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +29 -44
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +86 -63
  46. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  48. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  49. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  50. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  51. data/src/core/ext/filters/client_channel/resolver.cc +3 -0
  52. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +38 -33
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  62. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  63. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  64. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  65. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -14
  66. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  67. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +334 -114
  68. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  69. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  70. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  71. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  72. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  73. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  74. data/src/core/ext/filters/client_channel/server_address.cc +4 -1
  75. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  76. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  77. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  78. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  79. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  80. data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
  81. data/src/core/ext/filters/client_channel/subchannel.h +68 -99
  82. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  83. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
  84. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  85. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  86. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
  87. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  88. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  89. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  90. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  91. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  92. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  93. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  94. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  95. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  96. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  97. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  98. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
  99. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
  100. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  101. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
  102. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
  103. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
  104. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +485 -199
  105. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  106. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  107. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
  108. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  109. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
  110. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
  111. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  112. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  113. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  114. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  115. data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
  116. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  118. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  120. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  121. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  122. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  124. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  125. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  126. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  128. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  130. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  131. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  132. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  133. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  134. data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
  135. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  137. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  138. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  139. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  140. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
  141. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
  144. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  145. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  146. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  147. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  148. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -0
  149. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +44 -0
  150. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  151. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  152. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
  153. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
  154. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
  155. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
  156. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +6 -5
  157. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +13 -9
  158. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
  159. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
  160. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  161. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  162. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  163. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  164. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  165. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  166. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  167. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  168. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
  169. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
  170. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
  171. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
  172. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  173. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  174. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  175. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  176. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +13 -7
  177. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  178. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  179. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  180. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
  181. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  182. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
  183. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  184. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +21 -20
  185. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
  186. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
  187. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  188. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  189. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  190. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  191. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  192. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  193. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  194. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  195. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  196. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  197. data/src/core/ext/xds/xds_api.cc +1649 -329
  198. data/src/core/ext/xds/xds_api.h +284 -44
  199. data/src/core/ext/xds/xds_bootstrap.cc +110 -156
  200. data/src/core/ext/xds/xds_bootstrap.h +24 -25
  201. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  202. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  203. data/src/core/ext/xds/xds_channel_args.h +5 -2
  204. data/src/core/ext/xds/xds_client.cc +454 -177
  205. data/src/core/ext/xds/xds_client.h +62 -22
  206. data/src/core/ext/xds/xds_client_stats.h +5 -4
  207. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  208. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  209. data/src/core/ext/xds/xds_http_filters.cc +114 -0
  210. data/src/core/ext/xds/xds_http_filters.h +130 -0
  211. data/src/core/ext/xds/xds_server_config_fetcher.cc +410 -131
  212. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  213. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  214. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +107 -4
  215. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
  216. data/src/core/lib/channel/channel_stack.cc +22 -9
  217. data/src/core/lib/channel/channel_stack.h +17 -9
  218. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  219. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  220. data/src/core/lib/channel/channelz.cc +108 -12
  221. data/src/core/lib/channel/channelz.h +30 -1
  222. data/src/core/lib/channel/channelz_registry.cc +14 -0
  223. data/src/core/lib/channel/connected_channel.cc +4 -4
  224. data/src/core/lib/channel/handshaker.cc +7 -45
  225. data/src/core/lib/channel/handshaker.h +5 -22
  226. data/src/core/lib/channel/status_util.cc +12 -2
  227. data/src/core/lib/channel/status_util.h +5 -0
  228. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  229. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  230. data/src/core/lib/gpr/sync_abseil.cc +3 -6
  231. data/src/core/lib/gpr/sync_windows.cc +2 -2
  232. data/src/core/lib/gprpp/atomic.h +3 -3
  233. data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
  234. data/src/core/lib/gprpp/ref_counted.h +28 -14
  235. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
  236. data/src/core/lib/gprpp/status_helper.cc +407 -0
  237. data/src/core/lib/gprpp/status_helper.h +180 -0
  238. data/src/core/lib/gprpp/thd.h +1 -1
  239. data/src/core/lib/http/httpcli.cc +11 -11
  240. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  241. data/src/core/lib/http/parser.cc +16 -16
  242. data/src/core/lib/http/parser.h +4 -4
  243. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  244. data/src/core/lib/iomgr/buffer_list.h +5 -6
  245. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  246. data/src/core/lib/iomgr/call_combiner.h +12 -14
  247. data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
  248. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  249. data/src/core/lib/iomgr/closure.h +7 -6
  250. data/src/core/lib/iomgr/combiner.cc +14 -12
  251. data/src/core/lib/iomgr/combiner.h +2 -2
  252. data/src/core/lib/iomgr/endpoint.cc +1 -1
  253. data/src/core/lib/iomgr/endpoint.h +2 -2
  254. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  255. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  256. data/src/core/lib/iomgr/error.cc +167 -61
  257. data/src/core/lib/iomgr/error.h +218 -107
  258. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  259. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  260. data/src/core/lib/iomgr/error_internal.h +5 -1
  261. data/src/core/lib/iomgr/ev_apple.cc +6 -6
  262. data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
  263. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  264. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  265. data/src/core/lib/iomgr/ev_posix.cc +12 -11
  266. data/src/core/lib/iomgr/ev_posix.h +9 -9
  267. data/src/core/lib/iomgr/exec_ctx.cc +10 -6
  268. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  269. data/src/core/lib/iomgr/executor.cc +8 -8
  270. data/src/core/lib/iomgr/executor.h +2 -2
  271. data/src/core/lib/iomgr/iomgr.cc +1 -1
  272. data/src/core/lib/iomgr/iomgr.h +1 -1
  273. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  274. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  275. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  276. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  277. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  278. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  279. data/src/core/lib/iomgr/load_file.cc +4 -4
  280. data/src/core/lib/iomgr/load_file.h +2 -2
  281. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  282. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  283. data/src/core/lib/iomgr/pollset.cc +5 -5
  284. data/src/core/lib/iomgr/pollset.h +9 -9
  285. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  286. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  287. data/src/core/lib/iomgr/port.h +1 -1
  288. data/src/core/lib/iomgr/python_util.h +1 -1
  289. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  290. data/src/core/lib/iomgr/resolve_address.h +6 -6
  291. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  292. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  293. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  294. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  295. data/src/core/lib/iomgr/resource_quota.cc +12 -11
  296. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  297. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  298. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  299. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  300. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  301. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  302. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  303. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  304. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  305. data/src/core/lib/iomgr/tcp_posix.cc +37 -38
  306. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  307. data/src/core/lib/iomgr/tcp_server.h +12 -11
  308. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  309. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  310. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  311. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  312. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  313. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  314. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  315. data/src/core/lib/iomgr/tcp_uv.cc +27 -25
  316. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  317. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  318. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  319. data/src/core/lib/iomgr/timer_custom.h +1 -1
  320. data/src/core/lib/iomgr/timer_generic.cc +8 -8
  321. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  322. data/src/core/lib/iomgr/udp_server.cc +21 -20
  323. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  324. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  325. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  326. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  327. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  328. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  329. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  330. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  331. data/src/core/lib/iomgr/work_serializer.h +17 -1
  332. data/src/core/lib/json/json.h +1 -1
  333. data/src/core/lib/json/json_reader.cc +4 -4
  334. data/src/core/lib/{security/authorization → matchers}/matchers.cc +47 -47
  335. data/src/core/lib/{security/authorization → matchers}/matchers.h +42 -40
  336. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  337. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  338. data/src/core/lib/security/credentials/credentials.h +2 -2
  339. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  340. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  341. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  342. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  343. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  344. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  345. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  346. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  347. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  348. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  349. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  350. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  351. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  352. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  353. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  354. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  355. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  356. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  357. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  358. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  359. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  360. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  361. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  362. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  363. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  364. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  365. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  366. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  367. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  368. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  369. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  370. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  371. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  372. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  373. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  374. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  375. data/src/core/lib/security/security_connector/ssl_utils.cc +28 -8
  376. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  377. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +62 -60
  378. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  379. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  380. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  381. data/src/core/lib/security/transport/security_handshaker.cc +65 -34
  382. data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
  383. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  384. data/src/core/lib/security/transport/tsi_error.h +2 -1
  385. data/src/core/lib/security/util/json_util.cc +2 -2
  386. data/src/core/lib/security/util/json_util.h +1 -1
  387. data/src/core/lib/slice/slice_intern.cc +6 -7
  388. data/src/core/lib/surface/call.cc +46 -45
  389. data/src/core/lib/surface/call.h +2 -2
  390. data/src/core/lib/surface/channel.cc +6 -6
  391. data/src/core/lib/surface/channel.h +6 -5
  392. data/src/core/lib/surface/channel_ping.cc +1 -1
  393. data/src/core/lib/surface/completion_queue.cc +46 -47
  394. data/src/core/lib/surface/completion_queue.h +2 -1
  395. data/src/core/lib/surface/lame_client.cc +43 -24
  396. data/src/core/lib/surface/lame_client.h +4 -3
  397. data/src/core/lib/surface/server.cc +68 -55
  398. data/src/core/lib/surface/server.h +89 -29
  399. data/src/core/lib/surface/validate_metadata.cc +7 -7
  400. data/src/core/lib/surface/validate_metadata.h +3 -2
  401. data/src/core/lib/surface/version.cc +4 -2
  402. data/src/core/lib/transport/byte_stream.cc +5 -5
  403. data/src/core/lib/transport/byte_stream.h +8 -8
  404. data/src/core/lib/transport/connectivity_state.cc +1 -1
  405. data/src/core/lib/transport/error_utils.cc +19 -8
  406. data/src/core/lib/transport/error_utils.h +11 -5
  407. data/src/core/lib/transport/metadata_batch.cc +64 -37
  408. data/src/core/lib/transport/metadata_batch.h +33 -18
  409. data/src/core/lib/transport/transport.cc +4 -3
  410. data/src/core/lib/transport/transport.h +4 -4
  411. data/src/core/lib/transport/transport_op_string.cc +5 -5
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  413. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +6 -8
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  416. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  417. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  418. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
  419. data/src/core/tsi/fake_transport_security.cc +10 -1
  420. data/src/core/tsi/ssl_transport_security.cc +32 -14
  421. data/src/core/tsi/ssl_transport_security.h +3 -4
  422. data/src/ruby/bin/math_services_pb.rb +1 -1
  423. data/src/ruby/ext/grpc/extconf.rb +9 -1
  424. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  425. data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
  426. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  427. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  428. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  429. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  430. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  431. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
  432. data/src/ruby/ext/grpc/rb_server.c +13 -1
  433. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  434. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  435. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  436. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  437. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  438. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  439. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  440. data/src/ruby/lib/grpc/version.rb +1 -1
  441. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  442. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  443. data/src/ruby/spec/call_spec.rb +1 -1
  444. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  445. data/src/ruby/spec/channel_spec.rb +17 -6
  446. data/src/ruby/spec/client_auth_spec.rb +27 -1
  447. data/src/ruby/spec/errors_spec.rb +1 -1
  448. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  449. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  450. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  451. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  452. data/src/ruby/spec/server_spec.rb +22 -0
  453. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  454. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  455. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  456. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  457. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  458. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  459. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  460. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  461. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  462. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  463. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  464. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  465. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  466. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  467. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  468. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  469. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  470. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  471. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  472. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  473. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  474. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  475. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  476. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  477. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  478. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  479. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  480. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  481. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  482. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  483. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  484. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  485. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  486. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  487. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  488. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  489. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  490. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  491. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  492. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  493. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  494. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  495. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  496. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  497. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  498. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  499. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  500. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  501. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  502. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  503. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  504. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  505. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  506. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  507. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  508. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  509. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  510. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  511. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  512. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  513. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  514. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  515. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  516. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  517. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  518. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  519. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  520. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  521. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  522. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  523. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  524. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  525. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  526. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  527. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  528. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  529. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  530. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  531. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  532. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  533. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  534. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  535. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  536. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  537. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  538. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  539. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  540. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  541. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  542. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  543. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  544. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  545. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  546. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  547. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  548. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  549. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  550. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  551. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  552. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  553. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  554. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  555. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  556. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  557. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  558. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  559. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  560. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  561. data/third_party/boringssl-with-bazel/err_data.c +478 -462
  562. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  563. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  564. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  565. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  566. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  567. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  568. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  569. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  570. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  571. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  572. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  573. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  574. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  575. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  576. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  577. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  584. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  585. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  586. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  587. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  588. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  589. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  590. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  591. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  592. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  593. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  594. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +7 -5
  595. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  596. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  597. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  598. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  599. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  600. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  601. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  602. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  603. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  604. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  605. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  606. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  607. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  608. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  609. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  610. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  611. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  612. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  613. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -30
  614. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  615. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  616. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  617. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  618. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  619. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  620. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  621. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  622. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
  623. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  624. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  625. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  626. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  627. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  628. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  629. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -4
  630. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  631. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  632. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  633. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  634. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  635. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  636. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  637. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  638. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  639. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  640. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  641. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +210 -26
  642. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  643. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -122
  644. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  645. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  646. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  647. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  648. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  649. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  650. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  651. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  652. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  653. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  654. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  655. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +131 -83
  656. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  657. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  658. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  659. data/third_party/xxhash/xxhash.h +5443 -0
  660. metadata +128 -61
  661. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  662. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  663. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  664. data/src/core/lib/security/authorization/authorization_engine.h +0 -84
  665. data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
  666. data/src/core/lib/security/authorization/evaluate_args.h +0 -59
  667. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  668. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  669. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  670. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -99
  671. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  672. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  673. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  674. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
  675. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  676. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  677. data/third_party/upb/upb/json_decode.c +0 -1443
  678. data/third_party/upb/upb/json_decode.h +0 -23
  679. data/third_party/upb/upb/json_encode.c +0 -713
  680. data/third_party/upb/upb/json_encode.h +0 -36
@@ -63,7 +63,7 @@ grpc_slice GetSystemRootCerts() {
63
63
  grpc_slice valid_bundle_slice = grpc_empty_slice();
64
64
  size_t num_cert_files_ = GPR_ARRAY_SIZE(kLinuxCertFiles);
65
65
  for (size_t i = 0; i < num_cert_files_; i++) {
66
- grpc_error* error =
66
+ grpc_error_handle error =
67
67
  grpc_load_file(kLinuxCertFiles[i], 1, &valid_bundle_slice);
68
68
  if (error == GRPC_ERROR_NONE) {
69
69
  return valid_bundle_slice;
@@ -29,12 +29,12 @@
29
29
  #include <grpc/support/string_util.h>
30
30
 
31
31
  #include "src/core/ext/filters/client_channel/client_channel.h"
32
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
32
33
  #include "src/core/lib/channel/channel_args.h"
33
34
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
34
35
  #include "src/core/lib/iomgr/pollset.h"
35
36
  #include "src/core/lib/iomgr/resolve_address.h"
36
37
  #include "src/core/lib/iomgr/sockaddr.h"
37
- #include "src/core/lib/iomgr/sockaddr_utils.h"
38
38
  #include "src/core/lib/iomgr/socket_utils.h"
39
39
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
40
40
  #include "src/core/lib/security/credentials/local/local_credentials.h"
@@ -103,7 +103,7 @@ void local_check_peer(tsi_peer peer, grpc_endpoint* ep,
103
103
  }
104
104
  }
105
105
  }
106
- grpc_error* error = GRPC_ERROR_NONE;
106
+ grpc_error_handle error = GRPC_ERROR_NONE;
107
107
  if (!is_endpoint_local) {
108
108
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
109
109
  "Endpoint is neither UDS or TCP loopback address.");
@@ -181,10 +181,15 @@ class grpc_local_channel_security_connector final
181
181
  creds->connect_type());
182
182
  }
183
183
 
184
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
185
+ grpc_error_handle error) override {
186
+ GRPC_ERROR_UNREF(error);
187
+ }
188
+
184
189
  bool check_call_host(absl::string_view host,
185
190
  grpc_auth_context* /*auth_context*/,
186
191
  grpc_closure* /*on_call_host_checked*/,
187
- grpc_error** error) override {
192
+ grpc_error_handle* error) override {
188
193
  if (host.empty() || host != target_name_) {
189
194
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
190
195
  "local call host does not match target name");
@@ -193,7 +198,7 @@ class grpc_local_channel_security_connector final
193
198
  }
194
199
 
195
200
  void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
196
- grpc_error* error) override {
201
+ grpc_error_handle error) override {
197
202
  GRPC_ERROR_UNREF(error);
198
203
  }
199
204
 
@@ -230,6 +235,11 @@ class grpc_local_server_security_connector final
230
235
  creds->connect_type());
231
236
  }
232
237
 
238
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
239
+ grpc_error_handle error) override {
240
+ GRPC_ERROR_UNREF(error);
241
+ }
242
+
233
243
  int cmp(const grpc_security_connector* other) const override {
234
244
  return server_security_connector_cmp(
235
245
  static_cast<const grpc_server_security_connector*>(other));
@@ -55,13 +55,18 @@ class grpc_security_connector
55
55
  url_scheme_(url_scheme) {}
56
56
  ~grpc_security_connector() override = default;
57
57
 
58
- /* Check the peer. Callee takes ownership of the peer object.
59
- When done, sets *auth_context and invokes on_peer_checked. */
58
+ // Checks the peer. Callee takes ownership of the peer object.
59
+ // When done, sets *auth_context and invokes on_peer_checked.
60
60
  virtual void check_peer(
61
61
  tsi_peer peer, grpc_endpoint* ep,
62
62
  grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
63
63
  grpc_closure* on_peer_checked) = 0;
64
64
 
65
+ // Cancels the pending check_peer() request associated with on_peer_checked.
66
+ // If there is no such request pending, this is a no-op.
67
+ virtual void cancel_check_peer(grpc_closure* on_peer_checked,
68
+ grpc_error_handle error) = 0;
69
+
65
70
  /* Compares two security connectors. */
66
71
  virtual int cmp(const grpc_security_connector* other) const = 0;
67
72
 
@@ -103,12 +108,12 @@ class grpc_channel_security_connector : public grpc_security_connector {
103
108
  virtual bool check_call_host(absl::string_view host,
104
109
  grpc_auth_context* auth_context,
105
110
  grpc_closure* on_call_host_checked,
106
- grpc_error** error) = 0;
111
+ grpc_error_handle* error) = 0;
107
112
  /// Cancels a pending asynchronous call to
108
113
  /// grpc_channel_security_connector_check_call_host() with
109
114
  /// \a on_call_host_checked as its callback.
110
115
  virtual void cancel_check_call_host(grpc_closure* on_call_host_checked,
111
- grpc_error* error) = 0;
116
+ grpc_error_handle error) = 0;
112
117
  /// Registers handshakers with \a handshake_mgr.
113
118
  virtual void add_handshakers(const grpc_channel_args* args,
114
119
  grpc_pollset_set* interested_parties,
@@ -45,10 +45,10 @@
45
45
  #include "src/core/tsi/transport_security.h"
46
46
 
47
47
  namespace {
48
- grpc_error* ssl_check_peer(
48
+ grpc_error_handle ssl_check_peer(
49
49
  const char* peer_name, const tsi_peer* peer,
50
50
  grpc_core::RefCountedPtr<grpc_auth_context>* auth_context) {
51
- grpc_error* error = grpc_ssl_check_alpn(peer);
51
+ grpc_error_handle error = grpc_ssl_check_alpn(peer);
52
52
  if (error != GRPC_ERROR_NONE) {
53
53
  return error;
54
54
  }
@@ -145,7 +145,7 @@ class grpc_ssl_channel_security_connector final
145
145
  const char* target_name = overridden_target_name_.empty()
146
146
  ? target_name_.c_str()
147
147
  : overridden_target_name_.c_str();
148
- grpc_error* error = ssl_check_peer(target_name, &peer, auth_context);
148
+ grpc_error_handle error = ssl_check_peer(target_name, &peer, auth_context);
149
149
  if (error == GRPC_ERROR_NONE &&
150
150
  verify_options_->verify_peer_callback != nullptr) {
151
151
  const tsi_peer_property* p =
@@ -173,6 +173,11 @@ class grpc_ssl_channel_security_connector final
173
173
  tsi_peer_destruct(&peer);
174
174
  }
175
175
 
176
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
177
+ grpc_error_handle error) override {
178
+ GRPC_ERROR_UNREF(error);
179
+ }
180
+
176
181
  int cmp(const grpc_security_connector* other_sc) const override {
177
182
  auto* other =
178
183
  reinterpret_cast<const grpc_ssl_channel_security_connector*>(other_sc);
@@ -185,14 +190,14 @@ class grpc_ssl_channel_security_connector final
185
190
 
186
191
  bool check_call_host(absl::string_view host, grpc_auth_context* auth_context,
187
192
  grpc_closure* /*on_call_host_checked*/,
188
- grpc_error** error) override {
193
+ grpc_error_handle* error) override {
189
194
  return grpc_ssl_check_call_host(host, target_name_.c_str(),
190
195
  overridden_target_name_.c_str(),
191
196
  auth_context, error);
192
197
  }
193
198
 
194
199
  void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
195
- grpc_error* error) override {
200
+ grpc_error_handle error) override {
196
201
  GRPC_ERROR_UNREF(error);
197
202
  }
198
203
 
@@ -288,11 +293,16 @@ class grpc_ssl_server_security_connector
288
293
  void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
289
294
  grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
290
295
  grpc_closure* on_peer_checked) override {
291
- grpc_error* error = ssl_check_peer(nullptr, &peer, auth_context);
296
+ grpc_error_handle error = ssl_check_peer(nullptr, &peer, auth_context);
292
297
  tsi_peer_destruct(&peer);
293
298
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
294
299
  }
295
300
 
301
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
302
+ grpc_error_handle error) override {
303
+ GRPC_ERROR_UNREF(error);
304
+ }
305
+
296
306
  int cmp(const grpc_security_connector* other) const override {
297
307
  return server_security_connector_cmp(
298
308
  static_cast<const grpc_server_security_connector*>(other));
@@ -41,11 +41,13 @@
41
41
 
42
42
  /* -- Constants. -- */
43
43
 
44
- #ifndef INSTALL_PREFIX
45
- static const char* installed_roots_path = "/usr/share/grpc/roots.pem";
46
- #else
44
+ #if defined(GRPC_ROOT_PEM_PATH)
45
+ static const char* installed_roots_path = GRPC_ROOT_PEM_PATH;
46
+ #elif defined(INSTALL_PREFIX)
47
47
  static const char* installed_roots_path =
48
- INSTALL_PREFIX "/share/grpc/roots.pem";
48
+ INSTALL_PREFIX "/usr/share/grpc/roots.pem";
49
+ #else
50
+ static const char* installed_roots_path = "/usr/share/grpc/roots.pem";
49
51
  #endif
50
52
 
51
53
  #ifndef TSI_OPENSSL_ALPN_SUPPORT
@@ -150,7 +152,7 @@ tsi_tls_version grpc_get_tsi_tls_version(grpc_tls_version tls_version) {
150
152
  }
151
153
  }
152
154
 
153
- grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer) {
155
+ grpc_error_handle grpc_ssl_check_alpn(const tsi_peer* peer) {
154
156
  #if TSI_OPENSSL_ALPN_SUPPORT
155
157
  /* Check the ALPN if ALPN is supported. */
156
158
  const tsi_peer_property* p =
@@ -167,8 +169,8 @@ grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer) {
167
169
  return GRPC_ERROR_NONE;
168
170
  }
169
171
 
170
- grpc_error* grpc_ssl_check_peer_name(absl::string_view peer_name,
171
- const tsi_peer* peer) {
172
+ grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name,
173
+ const tsi_peer* peer) {
172
174
  /* Check the peer name if specified. */
173
175
  if (!peer_name.empty() && !grpc_ssl_host_matches_name(peer, peer_name)) {
174
176
  return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
@@ -182,7 +184,7 @@ bool grpc_ssl_check_call_host(absl::string_view host,
182
184
  absl::string_view target_name,
183
185
  absl::string_view overridden_target_name,
184
186
  grpc_auth_context* auth_context,
185
- grpc_error** error) {
187
+ grpc_error_handle* error) {
186
188
  grpc_security_status status = GRPC_SECURITY_ERROR;
187
189
  tsi_peer peer = grpc_shallow_peer_from_ssl_auth_context(auth_context);
188
190
  if (grpc_ssl_host_matches_name(&peer, host)) status = GRPC_SECURITY_OK;
@@ -303,6 +305,9 @@ grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
303
305
  grpc_auth_context_add_property(
304
306
  ctx.get(), GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME,
305
307
  prop->value.data, prop->value.length);
308
+ } else if (strcmp(prop->name, TSI_X509_DNS_PEER_PROPERTY) == 0) {
309
+ grpc_auth_context_add_property(ctx.get(), GRPC_PEER_DNS_PROPERTY_NAME,
310
+ prop->value.data, prop->value.length);
306
311
  } else if (strcmp(prop->name, TSI_X509_URI_PEER_PROPERTY) == 0) {
307
312
  uri_count++;
308
313
  absl::string_view spiffe_id(prop->value.data, prop->value.length);
@@ -311,6 +316,12 @@ grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
311
316
  spiffe_length = prop->value.length;
312
317
  has_spiffe_id = true;
313
318
  }
319
+ } else if (strcmp(prop->name, TSI_X509_EMAIL_PEER_PROPERTY) == 0) {
320
+ grpc_auth_context_add_property(ctx.get(), GRPC_PEER_EMAIL_PROPERTY_NAME,
321
+ prop->value.data, prop->value.length);
322
+ } else if (strcmp(prop->name, TSI_X509_IP_PEER_PROPERTY) == 0) {
323
+ grpc_auth_context_add_property(ctx.get(), GRPC_PEER_IP_PROPERTY_NAME,
324
+ prop->value.data, prop->value.length);
314
325
  }
315
326
  }
316
327
  if (peer_identity_property_name != nullptr) {
@@ -374,9 +385,18 @@ tsi_peer grpc_shallow_peer_from_ssl_auth_context(
374
385
  0) {
375
386
  add_shallow_auth_property_to_peer(&peer, prop,
376
387
  TSI_X509_PEM_CERT_CHAIN_PROPERTY);
388
+ } else if (strcmp(prop->name, GRPC_PEER_DNS_PROPERTY_NAME) == 0) {
389
+ add_shallow_auth_property_to_peer(&peer, prop,
390
+ TSI_X509_DNS_PEER_PROPERTY);
377
391
  } else if (strcmp(prop->name, GRPC_PEER_SPIFFE_ID_PROPERTY_NAME) == 0) {
378
392
  add_shallow_auth_property_to_peer(&peer, prop,
379
393
  TSI_X509_URI_PEER_PROPERTY);
394
+ } else if (strcmp(prop->name, GRPC_PEER_EMAIL_PROPERTY_NAME) == 0) {
395
+ add_shallow_auth_property_to_peer(&peer, prop,
396
+ TSI_X509_EMAIL_PEER_PROPERTY);
397
+ } else if (strcmp(prop->name, GRPC_PEER_IP_PROPERTY_NAME) == 0) {
398
+ add_shallow_auth_property_to_peer(&peer, prop,
399
+ TSI_X509_IP_PEER_PROPERTY);
380
400
  }
381
401
  }
382
402
  }
@@ -44,11 +44,11 @@
44
44
  #define GRPC_SSL_URL_SCHEME "https"
45
45
 
46
46
  /* Check ALPN information returned from SSL handshakes. */
47
- grpc_error* grpc_ssl_check_alpn(const tsi_peer* peer);
47
+ grpc_error_handle grpc_ssl_check_alpn(const tsi_peer* peer);
48
48
 
49
49
  /* Check peer name information returned from SSL handshakes. */
50
- grpc_error* grpc_ssl_check_peer_name(absl::string_view peer_name,
51
- const tsi_peer* peer);
50
+ grpc_error_handle grpc_ssl_check_peer_name(absl::string_view peer_name,
51
+ const tsi_peer* peer);
52
52
  /* Compare targer_name information extracted from SSL security connectors. */
53
53
  int grpc_ssl_cmp_target_name(absl::string_view target_name,
54
54
  absl::string_view other_target_name,
@@ -59,7 +59,7 @@ bool grpc_ssl_check_call_host(absl::string_view host,
59
59
  absl::string_view target_name,
60
60
  absl::string_view overridden_target_name,
61
61
  grpc_auth_context* auth_context,
62
- grpc_error** error);
62
+ grpc_error_handle* error);
63
63
  /* Return HTTP2-compliant cipher suites that gRPC accepts by default. */
64
64
  const char* grpc_get_ssl_cipher_suites(void);
65
65
 
@@ -46,7 +46,7 @@ namespace grpc_core {
46
46
  namespace {
47
47
 
48
48
  tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
49
- const grpc_core::PemKeyCertPairList& cert_pair_list) {
49
+ const PemKeyCertPairList& cert_pair_list) {
50
50
  tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr;
51
51
  size_t num_key_cert_pairs = cert_pair_list.size();
52
52
  if (num_key_cert_pairs > 0) {
@@ -68,11 +68,11 @@ tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
68
68
  } // namespace
69
69
 
70
70
  // -------------------channel security connector-------------------
71
- grpc_core::RefCountedPtr<grpc_channel_security_connector>
71
+ RefCountedPtr<grpc_channel_security_connector>
72
72
  TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
73
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
74
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
75
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
73
+ RefCountedPtr<grpc_channel_credentials> channel_creds,
74
+ RefCountedPtr<grpc_tls_credentials_options> options,
75
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
76
76
  const char* target_name, const char* overridden_target_name,
77
77
  tsi_ssl_session_cache* ssl_session_cache) {
78
78
  if (channel_creds == nullptr) {
@@ -93,18 +93,16 @@ TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
93
93
  "TlsChannelSecurityConnectorCreate()");
94
94
  return nullptr;
95
95
  }
96
- grpc_core::RefCountedPtr<TlsChannelSecurityConnector> c =
97
- grpc_core::MakeRefCounted<TlsChannelSecurityConnector>(
98
- std::move(channel_creds), std::move(options),
99
- std::move(request_metadata_creds), target_name,
100
- overridden_target_name, ssl_session_cache);
101
- return c;
96
+ return MakeRefCounted<TlsChannelSecurityConnector>(
97
+ std::move(channel_creds), std::move(options),
98
+ std::move(request_metadata_creds), target_name, overridden_target_name,
99
+ ssl_session_cache);
102
100
  }
103
101
 
104
102
  TlsChannelSecurityConnector::TlsChannelSecurityConnector(
105
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
106
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
107
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
103
+ RefCountedPtr<grpc_channel_credentials> channel_creds,
104
+ RefCountedPtr<grpc_tls_credentials_options> options,
105
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
108
106
  const char* target_name, const char* overridden_target_name,
109
107
  tsi_ssl_session_cache* ssl_session_cache)
110
108
  : grpc_channel_security_connector(GRPC_SSL_URL_SCHEME,
@@ -120,7 +118,7 @@ TlsChannelSecurityConnector::TlsChannelSecurityConnector(
120
118
  check_arg_ = ServerAuthorizationCheckArgCreate(this);
121
119
  absl::string_view host;
122
120
  absl::string_view port;
123
- grpc_core::SplitHostPort(target_name, &host, &port);
121
+ SplitHostPort(target_name, &host, &port);
124
122
  target_name_ = std::string(host);
125
123
  // Create a watcher.
126
124
  auto watcher_ptr = absl::make_unique<TlsChannelCertificateWatcher>(this);
@@ -172,8 +170,8 @@ TlsChannelSecurityConnector::~TlsChannelSecurityConnector() {
172
170
 
173
171
  void TlsChannelSecurityConnector::add_handshakers(
174
172
  const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
175
- grpc_core::HandshakeManager* handshake_mgr) {
176
- grpc_core::MutexLock lock(&mu_);
173
+ HandshakeManager* handshake_mgr) {
174
+ MutexLock lock(&mu_);
177
175
  if (client_handshaker_factory_ != nullptr) {
178
176
  // Instantiate TSI handshaker.
179
177
  tsi_handshaker* tsi_hs = nullptr;
@@ -188,7 +186,7 @@ void TlsChannelSecurityConnector::add_handshakers(
188
186
  return;
189
187
  }
190
188
  // Create handshakers.
191
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
189
+ handshake_mgr->Add(SecurityHandshakerCreate(tsi_hs, this, args));
192
190
  return;
193
191
  }
194
192
  // TODO(ZhenLian): Implement the logic(delegation to
@@ -199,14 +197,14 @@ void TlsChannelSecurityConnector::add_handshakers(
199
197
 
200
198
  void TlsChannelSecurityConnector::check_peer(
201
199
  tsi_peer peer, grpc_endpoint* /*ep*/,
202
- grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
200
+ RefCountedPtr<grpc_auth_context>* auth_context,
203
201
  grpc_closure* on_peer_checked) {
204
202
  const char* target_name = overridden_target_name_.empty()
205
203
  ? target_name_.c_str()
206
204
  : overridden_target_name_.c_str();
207
- grpc_error* error = grpc_ssl_check_alpn(&peer);
205
+ grpc_error_handle error = grpc_ssl_check_alpn(&peer);
208
206
  if (error != GRPC_ERROR_NONE) {
209
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
207
+ ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
210
208
  tsi_peer_destruct(&peer);
211
209
  return;
212
210
  }
@@ -216,7 +214,7 @@ void TlsChannelSecurityConnector::check_peer(
216
214
  /* Do the default host name check if specifying the target name. */
217
215
  error = internal::TlsCheckHostName(target_name, &peer);
218
216
  if (error != GRPC_ERROR_NONE) {
219
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
217
+ ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
220
218
  tsi_peer_destruct(&peer);
221
219
  return;
222
220
  }
@@ -299,7 +297,7 @@ void TlsChannelSecurityConnector::check_peer(
299
297
  error = ProcessServerAuthorizationCheckResult(check_arg_);
300
298
  }
301
299
  }
302
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
300
+ ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
303
301
  tsi_peer_destruct(&peer);
304
302
  }
305
303
 
@@ -317,23 +315,28 @@ int TlsChannelSecurityConnector::cmp(
317
315
 
318
316
  bool TlsChannelSecurityConnector::check_call_host(
319
317
  absl::string_view host, grpc_auth_context* auth_context,
320
- grpc_closure* /*on_call_host_checked*/, grpc_error** error) {
318
+ grpc_closure* /*on_call_host_checked*/, grpc_error_handle* error) {
319
+ if (options_->server_verification_option() ==
320
+ GRPC_TLS_SKIP_HOSTNAME_VERIFICATION ||
321
+ options_->server_verification_option() ==
322
+ GRPC_TLS_SKIP_ALL_SERVER_VERIFICATION) {
323
+ return true;
324
+ }
321
325
  return grpc_ssl_check_call_host(host, target_name_.c_str(),
322
326
  overridden_target_name_.c_str(), auth_context,
323
327
  error);
324
328
  }
325
329
 
326
330
  void TlsChannelSecurityConnector::cancel_check_call_host(
327
- grpc_closure* /*on_call_host_checked*/, grpc_error* error) {
331
+ grpc_closure* /*on_call_host_checked*/, grpc_error_handle error) {
328
332
  GRPC_ERROR_UNREF(error);
329
333
  }
330
334
 
331
335
  void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
332
- OnCertificatesChanged(
333
- absl::optional<absl::string_view> root_certs,
334
- absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
336
+ OnCertificatesChanged(absl::optional<absl::string_view> root_certs,
337
+ absl::optional<PemKeyCertPairList> key_cert_pairs) {
335
338
  GPR_ASSERT(security_connector_ != nullptr);
336
- grpc_core::MutexLock lock(&security_connector_->mu_);
339
+ MutexLock lock(&security_connector_->mu_);
337
340
  if (root_certs.has_value()) {
338
341
  security_connector_->pem_root_certs_ = root_certs;
339
342
  }
@@ -356,16 +359,16 @@ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
356
359
  // TODO(ZhenLian): implement the logic to signal waiting handshakers once
357
360
  // BlockOnInitialCredentialHandshaker is implemented.
358
361
  void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::OnError(
359
- grpc_error* root_cert_error, grpc_error* identity_cert_error) {
362
+ grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) {
360
363
  if (root_cert_error != GRPC_ERROR_NONE) {
361
364
  gpr_log(GPR_ERROR,
362
365
  "TlsChannelCertificateWatcher getting root_cert_error: %s",
363
- grpc_error_string(root_cert_error));
366
+ grpc_error_std_string(root_cert_error).c_str());
364
367
  }
365
368
  if (identity_cert_error != GRPC_ERROR_NONE) {
366
369
  gpr_log(GPR_ERROR,
367
370
  "TlsChannelCertificateWatcher getting identity_cert_error: %s",
368
- grpc_error_string(identity_cert_error));
371
+ grpc_error_std_string(identity_cert_error).c_str());
369
372
  }
370
373
  GRPC_ERROR_UNREF(root_cert_error);
371
374
  GRPC_ERROR_UNREF(identity_cert_error);
@@ -411,16 +414,17 @@ TlsChannelSecurityConnector::UpdateHandshakerFactoryLocked() {
411
414
  void TlsChannelSecurityConnector::ServerAuthorizationCheckDone(
412
415
  grpc_tls_server_authorization_check_arg* arg) {
413
416
  GPR_ASSERT(arg != nullptr);
414
- grpc_core::ExecCtx exec_ctx;
415
- grpc_error* error = ProcessServerAuthorizationCheckResult(arg);
417
+ ExecCtx exec_ctx;
418
+ grpc_error_handle error = ProcessServerAuthorizationCheckResult(arg);
416
419
  TlsChannelSecurityConnector* connector =
417
420
  static_cast<TlsChannelSecurityConnector*>(arg->cb_user_data);
418
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, connector->on_peer_checked_, error);
421
+ ExecCtx::Run(DEBUG_LOCATION, connector->on_peer_checked_, error);
419
422
  }
420
423
 
421
- grpc_error* TlsChannelSecurityConnector::ProcessServerAuthorizationCheckResult(
424
+ grpc_error_handle
425
+ TlsChannelSecurityConnector::ProcessServerAuthorizationCheckResult(
422
426
  grpc_tls_server_authorization_check_arg* arg) {
423
- grpc_error* error = GRPC_ERROR_NONE;
427
+ grpc_error_handle error = GRPC_ERROR_NONE;
424
428
  /* Server authorization check is cancelled by caller. */
425
429
  if (arg->status == GRPC_STATUS_CANCELLED) {
426
430
  error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
@@ -485,10 +489,10 @@ void TlsChannelSecurityConnector::ServerAuthorizationCheckArgDestroy(
485
489
  }
486
490
 
487
491
  // -------------------server security connector-------------------
488
- grpc_core::RefCountedPtr<grpc_server_security_connector>
492
+ RefCountedPtr<grpc_server_security_connector>
489
493
  TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
490
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
491
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options) {
494
+ RefCountedPtr<grpc_server_credentials> server_creds,
495
+ RefCountedPtr<grpc_tls_credentials_options> options) {
492
496
  if (server_creds == nullptr) {
493
497
  gpr_log(GPR_ERROR,
494
498
  "server_creds is nullptr in "
@@ -501,15 +505,13 @@ TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
501
505
  "TlsServerSecurityConnectorCreate()");
502
506
  return nullptr;
503
507
  }
504
- grpc_core::RefCountedPtr<TlsServerSecurityConnector> c =
505
- grpc_core::MakeRefCounted<TlsServerSecurityConnector>(
506
- std::move(server_creds), std::move(options));
507
- return c;
508
+ return MakeRefCounted<TlsServerSecurityConnector>(std::move(server_creds),
509
+ std::move(options));
508
510
  }
509
511
 
510
512
  TlsServerSecurityConnector::TlsServerSecurityConnector(
511
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
512
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options)
513
+ RefCountedPtr<grpc_server_credentials> server_creds,
514
+ RefCountedPtr<grpc_tls_credentials_options> options)
513
515
  : grpc_server_security_connector(GRPC_SSL_URL_SCHEME,
514
516
  std::move(server_creds)),
515
517
  options_(std::move(options)) {
@@ -545,8 +547,8 @@ TlsServerSecurityConnector::~TlsServerSecurityConnector() {
545
547
 
546
548
  void TlsServerSecurityConnector::add_handshakers(
547
549
  const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
548
- grpc_core::HandshakeManager* handshake_mgr) {
549
- grpc_core::MutexLock lock(&mu_);
550
+ HandshakeManager* handshake_mgr) {
551
+ MutexLock lock(&mu_);
550
552
  if (server_handshaker_factory_ != nullptr) {
551
553
  // Instantiate TSI handshaker.
552
554
  tsi_handshaker* tsi_hs = nullptr;
@@ -558,7 +560,7 @@ void TlsServerSecurityConnector::add_handshakers(
558
560
  return;
559
561
  }
560
562
  // Create handshakers.
561
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
563
+ handshake_mgr->Add(SecurityHandshakerCreate(tsi_hs, this, args));
562
564
  return;
563
565
  }
564
566
  // TODO(ZhenLian): Implement the logic(delegation to
@@ -569,13 +571,13 @@ void TlsServerSecurityConnector::add_handshakers(
569
571
 
570
572
  void TlsServerSecurityConnector::check_peer(
571
573
  tsi_peer peer, grpc_endpoint* /*ep*/,
572
- grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
574
+ RefCountedPtr<grpc_auth_context>* auth_context,
573
575
  grpc_closure* on_peer_checked) {
574
- grpc_error* error = grpc_ssl_check_alpn(&peer);
576
+ grpc_error_handle error = grpc_ssl_check_alpn(&peer);
575
577
  *auth_context =
576
578
  grpc_ssl_peer_to_auth_context(&peer, GRPC_TLS_TRANSPORT_SECURITY_TYPE);
577
579
  tsi_peer_destruct(&peer);
578
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
580
+ ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
579
581
  }
580
582
 
581
583
  int TlsServerSecurityConnector::cmp(
@@ -585,11 +587,10 @@ int TlsServerSecurityConnector::cmp(
585
587
  }
586
588
 
587
589
  void TlsServerSecurityConnector::TlsServerCertificateWatcher::
588
- OnCertificatesChanged(
589
- absl::optional<absl::string_view> root_certs,
590
- absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
590
+ OnCertificatesChanged(absl::optional<absl::string_view> root_certs,
591
+ absl::optional<PemKeyCertPairList> key_cert_pairs) {
591
592
  GPR_ASSERT(security_connector_ != nullptr);
592
- grpc_core::MutexLock lock(&security_connector_->mu_);
593
+ MutexLock lock(&security_connector_->mu_);
593
594
  if (root_certs.has_value()) {
594
595
  security_connector_->pem_root_certs_ = root_certs;
595
596
  }
@@ -616,16 +617,16 @@ void TlsServerSecurityConnector::TlsServerCertificateWatcher::
616
617
  // TODO(ZhenLian): implement the logic to signal waiting handshakers once
617
618
  // BlockOnInitialCredentialHandshaker is implemented.
618
619
  void TlsServerSecurityConnector::TlsServerCertificateWatcher::OnError(
619
- grpc_error* root_cert_error, grpc_error* identity_cert_error) {
620
+ grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) {
620
621
  if (root_cert_error != GRPC_ERROR_NONE) {
621
622
  gpr_log(GPR_ERROR,
622
623
  "TlsServerCertificateWatcher getting root_cert_error: %s",
623
- grpc_error_string(root_cert_error));
624
+ grpc_error_std_string(root_cert_error).c_str());
624
625
  }
625
626
  if (identity_cert_error != GRPC_ERROR_NONE) {
626
627
  gpr_log(GPR_ERROR,
627
628
  "TlsServerCertificateWatcher getting identity_cert_error: %s",
628
- grpc_error_string(identity_cert_error));
629
+ grpc_error_std_string(identity_cert_error).c_str());
629
630
  }
630
631
  GRPC_ERROR_UNREF(root_cert_error);
631
632
  GRPC_ERROR_UNREF(identity_cert_error);
@@ -666,7 +667,8 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
666
667
 
667
668
  namespace internal {
668
669
 
669
- grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer) {
670
+ grpc_error_handle TlsCheckHostName(const char* peer_name,
671
+ const tsi_peer* peer) {
670
672
  /* Check the peer name if specified. */
671
673
  if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) {
672
674
  return GRPC_ERROR_CREATE_FROM_COPIED_STRING(