grpc 1.37.1 → 1.40.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 (738) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +112 -59
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/endpoint_config.h +48 -0
  5. data/include/grpc/event_engine/event_engine.h +330 -0
  6. data/include/grpc/event_engine/port.h +41 -0
  7. data/include/grpc/event_engine/slice_allocator.h +66 -0
  8. data/include/grpc/grpc.h +11 -4
  9. data/include/grpc/grpc_security.h +32 -0
  10. data/include/grpc/grpc_security_constants.h +15 -0
  11. data/include/grpc/impl/codegen/grpc_types.h +44 -19
  12. data/include/grpc/impl/codegen/port_platform.h +46 -0
  13. data/include/grpc/module.modulemap +14 -14
  14. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  15. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  16. data/src/core/ext/filters/client_channel/client_channel.cc +975 -3282
  17. data/src/core/ext/filters/client_channel/client_channel.h +513 -55
  18. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -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 +20 -7
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  24. data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
  25. data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
  26. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +53 -51
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -23
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -16
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -17
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +17 -20
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +53 -65
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +36 -44
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +33 -55
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +151 -163
  43. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -16
  44. data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
  45. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  46. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
  60. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  61. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  62. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
  63. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  64. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +158 -102
  65. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  66. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  67. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  68. data/src/core/ext/filters/client_channel/retry_filter.cc +2598 -0
  69. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  70. data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
  71. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  72. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  73. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  74. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  75. data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
  76. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  77. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  78. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  79. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  80. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  81. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  82. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  83. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  84. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  85. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  86. data/src/core/ext/filters/http/client/http_client_filter.cc +33 -23
  87. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  88. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  89. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  90. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  91. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  92. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  93. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  94. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  95. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  96. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  97. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  98. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
  99. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  100. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -46
  101. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  102. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  103. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
  104. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  105. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
  106. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
  107. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
  108. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +141 -126
  109. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  110. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  111. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  112. data/src/core/ext/transport/chttp2/transport/flow_control.h +9 -9
  113. data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -12
  114. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  115. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -16
  116. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  117. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  118. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  120. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  121. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +11 -10
  122. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  124. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  125. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +652 -736
  126. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
  127. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  128. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  129. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  130. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  131. data/src/core/ext/transport/chttp2/transport/internal.h +33 -28
  132. data/src/core/ext/transport/chttp2/transport/parsing.cc +129 -106
  133. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
  134. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  135. data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
  136. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
  137. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
  138. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
  139. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
  149. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
  150. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
  151. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
  152. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
  153. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
  154. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
  155. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
  156. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
  157. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
  158. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
  159. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
  160. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
  161. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
  162. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
  163. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
  164. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
  165. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
  166. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
  167. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
  168. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
  169. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
  170. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
  171. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
  172. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
  173. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
  174. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
  175. data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
  176. data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
  177. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
  178. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
  179. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
  180. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
  181. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
  182. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
  183. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  184. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
  185. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
  186. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
  187. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
  188. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  189. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
  190. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
  191. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
  193. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  194. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
  195. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
  196. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  197. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
  198. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
  199. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
  200. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
  201. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  202. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
  203. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
  204. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
  205. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
  206. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
  207. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  208. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
  209. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
  210. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
  211. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  212. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
  213. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  214. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
  215. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  216. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  217. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  218. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  219. data/src/core/ext/xds/xds_api.cc +665 -317
  220. data/src/core/ext/xds/xds_api.h +52 -14
  221. data/src/core/ext/xds/xds_bootstrap.cc +101 -160
  222. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  223. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  224. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  225. data/src/core/ext/xds/xds_channel_args.h +5 -2
  226. data/src/core/ext/xds/xds_client.cc +370 -215
  227. data/src/core/ext/xds/xds_client.h +38 -28
  228. data/src/core/ext/xds/xds_client_stats.h +3 -2
  229. data/src/core/ext/xds/xds_http_filters.cc +3 -2
  230. data/src/core/ext/xds/xds_http_filters.h +3 -0
  231. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  232. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  233. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  234. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
  235. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
  236. data/src/core/lib/channel/call_tracer.h +85 -0
  237. data/src/core/lib/channel/channel_stack.cc +10 -9
  238. data/src/core/lib/channel/channel_stack.h +11 -10
  239. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  240. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  241. data/src/core/lib/channel/channelz.cc +21 -13
  242. data/src/core/lib/channel/channelz.h +3 -0
  243. data/src/core/lib/channel/connected_channel.cc +4 -4
  244. data/src/core/lib/channel/context.h +3 -0
  245. data/src/core/lib/channel/handshaker.cc +7 -6
  246. data/src/core/lib/channel/handshaker.h +5 -5
  247. data/src/core/lib/channel/status_util.h +4 -0
  248. data/src/core/lib/compression/stream_compression.h +1 -1
  249. data/src/core/lib/compression/stream_compression_gzip.h +1 -1
  250. data/src/core/lib/compression/stream_compression_identity.h +1 -1
  251. data/src/core/lib/debug/stats.h +1 -1
  252. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  253. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  254. data/src/core/lib/event_engine/event_engine.cc +50 -0
  255. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  256. data/src/core/lib/event_engine/sockaddr.h +44 -0
  257. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  258. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  259. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  260. data/src/core/lib/gprpp/orphanable.h +3 -3
  261. data/src/core/lib/gprpp/ref_counted.h +28 -14
  262. data/src/core/lib/gprpp/status_helper.cc +407 -0
  263. data/src/core/lib/gprpp/status_helper.h +183 -0
  264. data/src/core/lib/gprpp/sync.h +2 -30
  265. data/src/core/lib/http/httpcli.cc +11 -11
  266. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  267. data/src/core/lib/http/parser.cc +16 -16
  268. data/src/core/lib/http/parser.h +4 -4
  269. data/src/core/lib/iomgr/buffer_list.cc +8 -10
  270. data/src/core/lib/iomgr/buffer_list.h +4 -5
  271. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  272. data/src/core/lib/iomgr/call_combiner.h +12 -14
  273. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  274. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  275. data/src/core/lib/iomgr/closure.h +7 -6
  276. data/src/core/lib/iomgr/combiner.cc +14 -12
  277. data/src/core/lib/iomgr/combiner.h +2 -2
  278. data/src/core/lib/iomgr/endpoint.cc +1 -1
  279. data/src/core/lib/iomgr/endpoint.h +2 -2
  280. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  281. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  282. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  283. data/src/core/lib/iomgr/error.cc +168 -61
  284. data/src/core/lib/iomgr/error.h +217 -106
  285. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  286. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  287. data/src/core/lib/iomgr/error_internal.h +5 -1
  288. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  289. data/src/core/lib/iomgr/ev_apple.h +1 -1
  290. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  291. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  292. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  293. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  294. data/src/core/lib/iomgr/ev_posix.h +9 -9
  295. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  296. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  297. data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
  298. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  299. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  300. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  301. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  302. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  303. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  304. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  305. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  306. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  307. data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
  308. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  309. data/src/core/lib/iomgr/exec_ctx.cc +12 -4
  310. data/src/core/lib/iomgr/exec_ctx.h +4 -5
  311. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  312. data/src/core/lib/iomgr/executor/threadpool.h +2 -2
  313. data/src/core/lib/iomgr/executor.cc +8 -8
  314. data/src/core/lib/iomgr/executor.h +2 -2
  315. data/src/core/lib/iomgr/iomgr.cc +2 -2
  316. data/src/core/lib/iomgr/iomgr.h +1 -1
  317. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  318. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  319. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  320. data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
  321. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
  322. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  323. data/src/core/lib/iomgr/load_file.cc +4 -4
  324. data/src/core/lib/iomgr/load_file.h +2 -2
  325. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  326. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  327. data/src/core/lib/iomgr/pollset.cc +5 -5
  328. data/src/core/lib/iomgr/pollset.h +9 -9
  329. data/src/core/lib/iomgr/pollset_custom.cc +7 -7
  330. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  331. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  332. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  333. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  334. data/src/core/lib/iomgr/port.h +7 -5
  335. data/src/core/lib/iomgr/python_util.h +2 -2
  336. data/src/core/lib/iomgr/resolve_address.cc +8 -4
  337. data/src/core/lib/iomgr/resolve_address.h +12 -6
  338. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  339. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  340. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  341. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  342. data/src/core/lib/iomgr/resource_quota.cc +13 -10
  343. data/src/core/lib/iomgr/sockaddr.h +1 -0
  344. data/src/core/lib/iomgr/socket_mutator.cc +15 -2
  345. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  346. data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
  347. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  348. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  349. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  350. data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
  351. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  352. data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
  353. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  354. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  355. data/src/core/lib/iomgr/tcp_posix.cc +78 -73
  356. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  357. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  358. data/src/core/lib/iomgr/tcp_server.h +12 -11
  359. data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
  360. data/src/core/lib/iomgr/tcp_server_posix.cc +29 -21
  361. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  362. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
  363. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  364. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  365. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  366. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  367. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  368. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  369. data/src/core/lib/iomgr/timer.h +6 -1
  370. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  371. data/src/core/lib/iomgr/timer_custom.h +1 -1
  372. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  373. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  374. data/src/core/lib/iomgr/udp_server.cc +21 -20
  375. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  376. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  377. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  378. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  379. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  380. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  381. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  382. data/src/core/lib/iomgr/work_serializer.h +17 -1
  383. data/src/core/lib/json/json.h +1 -1
  384. data/src/core/lib/json/json_reader.cc +5 -6
  385. data/src/core/lib/matchers/matchers.cc +46 -58
  386. data/src/core/lib/matchers/matchers.h +30 -29
  387. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  388. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  389. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  390. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  391. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  392. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  393. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  394. data/src/core/lib/security/credentials/credentials.h +2 -2
  395. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  396. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  397. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  398. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  399. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  400. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  401. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  402. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  403. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  404. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  405. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  406. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  407. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
  408. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  409. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  410. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  411. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  412. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  413. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  414. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  415. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  416. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  417. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  418. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  419. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  420. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +68 -13
  421. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
  422. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  423. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  424. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  425. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  426. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  427. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  428. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  429. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  430. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  431. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
  432. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  433. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  434. data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
  435. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  436. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +60 -76
  437. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  438. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  439. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  440. data/src/core/lib/security/transport/security_handshaker.cc +45 -36
  441. data/src/core/lib/security/transport/server_auth_filter.cc +17 -18
  442. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  443. data/src/core/lib/security/transport/tsi_error.h +2 -1
  444. data/src/core/lib/security/util/json_util.cc +2 -2
  445. data/src/core/lib/security/util/json_util.h +1 -1
  446. data/src/core/lib/slice/slice_internal.h +1 -0
  447. data/src/core/lib/surface/call.cc +72 -52
  448. data/src/core/lib/surface/call.h +13 -2
  449. data/src/core/lib/surface/channel.cc +6 -6
  450. data/src/core/lib/surface/channel.h +3 -2
  451. data/src/core/lib/surface/channel_ping.cc +1 -1
  452. data/src/core/lib/surface/completion_queue.cc +68 -69
  453. data/src/core/lib/surface/completion_queue.h +3 -2
  454. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  455. data/src/core/lib/surface/init.cc +1 -3
  456. data/src/core/lib/surface/init.h +10 -1
  457. data/src/core/lib/surface/lame_client.cc +11 -11
  458. data/src/core/lib/surface/lame_client.h +1 -1
  459. data/src/core/lib/surface/server.cc +31 -23
  460. data/src/core/lib/surface/server.h +19 -18
  461. data/src/core/lib/surface/validate_metadata.cc +7 -7
  462. data/src/core/lib/surface/validate_metadata.h +3 -2
  463. data/src/core/lib/surface/version.cc +2 -2
  464. data/src/core/lib/transport/byte_stream.cc +5 -5
  465. data/src/core/lib/transport/byte_stream.h +8 -8
  466. data/src/core/lib/transport/connectivity_state.cc +1 -1
  467. data/src/core/lib/transport/error_utils.cc +21 -10
  468. data/src/core/lib/transport/error_utils.h +11 -5
  469. data/src/core/lib/transport/metadata_batch.cc +37 -37
  470. data/src/core/lib/transport/metadata_batch.h +19 -18
  471. data/src/core/lib/transport/transport.cc +4 -3
  472. data/src/core/lib/transport/transport.h +6 -4
  473. data/src/core/lib/transport/transport_op_string.cc +6 -6
  474. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  475. data/src/core/tsi/alts/crypt/gsec.h +6 -0
  476. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  477. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  478. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  479. data/src/core/tsi/ssl_transport_security.cc +32 -14
  480. data/src/core/tsi/ssl_transport_security.h +3 -4
  481. data/src/ruby/bin/math_services_pb.rb +1 -1
  482. data/src/ruby/ext/grpc/extconf.rb +2 -0
  483. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
  484. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
  485. data/src/ruby/lib/grpc/version.rb +1 -1
  486. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  487. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  488. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  489. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  490. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  491. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  492. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  493. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  494. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  495. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  496. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  497. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  498. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  499. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  500. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  501. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  502. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  503. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  504. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  505. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  506. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  507. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  508. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  509. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  510. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  511. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  512. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  513. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  514. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  515. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  516. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  517. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  518. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  519. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  520. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  521. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  522. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  523. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  524. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  525. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  526. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  527. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  528. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  529. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  530. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  531. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  532. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  533. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  534. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  535. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  536. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  537. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  538. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  539. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  540. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  541. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  542. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  543. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  544. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  545. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  546. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  547. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  548. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  549. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  550. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  551. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  552. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  553. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  554. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  555. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  556. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  557. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  558. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  559. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  560. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  561. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  562. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  563. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  564. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  565. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  566. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  567. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  568. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  569. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  570. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  571. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  572. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  573. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  574. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  575. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  576. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  577. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  578. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  579. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  580. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  581. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  582. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  583. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  584. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  585. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  586. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  587. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  588. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  589. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  590. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  591. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  592. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  593. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  594. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  595. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  596. data/third_party/boringssl-with-bazel/err_data.c +483 -461
  597. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  598. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
  599. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  600. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  601. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  602. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  603. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  604. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  605. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  606. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  607. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  608. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  609. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  610. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  611. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  612. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  613. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  614. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  615. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  616. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  617. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
  618. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  619. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  620. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  621. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  622. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  623. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  624. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  625. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
  626. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
  627. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  628. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  629. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  630. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  631. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  632. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  633. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
  634. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
  635. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  636. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
  637. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
  638. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  639. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  640. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
  641. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
  642. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
  643. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
  644. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  645. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  646. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  647. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
  648. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  649. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
  650. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  651. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  652. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  653. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
  654. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  655. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  656. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  657. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  658. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  659. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  660. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  661. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
  662. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  663. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
  664. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  665. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  666. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
  667. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  668. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  669. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  670. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  671. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  672. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  673. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
  674. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
  675. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  676. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  677. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  678. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
  679. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  680. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
  681. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  682. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
  683. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
  684. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  685. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  686. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  687. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
  688. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  689. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  690. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  691. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
  692. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  693. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  694. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  695. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
  696. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  697. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  698. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  699. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
  700. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
  701. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
  702. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  703. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
  704. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
  705. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  706. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
  707. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  708. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
  709. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
  710. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
  711. data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
  712. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  713. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  714. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  715. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  716. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  717. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
  718. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  719. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
  720. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  721. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
  722. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
  723. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
  724. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
  725. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
  726. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
  727. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
  728. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  729. data/third_party/xxhash/xxhash.h +77 -195
  730. metadata +116 -51
  731. data/src/core/lib/gpr/arena.h +0 -47
  732. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  733. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  734. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  735. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  737. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
  738. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -35,18 +35,18 @@ class TlsChannelSecurityConnector final
35
35
  : public grpc_channel_security_connector {
36
36
  public:
37
37
  // static factory method to create a TLS channel security connector.
38
- static grpc_core::RefCountedPtr<grpc_channel_security_connector>
38
+ static RefCountedPtr<grpc_channel_security_connector>
39
39
  CreateTlsChannelSecurityConnector(
40
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
41
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
42
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
40
+ RefCountedPtr<grpc_channel_credentials> channel_creds,
41
+ RefCountedPtr<grpc_tls_credentials_options> options,
42
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
43
43
  const char* target_name, const char* overridden_target_name,
44
44
  tsi_ssl_session_cache* ssl_session_cache);
45
45
 
46
46
  TlsChannelSecurityConnector(
47
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
48
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
49
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
47
+ RefCountedPtr<grpc_channel_credentials> channel_creds,
48
+ RefCountedPtr<grpc_tls_credentials_options> options,
49
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
50
50
  const char* target_name, const char* overridden_target_name,
51
51
  tsi_ssl_session_cache* ssl_session_cache);
52
52
 
@@ -54,33 +54,39 @@ class TlsChannelSecurityConnector final
54
54
 
55
55
  void add_handshakers(const grpc_channel_args* args,
56
56
  grpc_pollset_set* interested_parties,
57
- grpc_core::HandshakeManager* handshake_mgr) override;
57
+ HandshakeManager* handshake_mgr) override;
58
58
 
59
59
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
60
- grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
60
+ RefCountedPtr<grpc_auth_context>* auth_context,
61
61
  grpc_closure* on_peer_checked) override;
62
62
 
63
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
64
+ grpc_error_handle error) override {
65
+ // TODO(ZhenLian): call verifier->cancel() once the verifier is ready.
66
+ GRPC_ERROR_UNREF(error);
67
+ }
68
+
63
69
  int cmp(const grpc_security_connector* other_sc) const override;
64
70
 
65
71
  bool check_call_host(absl::string_view host, grpc_auth_context* auth_context,
66
72
  grpc_closure* on_call_host_checked,
67
- grpc_error** error) override;
73
+ grpc_error_handle* error) override;
68
74
 
69
75
  void cancel_check_call_host(grpc_closure* on_call_host_checked,
70
- grpc_error* error) override;
76
+ grpc_error_handle error) override;
71
77
 
72
78
  tsi_ssl_client_handshaker_factory* ClientHandshakerFactoryForTesting() {
73
- grpc_core::MutexLock lock(&mu_);
79
+ MutexLock lock(&mu_);
74
80
  return client_handshaker_factory_;
75
81
  };
76
82
 
77
83
  absl::optional<absl::string_view> RootCertsForTesting() {
78
- grpc_core::MutexLock lock(&mu_);
84
+ MutexLock lock(&mu_);
79
85
  return pem_root_certs_;
80
86
  }
81
87
 
82
- absl::optional<grpc_core::PemKeyCertPairList> KeyCertPairListForTesting() {
83
- grpc_core::MutexLock lock(&mu_);
88
+ absl::optional<PemKeyCertPairList> KeyCertPairListForTesting() {
89
+ MutexLock lock(&mu_);
84
90
  return pem_key_cert_pair_list_;
85
91
  }
86
92
 
@@ -96,9 +102,9 @@ class TlsChannelSecurityConnector final
96
102
  : security_connector_(security_connector) {}
97
103
  void OnCertificatesChanged(
98
104
  absl::optional<absl::string_view> root_certs,
99
- absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) override;
100
- void OnError(grpc_error* root_cert_error,
101
- grpc_error* identity_cert_error) override;
105
+ absl::optional<PemKeyCertPairList> key_cert_pairs) override;
106
+ void OnError(grpc_error_handle root_cert_error,
107
+ grpc_error_handle identity_cert_error) override;
102
108
 
103
109
  private:
104
110
  TlsChannelSecurityConnector* security_connector_ = nullptr;
@@ -106,7 +112,8 @@ class TlsChannelSecurityConnector final
106
112
 
107
113
  // Updates |client_handshaker_factory_| when the certificates that
108
114
  // |certificate_watcher_| is watching get updated.
109
- grpc_security_status UpdateHandshakerFactoryLocked();
115
+ grpc_security_status UpdateHandshakerFactoryLocked()
116
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
110
117
 
111
118
  // gRPC-provided callback executed by application, which servers to bring the
112
119
  // control back to gRPC core.
@@ -114,7 +121,7 @@ class TlsChannelSecurityConnector final
114
121
  grpc_tls_server_authorization_check_arg* arg);
115
122
 
116
123
  // A util function to process server authorization check result.
117
- static grpc_error* ProcessServerAuthorizationCheckResult(
124
+ static grpc_error_handle ProcessServerAuthorizationCheckResult(
118
125
  grpc_tls_server_authorization_check_arg* arg);
119
126
 
120
127
  // A util function to create a server authorization check arg instance.
@@ -125,57 +132,65 @@ class TlsChannelSecurityConnector final
125
132
  static void ServerAuthorizationCheckArgDestroy(
126
133
  grpc_tls_server_authorization_check_arg* arg);
127
134
 
128
- grpc_core::Mutex mu_;
129
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
135
+ RefCountedPtr<grpc_tls_credentials_options> options_;
130
136
  grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
131
137
  certificate_watcher_ = nullptr;
132
138
  grpc_closure* on_peer_checked_ = nullptr;
133
139
  std::string target_name_;
134
140
  std::string overridden_target_name_;
135
- tsi_ssl_client_handshaker_factory* client_handshaker_factory_ = nullptr;
136
141
  grpc_tls_server_authorization_check_arg* check_arg_ = nullptr;
137
- tsi_ssl_session_cache* ssl_session_cache_ = nullptr;
138
- absl::optional<absl::string_view> pem_root_certs_;
139
- absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pair_list_;
142
+
143
+ Mutex mu_;
144
+ tsi_ssl_client_handshaker_factory* client_handshaker_factory_
145
+ ABSL_GUARDED_BY(mu_) = nullptr;
146
+ tsi_ssl_session_cache* ssl_session_cache_ ABSL_GUARDED_BY(mu_) = nullptr;
147
+ absl::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
148
+ absl::optional<PemKeyCertPairList> pem_key_cert_pair_list_
149
+ ABSL_GUARDED_BY(mu_);
140
150
  };
141
151
 
142
152
  // Server security connector using TLS as transport security protocol.
143
153
  class TlsServerSecurityConnector final : public grpc_server_security_connector {
144
154
  public:
145
155
  // static factory method to create a TLS server security connector.
146
- static grpc_core::RefCountedPtr<grpc_server_security_connector>
156
+ static RefCountedPtr<grpc_server_security_connector>
147
157
  CreateTlsServerSecurityConnector(
148
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
149
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options);
158
+ RefCountedPtr<grpc_server_credentials> server_creds,
159
+ RefCountedPtr<grpc_tls_credentials_options> options);
150
160
 
151
161
  TlsServerSecurityConnector(
152
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
153
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options);
162
+ RefCountedPtr<grpc_server_credentials> server_creds,
163
+ RefCountedPtr<grpc_tls_credentials_options> options);
154
164
  ~TlsServerSecurityConnector() override;
155
165
 
156
166
  void add_handshakers(const grpc_channel_args* args,
157
167
  grpc_pollset_set* interested_parties,
158
- grpc_core::HandshakeManager* handshake_mgr) override;
168
+ HandshakeManager* handshake_mgr) override;
159
169
 
160
170
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
161
- grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
171
+ RefCountedPtr<grpc_auth_context>* auth_context,
162
172
  grpc_closure* on_peer_checked) override;
163
173
 
174
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
175
+ grpc_error_handle error) override {
176
+ // TODO(ZhenLian): call verifier->cancel() once the verifier is ready.
177
+ GRPC_ERROR_UNREF(error);
178
+ }
179
+
164
180
  int cmp(const grpc_security_connector* other) const override;
165
181
 
166
182
  tsi_ssl_server_handshaker_factory* ServerHandshakerFactoryForTesting() {
167
- grpc_core::MutexLock lock(&mu_);
183
+ MutexLock lock(&mu_);
168
184
  return server_handshaker_factory_;
169
185
  };
170
186
 
171
187
  const absl::optional<absl::string_view>& RootCertsForTesting() {
172
- grpc_core::MutexLock lock(&mu_);
188
+ MutexLock lock(&mu_);
173
189
  return pem_root_certs_;
174
190
  }
175
191
 
176
- const absl::optional<grpc_core::PemKeyCertPairList>&
177
- KeyCertPairListForTesting() {
178
- grpc_core::MutexLock lock(&mu_);
192
+ const absl::optional<PemKeyCertPairList>& KeyCertPairListForTesting() {
193
+ MutexLock lock(&mu_);
179
194
  return pem_key_cert_pair_list_;
180
195
  }
181
196
 
@@ -191,9 +206,9 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
191
206
  : security_connector_(security_connector) {}
192
207
  void OnCertificatesChanged(
193
208
  absl::optional<absl::string_view> root_certs,
194
- absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) override;
195
- void OnError(grpc_error* root_cert_error,
196
- grpc_error* identity_cert_error) override;
209
+ absl::optional<PemKeyCertPairList> key_cert_pairs) override;
210
+ void OnError(grpc_error_handle root_cert_error,
211
+ grpc_error_handle identity_cert_error) override;
197
212
 
198
213
  private:
199
214
  TlsServerSecurityConnector* security_connector_ = nullptr;
@@ -201,16 +216,19 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
201
216
 
202
217
  // Updates |server_handshaker_factory_| when the certificates that
203
218
  // |certificate_watcher_| is watching get updated.
204
- grpc_security_status UpdateHandshakerFactoryLocked();
219
+ grpc_security_status UpdateHandshakerFactoryLocked()
220
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
205
221
 
206
- grpc_core::Mutex mu_;
207
- grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
222
+ RefCountedPtr<grpc_tls_credentials_options> options_;
208
223
  grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
209
224
  certificate_watcher_ = nullptr;
210
225
 
211
- tsi_ssl_server_handshaker_factory* server_handshaker_factory_ = nullptr;
212
- absl::optional<absl::string_view> pem_root_certs_;
213
- absl::optional<grpc_core::PemKeyCertPairList> pem_key_cert_pair_list_;
226
+ Mutex mu_;
227
+ tsi_ssl_server_handshaker_factory* server_handshaker_factory_
228
+ ABSL_GUARDED_BY(mu_) = nullptr;
229
+ absl::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
230
+ absl::optional<PemKeyCertPairList> pem_key_cert_pair_list_
231
+ ABSL_GUARDED_BY(mu_);
214
232
  };
215
233
 
216
234
  // ---- Functions below are exposed for testing only -----------------------
@@ -218,7 +236,7 @@ namespace internal {
218
236
 
219
237
  // TlsCheckHostName checks if |peer_name| matches the identity information
220
238
  // contained in |peer|. This is AKA hostname check.
221
- grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer);
239
+ grpc_error_handle TlsCheckHostName(const char* peer_name, const tsi_peer* peer);
222
240
 
223
241
  } // namespace internal
224
242
 
@@ -146,7 +146,7 @@ void grpc_auth_metadata_context_reset(
146
146
  }
147
147
  }
148
148
 
149
- static void add_error(grpc_error** combined, grpc_error* error) {
149
+ static void add_error(grpc_error_handle* combined, grpc_error_handle error) {
150
150
  if (error == GRPC_ERROR_NONE) return;
151
151
  if (*combined == GRPC_ERROR_NONE) {
152
152
  *combined = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -155,14 +155,14 @@ static void add_error(grpc_error** combined, grpc_error* error) {
155
155
  *combined = grpc_error_add_child(*combined, error);
156
156
  }
157
157
 
158
- static void on_credentials_metadata(void* arg, grpc_error* input_error) {
158
+ static void on_credentials_metadata(void* arg, grpc_error_handle input_error) {
159
159
  grpc_transport_stream_op_batch* batch =
160
160
  static_cast<grpc_transport_stream_op_batch*>(arg);
161
161
  grpc_call_element* elem =
162
162
  static_cast<grpc_call_element*>(batch->handler_private.extra_arg);
163
163
  call_data* calld = static_cast<call_data*>(elem->call_data);
164
164
  grpc_auth_metadata_context_reset(&calld->auth_md_context);
165
- grpc_error* error = GRPC_ERROR_REF(input_error);
165
+ grpc_error_handle error = GRPC_ERROR_REF(input_error);
166
166
  if (error == GRPC_ERROR_NONE) {
167
167
  GPR_ASSERT(calld->md_array.size <= MAX_CREDENTIALS_METADATA_COUNT);
168
168
  GPR_ASSERT(batch->send_initial_metadata);
@@ -225,13 +225,14 @@ void grpc_auth_metadata_context_build(
225
225
  gpr_free(host_and_port);
226
226
  }
227
227
 
228
- static void cancel_get_request_metadata(void* arg, grpc_error* error) {
228
+ static void cancel_get_request_metadata(void* arg, grpc_error_handle error) {
229
229
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
230
230
  call_data* calld = static_cast<call_data*>(elem->call_data);
231
231
  if (error != GRPC_ERROR_NONE) {
232
232
  calld->creds->cancel_get_request_metadata(&calld->md_array,
233
233
  GRPC_ERROR_REF(error));
234
234
  }
235
+ GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_get_request_metadata");
235
236
  }
236
237
 
237
238
  static void send_security_metadata(grpc_call_element* elem,
@@ -311,7 +312,7 @@ static void send_security_metadata(grpc_call_element* elem,
311
312
  GRPC_CALL_STACK_REF(calld->owning_call, "get_request_metadata");
312
313
  GRPC_CLOSURE_INIT(&calld->async_result_closure, on_credentials_metadata,
313
314
  batch, grpc_schedule_on_exec_ctx);
314
- grpc_error* error = GRPC_ERROR_NONE;
315
+ grpc_error_handle error = GRPC_ERROR_NONE;
315
316
  if (calld->creds->get_request_metadata(
316
317
  calld->pollent, calld->auth_md_context, &calld->md_array,
317
318
  &calld->async_result_closure, &error)) {
@@ -320,13 +321,16 @@ static void send_security_metadata(grpc_call_element* elem,
320
321
  GRPC_ERROR_UNREF(error);
321
322
  } else {
322
323
  // Async return; register cancellation closure with call combiner.
324
+ // TODO(yashykt): We would not need this ref if call combiners used
325
+ // Closure::Run() instead of ExecCtx::Run()
326
+ GRPC_CALL_STACK_REF(calld->owning_call, "cancel_get_request_metadata");
323
327
  calld->call_combiner->SetNotifyOnCancel(GRPC_CLOSURE_INIT(
324
328
  &calld->get_request_metadata_cancel_closure,
325
329
  cancel_get_request_metadata, elem, grpc_schedule_on_exec_ctx));
326
330
  }
327
331
  }
328
332
 
329
- static void on_host_checked(void* arg, grpc_error* error) {
333
+ static void on_host_checked(void* arg, grpc_error_handle error) {
330
334
  grpc_transport_stream_op_batch* batch =
331
335
  static_cast<grpc_transport_stream_op_batch*>(arg);
332
336
  grpc_call_element* elem =
@@ -348,7 +352,7 @@ static void on_host_checked(void* arg, grpc_error* error) {
348
352
  GRPC_CALL_STACK_UNREF(calld->owning_call, "check_call_host");
349
353
  }
350
354
 
351
- static void cancel_check_call_host(void* arg, grpc_error* error) {
355
+ static void cancel_check_call_host(void* arg, grpc_error_handle error) {
352
356
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
353
357
  call_data* calld = static_cast<call_data*>(elem->call_data);
354
358
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
@@ -356,6 +360,7 @@ static void cancel_check_call_host(void* arg, grpc_error* error) {
356
360
  chand->security_connector->cancel_check_call_host(
357
361
  &calld->async_result_closure, GRPC_ERROR_REF(error));
358
362
  }
363
+ GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_check_call_host");
359
364
  }
360
365
 
361
366
  static void client_auth_start_transport_stream_op_batch(
@@ -381,7 +386,7 @@ static void client_auth_start_transport_stream_op_batch(
381
386
  GRPC_CLOSURE_INIT(&calld->async_result_closure, on_host_checked, batch,
382
387
  grpc_schedule_on_exec_ctx);
383
388
  absl::string_view call_host(grpc_core::StringViewFromSlice(calld->host));
384
- grpc_error* error = GRPC_ERROR_NONE;
389
+ grpc_error_handle error = GRPC_ERROR_NONE;
385
390
  if (chand->security_connector->check_call_host(
386
391
  call_host, chand->auth_context.get(),
387
392
  &calld->async_result_closure, &error)) {
@@ -390,6 +395,9 @@ static void client_auth_start_transport_stream_op_batch(
390
395
  GRPC_ERROR_UNREF(error);
391
396
  } else {
392
397
  // Async return; register cancellation closure with call combiner.
398
+ // TODO(yashykt): We would not need this ref if call combiners used
399
+ // Closure::Run() instead of ExecCtx::Run()
400
+ GRPC_CALL_STACK_REF(calld->owning_call, "cancel_check_call_host");
393
401
  calld->call_combiner->SetNotifyOnCancel(GRPC_CLOSURE_INIT(
394
402
  &calld->check_call_host_cancel_closure, cancel_check_call_host,
395
403
  elem, grpc_schedule_on_exec_ctx));
@@ -403,7 +411,7 @@ static void client_auth_start_transport_stream_op_batch(
403
411
  }
404
412
 
405
413
  /* Constructor for call_data */
406
- static grpc_error* client_auth_init_call_elem(
414
+ static grpc_error_handle client_auth_init_call_elem(
407
415
  grpc_call_element* elem, const grpc_call_element_args* args) {
408
416
  new (elem->call_data) call_data(elem, *args);
409
417
  return GRPC_ERROR_NONE;
@@ -424,7 +432,7 @@ static void client_auth_destroy_call_elem(
424
432
  }
425
433
 
426
434
  /* Constructor for channel_data */
427
- static grpc_error* client_auth_init_channel_elem(
435
+ static grpc_error_handle client_auth_init_channel_elem(
428
436
  grpc_channel_element* elem, grpc_channel_element_args* args) {
429
437
  /* The first and the last filters tend to be implemented differently to
430
438
  handle the case that there's no 'next' filter to call on the up or down
@@ -43,7 +43,7 @@
43
43
 
44
44
  #define STAGING_BUFFER_SIZE 8192
45
45
 
46
- static void on_read(void* user_data, grpc_error* error);
46
+ static void on_read(void* user_data, grpc_error_handle error);
47
47
 
48
48
  namespace {
49
49
  struct secure_endpoint {
@@ -154,7 +154,7 @@ static void flush_read_staging_buffer(secure_endpoint* ep, uint8_t** cur,
154
154
  *end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
155
155
  }
156
156
 
157
- static void call_read_cb(secure_endpoint* ep, grpc_error* error) {
157
+ static void call_read_cb(secure_endpoint* ep, grpc_error_handle error) {
158
158
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_secure_endpoint)) {
159
159
  size_t i;
160
160
  for (i = 0; i < ep->read_buffer->count; i++) {
@@ -169,7 +169,7 @@ static void call_read_cb(secure_endpoint* ep, grpc_error* error) {
169
169
  SECURE_ENDPOINT_UNREF(ep, "read");
170
170
  }
171
171
 
172
- static void on_read(void* user_data, grpc_error* error) {
172
+ static void on_read(void* user_data, grpc_error_handle error) {
173
173
  unsigned i;
174
174
  uint8_t keep_looping = 0;
175
175
  tsi_result result = TSI_OK;
@@ -373,7 +373,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
373
373
  grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg);
374
374
  }
375
375
 
376
- static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error* why) {
376
+ static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) {
377
377
  secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
378
378
  grpc_endpoint_shutdown(ep->wrapped_ep, why);
379
379
  }
@@ -51,35 +51,36 @@ class SecurityHandshaker : public Handshaker {
51
51
  grpc_security_connector* connector,
52
52
  const grpc_channel_args* args);
53
53
  ~SecurityHandshaker() override;
54
- void Shutdown(grpc_error* why) override;
54
+ void Shutdown(grpc_error_handle why) override;
55
55
  void DoHandshake(grpc_tcp_server_acceptor* acceptor,
56
56
  grpc_closure* on_handshake_done,
57
57
  HandshakerArgs* args) override;
58
58
  const char* name() const override { return "security"; }
59
59
 
60
60
  private:
61
- grpc_error* DoHandshakerNextLocked(const unsigned char* bytes_received,
62
- size_t bytes_received_size);
61
+ grpc_error_handle DoHandshakerNextLocked(const unsigned char* bytes_received,
62
+ size_t bytes_received_size);
63
63
 
64
- grpc_error* OnHandshakeNextDoneLocked(
64
+ grpc_error_handle OnHandshakeNextDoneLocked(
65
65
  tsi_result result, const unsigned char* bytes_to_send,
66
66
  size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result);
67
- void HandshakeFailedLocked(grpc_error* error);
67
+ void HandshakeFailedLocked(grpc_error_handle error);
68
68
  void CleanupArgsForFailureLocked();
69
69
 
70
- static void OnHandshakeDataReceivedFromPeerFn(void* arg, grpc_error* error);
71
- static void OnHandshakeDataSentToPeerFn(void* arg, grpc_error* error);
72
- static void OnHandshakeDataReceivedFromPeerFnScheduler(void* arg,
73
- grpc_error* error);
70
+ static void OnHandshakeDataReceivedFromPeerFn(void* arg,
71
+ grpc_error_handle error);
72
+ static void OnHandshakeDataSentToPeerFn(void* arg, grpc_error_handle error);
73
+ static void OnHandshakeDataReceivedFromPeerFnScheduler(
74
+ void* arg, grpc_error_handle error);
74
75
  static void OnHandshakeDataSentToPeerFnScheduler(void* arg,
75
- grpc_error* error);
76
+ grpc_error_handle error);
76
77
  static void OnHandshakeNextDoneGrpcWrapper(
77
78
  tsi_result result, void* user_data, const unsigned char* bytes_to_send,
78
79
  size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result);
79
- static void OnPeerCheckedFn(void* arg, grpc_error* error);
80
- void OnPeerCheckedInner(grpc_error* error);
80
+ static void OnPeerCheckedFn(void* arg, grpc_error_handle error);
81
+ void OnPeerCheckedInner(grpc_error_handle error);
81
82
  size_t MoveReadBufferIntoHandshakeBuffer();
82
- grpc_error* CheckPeerLocked();
83
+ grpc_error_handle CheckPeerLocked();
83
84
 
84
85
  // State set at creation time.
85
86
  tsi_handshaker* handshaker_;
@@ -173,15 +174,14 @@ void SecurityHandshaker::CleanupArgsForFailureLocked() {
173
174
 
174
175
  // If the handshake failed or we're shutting down, clean up and invoke the
175
176
  // callback with the error.
176
- void SecurityHandshaker::HandshakeFailedLocked(grpc_error* error) {
177
+ void SecurityHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
177
178
  if (error == GRPC_ERROR_NONE) {
178
179
  // If we were shut down after the handshake succeeded but before an
179
180
  // endpoint callback was invoked, we need to generate our own error.
180
181
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
181
182
  }
182
- const char* msg = grpc_error_string(error);
183
- gpr_log(GPR_DEBUG, "Security handshake failed: %s", msg);
184
-
183
+ gpr_log(GPR_DEBUG, "Security handshake failed: %s",
184
+ grpc_error_std_string(error).c_str());
185
185
  if (!is_shutdown_) {
186
186
  tsi_handshaker_shutdown(handshaker_);
187
187
  // TODO(ctiller): It is currently necessary to shutdown endpoints
@@ -225,7 +225,7 @@ MakeChannelzSecurityFromAuthContext(grpc_auth_context* auth_context) {
225
225
 
226
226
  } // namespace
227
227
 
228
- void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) {
228
+ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
229
229
  MutexLock lock(&mu_);
230
230
  if (error != GRPC_ERROR_NONE || is_shutdown_) {
231
231
  HandshakeFailedLocked(error);
@@ -292,12 +292,12 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) {
292
292
  is_shutdown_ = true;
293
293
  }
294
294
 
295
- void SecurityHandshaker::OnPeerCheckedFn(void* arg, grpc_error* error) {
295
+ void SecurityHandshaker::OnPeerCheckedFn(void* arg, grpc_error_handle error) {
296
296
  RefCountedPtr<SecurityHandshaker>(static_cast<SecurityHandshaker*>(arg))
297
297
  ->OnPeerCheckedInner(GRPC_ERROR_REF(error));
298
298
  }
299
299
 
300
- grpc_error* SecurityHandshaker::CheckPeerLocked() {
300
+ grpc_error_handle SecurityHandshaker::CheckPeerLocked() {
301
301
  tsi_peer peer;
302
302
  tsi_result result =
303
303
  tsi_handshaker_result_extract_peer(handshaker_result_, &peer);
@@ -310,10 +310,10 @@ grpc_error* SecurityHandshaker::CheckPeerLocked() {
310
310
  return GRPC_ERROR_NONE;
311
311
  }
312
312
 
313
- grpc_error* SecurityHandshaker::OnHandshakeNextDoneLocked(
313
+ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
314
314
  tsi_result result, const unsigned char* bytes_to_send,
315
315
  size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result) {
316
- grpc_error* error = GRPC_ERROR_NONE;
316
+ grpc_error_handle error = GRPC_ERROR_NONE;
317
317
  // Handshaker was shutdown.
318
318
  if (is_shutdown_) {
319
319
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
@@ -374,7 +374,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper(
374
374
  RefCountedPtr<SecurityHandshaker> h(
375
375
  static_cast<SecurityHandshaker*>(user_data));
376
376
  MutexLock lock(&h->mu_);
377
- grpc_error* error = h->OnHandshakeNextDoneLocked(
377
+ grpc_error_handle error = h->OnHandshakeNextDoneLocked(
378
378
  result, bytes_to_send, bytes_to_send_size, handshaker_result);
379
379
  if (error != GRPC_ERROR_NONE) {
380
380
  h->HandshakeFailedLocked(error);
@@ -383,7 +383,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper(
383
383
  }
384
384
  }
385
385
 
386
- grpc_error* SecurityHandshaker::DoHandshakerNextLocked(
386
+ grpc_error_handle SecurityHandshaker::DoHandshakerNextLocked(
387
387
  const unsigned char* bytes_received, size_t bytes_received_size) {
388
388
  // Invoke TSI handshaker.
389
389
  const unsigned char* bytes_to_send = nullptr;
@@ -406,7 +406,7 @@ grpc_error* SecurityHandshaker::DoHandshakerNextLocked(
406
406
  // This callback might be run inline while we are still holding on to the mutex,
407
407
  // so schedule OnHandshakeDataReceivedFromPeerFn on ExecCtx to avoid a deadlock.
408
408
  void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler(
409
- void* arg, grpc_error* error) {
409
+ void* arg, grpc_error_handle error) {
410
410
  SecurityHandshaker* h = static_cast<SecurityHandshaker*>(arg);
411
411
  grpc_core::ExecCtx::Run(
412
412
  DEBUG_LOCATION,
@@ -416,8 +416,8 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler(
416
416
  GRPC_ERROR_REF(error));
417
417
  }
418
418
 
419
- void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(void* arg,
420
- grpc_error* error) {
419
+ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
420
+ void* arg, grpc_error_handle error) {
421
421
  RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
422
422
  MutexLock lock(&h->mu_);
423
423
  if (error != GRPC_ERROR_NONE || h->is_shutdown_) {
@@ -440,7 +440,7 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(void* arg,
440
440
  // This callback might be run inline while we are still holding on to the mutex,
441
441
  // so schedule OnHandshakeDataSentToPeerFn on ExecCtx to avoid a deadlock.
442
442
  void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler(
443
- void* arg, grpc_error* error) {
443
+ void* arg, grpc_error_handle error) {
444
444
  SecurityHandshaker* h = static_cast<SecurityHandshaker*>(arg);
445
445
  grpc_core::ExecCtx::Run(
446
446
  DEBUG_LOCATION,
@@ -451,7 +451,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler(
451
451
  }
452
452
 
453
453
  void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
454
- grpc_error* error) {
454
+ grpc_error_handle error) {
455
455
  RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
456
456
  MutexLock lock(&h->mu_);
457
457
  if (error != GRPC_ERROR_NONE || h->is_shutdown_) {
@@ -482,10 +482,11 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
482
482
  // public handshaker API
483
483
  //
484
484
 
485
- void SecurityHandshaker::Shutdown(grpc_error* why) {
485
+ void SecurityHandshaker::Shutdown(grpc_error_handle why) {
486
486
  MutexLock lock(&mu_);
487
487
  if (!is_shutdown_) {
488
488
  is_shutdown_ = true;
489
+ connector_->cancel_check_peer(&on_peer_checked_, GRPC_ERROR_REF(why));
489
490
  tsi_handshaker_shutdown(handshaker_);
490
491
  grpc_endpoint_shutdown(args_->endpoint, GRPC_ERROR_REF(why));
491
492
  CleanupArgsForFailureLocked();
@@ -501,7 +502,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
501
502
  args_ = args;
502
503
  on_handshake_done_ = on_handshake_done;
503
504
  size_t bytes_received_size = MoveReadBufferIntoHandshakeBuffer();
504
- grpc_error* error =
505
+ grpc_error_handle error =
505
506
  DoHandshakerNextLocked(handshake_buffer_, bytes_received_size);
506
507
  if (error != GRPC_ERROR_NONE) {
507
508
  HandshakeFailedLocked(error);
@@ -517,13 +518,21 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
517
518
  class FailHandshaker : public Handshaker {
518
519
  public:
519
520
  const char* name() const override { return "security_fail"; }
520
- void Shutdown(grpc_error* why) override { GRPC_ERROR_UNREF(why); }
521
+ void Shutdown(grpc_error_handle why) override { GRPC_ERROR_UNREF(why); }
521
522
  void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
522
523
  grpc_closure* on_handshake_done,
523
- HandshakerArgs* /*args*/) override {
524
- ExecCtx::Run(DEBUG_LOCATION, on_handshake_done,
525
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
526
- "Failed to create security handshaker"));
524
+ HandshakerArgs* args) override {
525
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
526
+ "Failed to create security handshaker");
527
+ grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_REF(error));
528
+ grpc_endpoint_destroy(args->endpoint);
529
+ args->endpoint = nullptr;
530
+ grpc_channel_args_destroy(args->args);
531
+ args->args = nullptr;
532
+ grpc_slice_buffer_destroy_internal(args->read_buffer);
533
+ gpr_free(args->read_buffer);
534
+ args->read_buffer = nullptr;
535
+ ExecCtx::Run(DEBUG_LOCATION, on_handshake_done, error);
527
536
  }
528
537
 
529
538
  private: