grpc 1.37.1 → 1.38.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 (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  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 +2 -2
  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 +5 -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 +628 -3101
  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_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  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 +46 -43
  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 +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -63,7 +63,7 @@ class SubchannelNode : public BaseNode {
63
63
  private:
64
64
  Atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE};
65
65
  Mutex socket_mu_;
66
- RefCountedPtr<SocketNode> child_socket_;
66
+ RefCountedPtr<SocketNode> child_socket_ ABSL_GUARDED_BY(socket_mu_);
67
67
  std::string target_;
68
68
  CallCountingHelper call_counter_;
69
69
  ChannelTrace trace_;
@@ -34,6 +34,7 @@
34
34
  #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
35
35
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
36
36
  #include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
37
+ #include "src/core/ext/filters/client_channel/retry_service_config.h"
37
38
  #include "src/core/ext/filters/client_channel/retry_throttle.h"
38
39
  #include "src/core/ext/filters/client_channel/service_config_parser.h"
39
40
  #include "src/core/lib/surface/channel_init.h"
@@ -46,6 +47,7 @@ static bool append_filter(grpc_channel_stack_builder* builder, void* arg) {
46
47
  void grpc_client_channel_init(void) {
47
48
  grpc_core::ServiceConfigParser::Init();
48
49
  grpc_core::internal::ClientChannelServiceConfigParser::Register();
50
+ grpc_core::internal::RetryServiceConfigParser::Register();
49
51
  grpc_core::LoadBalancingPolicyRegistry::Builder::InitRegistry();
50
52
  grpc_core::ResolverRegistry::Builder::InitRegistry();
51
53
  grpc_core::internal::ServerRetryThrottleMap::Init();
@@ -54,7 +56,8 @@ void grpc_client_channel_init(void) {
54
56
  grpc_core::GlobalSubchannelPool::Init();
55
57
  grpc_channel_init_register_stage(
56
58
  GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, append_filter,
57
- const_cast<grpc_channel_filter*>(&grpc_client_channel_filter));
59
+ const_cast<grpc_channel_filter*>(
60
+ &grpc_core::ClientChannel::kFilterVtable));
58
61
  grpc_http_connect_register_handshaker_factory();
59
62
  grpc_client_channel_global_init_backup_polling();
60
63
  }
@@ -52,7 +52,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
52
52
 
53
53
  struct CallConfig {
54
54
  // Can be set to indicate the call should be failed.
55
- grpc_error* error = GRPC_ERROR_NONE;
55
+ grpc_error_handle error = GRPC_ERROR_NONE;
56
56
  // The per-method parsed configs that will be passed to
57
57
  // ServiceConfigCallData.
58
58
  const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
@@ -66,7 +66,7 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
66
66
 
67
67
  // Cancels any in-flight connection attempt and shuts down the
68
68
  // connector.
69
- virtual void Shutdown(grpc_error* error) = 0;
69
+ virtual void Shutdown(grpc_error_handle error) = 0;
70
70
 
71
71
  void Orphan() override {
72
72
  Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Subchannel disconnected"));
@@ -37,7 +37,7 @@ namespace grpc_core {
37
37
  // DynamicFilters::Call
38
38
  //
39
39
 
40
- DynamicFilters::Call::Call(Args args, grpc_error** error)
40
+ DynamicFilters::Call::Call(Args args, grpc_error_handle* error)
41
41
  : channel_stack_(std::move(args.channel_stack)) {
42
42
  grpc_call_stack* call_stack = CALL_TO_CALL_STACK(this);
43
43
  const grpc_call_element_args call_args = {
@@ -53,8 +53,7 @@ DynamicFilters::Call::Call(Args args, grpc_error** error)
53
53
  *error = grpc_call_stack_init(channel_stack_->channel_stack_, 1, Destroy,
54
54
  this, &call_args);
55
55
  if (GPR_UNLIKELY(*error != GRPC_ERROR_NONE)) {
56
- const char* error_string = grpc_error_string(*error);
57
- gpr_log(GPR_ERROR, "error: %s", error_string);
56
+ gpr_log(GPR_ERROR, "error: %s", grpc_error_std_string(*error).c_str());
58
57
  return;
59
58
  }
60
59
  grpc_call_stack_set_pollset_or_pollset_set(call_stack, args.pollent);
@@ -94,7 +93,7 @@ void DynamicFilters::Call::Unref(const DebugLocation& /*location*/,
94
93
  GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), reason);
95
94
  }
96
95
 
97
- void DynamicFilters::Call::Destroy(void* arg, grpc_error* /*error*/) {
96
+ void DynamicFilters::Call::Destroy(void* arg, grpc_error_handle /*error*/) {
98
97
  DynamicFilters::Call* self = static_cast<DynamicFilters::Call*>(arg);
99
98
  // Keep some members before destroying the subchannel call.
100
99
  grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_;
@@ -124,13 +123,13 @@ void DynamicFilters::Call::IncrementRefCount(
124
123
 
125
124
  namespace {
126
125
 
127
- void DestroyChannelStack(void* arg, grpc_error* /*error*/) {
126
+ void DestroyChannelStack(void* arg, grpc_error_handle /*error*/) {
128
127
  grpc_channel_stack* channel_stack = static_cast<grpc_channel_stack*>(arg);
129
128
  grpc_channel_stack_destroy(channel_stack);
130
129
  gpr_free(channel_stack);
131
130
  }
132
131
 
133
- std::pair<grpc_channel_stack*, grpc_error*> CreateChannelStack(
132
+ std::pair<grpc_channel_stack*, grpc_error_handle> CreateChannelStack(
134
133
  const grpc_channel_args* args,
135
134
  std::vector<const grpc_channel_filter*> filters) {
136
135
  // Allocate memory for channel stack.
@@ -139,13 +138,13 @@ std::pair<grpc_channel_stack*, grpc_error*> CreateChannelStack(
139
138
  grpc_channel_stack* channel_stack =
140
139
  reinterpret_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
141
140
  // Initialize stack.
142
- grpc_error* error = grpc_channel_stack_init(
141
+ grpc_error_handle error = grpc_channel_stack_init(
143
142
  /*initial_refs=*/1, DestroyChannelStack, channel_stack, filters.data(),
144
143
  filters.size(), args, /*optional_transport=*/nullptr, "DynamicFilters",
145
144
  channel_stack);
146
145
  if (error != GRPC_ERROR_NONE) {
147
146
  gpr_log(GPR_ERROR, "error initializing client internal stack: %s",
148
- grpc_error_string(error));
147
+ grpc_error_std_string(error).c_str());
149
148
  grpc_channel_stack_destroy(channel_stack);
150
149
  gpr_free(channel_stack);
151
150
  return {nullptr, error};
@@ -163,7 +162,7 @@ RefCountedPtr<DynamicFilters> DynamicFilters::Create(
163
162
  if (p.second != GRPC_ERROR_NONE) {
164
163
  // Channel stack creation failed with requested filters.
165
164
  // Create with lame filter instead.
166
- grpc_error* error = p.second;
165
+ grpc_error_handle error = p.second;
167
166
  grpc_arg error_arg = MakeLameClientErrorArg(error);
168
167
  grpc_channel_args* new_args =
169
168
  grpc_channel_args_copy_and_add(args, &error_arg, 1);
@@ -180,7 +179,7 @@ DynamicFilters::~DynamicFilters() {
180
179
  }
181
180
 
182
181
  RefCountedPtr<DynamicFilters::Call> DynamicFilters::CreateCall(
183
- DynamicFilters::Call::Args args, grpc_error** error) {
182
+ DynamicFilters::Call::Args args, grpc_error_handle* error) {
184
183
  size_t allocation_size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(Call)) +
185
184
  channel_stack_->call_stack_size;
186
185
  Call* call = static_cast<Call*>(args.arena->Alloc(allocation_size));
@@ -46,7 +46,7 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
46
46
  CallCombiner* call_combiner;
47
47
  };
48
48
 
49
- Call(Args args, grpc_error** error);
49
+ Call(Args args, grpc_error_handle* error);
50
50
 
51
51
  // Continues processing a transport stream op batch.
52
52
  void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
@@ -73,7 +73,7 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
73
73
  void IncrementRefCount();
74
74
  void IncrementRefCount(const DebugLocation& location, const char* reason);
75
75
 
76
- static void Destroy(void* arg, grpc_error* error);
76
+ static void Destroy(void* arg, grpc_error_handle error);
77
77
 
78
78
  RefCountedPtr<DynamicFilters> channel_stack_;
79
79
  grpc_closure* after_call_stack_destroy_ = nullptr;
@@ -88,7 +88,7 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
88
88
 
89
89
  ~DynamicFilters() override;
90
90
 
91
- RefCountedPtr<Call> CreateCall(Call::Args args, grpc_error** error);
91
+ RefCountedPtr<Call> CreateCall(Call::Args args, grpc_error_handle* error);
92
92
 
93
93
  private:
94
94
  grpc_channel_stack* channel_stack_;
@@ -157,7 +157,7 @@ void HealthCheckClient::StartRetryTimerLocked() {
157
157
  grpc_timer_init(&retry_timer_, next_try, &retry_timer_callback_);
158
158
  }
159
159
 
160
- void HealthCheckClient::OnRetryTimer(void* arg, grpc_error* error) {
160
+ void HealthCheckClient::OnRetryTimer(void* arg, grpc_error_handle error) {
161
161
  HealthCheckClient* self = static_cast<HealthCheckClient*>(arg);
162
162
  {
163
163
  MutexLock lock(&self->mu_);
@@ -202,7 +202,7 @@ void EncodeRequest(const std::string& service_name,
202
202
 
203
203
  // Returns true if healthy.
204
204
  // If there was an error parsing the response, sets *error and returns false.
205
- bool DecodeResponse(grpc_slice_buffer* slice_buffer, grpc_error** error) {
205
+ bool DecodeResponse(grpc_slice_buffer* slice_buffer, grpc_error_handle* error) {
206
206
  // If message is empty, assume unhealthy.
207
207
  if (slice_buffer->length == 0) {
208
208
  *error =
@@ -269,11 +269,8 @@ HealthCheckClient::CallState::~CallState() {
269
269
  // Unset the call combiner cancellation closure. This has the
270
270
  // effect of scheduling the previously set cancellation closure, if
271
271
  // any, so that it can release any internal references it may be
272
- // holding to the call stack. Also flush the closures on exec_ctx so that
273
- // filters that schedule cancel notification closures on exec_ctx do not
274
- // need to take a ref of the call stack to guarantee closure liveness.
272
+ // holding to the call stack.
275
273
  call_combiner_.SetNotifyOnCancel(nullptr);
276
- ExecCtx::Get()->Flush();
277
274
  arena_->Destroy();
278
275
  }
279
276
 
@@ -293,7 +290,7 @@ void HealthCheckClient::CallState::StartCall() {
293
290
  context_,
294
291
  &call_combiner_,
295
292
  };
296
- grpc_error* error = GRPC_ERROR_NONE;
293
+ grpc_error_handle error = GRPC_ERROR_NONE;
297
294
  call_ = SubchannelCall::Create(std::move(args), &error).release();
298
295
  // Register after-destruction callback.
299
296
  GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction,
@@ -304,7 +301,8 @@ void HealthCheckClient::CallState::StartCall() {
304
301
  gpr_log(GPR_ERROR,
305
302
  "HealthCheckClient %p CallState %p: error creating health "
306
303
  "checking call on subchannel (%s); will retry",
307
- health_check_client_.get(), this, grpc_error_string(error));
304
+ health_check_client_.get(), this,
305
+ grpc_error_std_string(error).c_str());
308
306
  GRPC_ERROR_UNREF(error);
309
307
  CallEndedLocked(/*retry=*/true);
310
308
  return;
@@ -381,7 +379,7 @@ void HealthCheckClient::CallState::StartCall() {
381
379
  }
382
380
 
383
381
  void HealthCheckClient::CallState::StartBatchInCallCombiner(
384
- void* arg, grpc_error* /*error*/) {
382
+ void* arg, grpc_error_handle /*error*/) {
385
383
  grpc_transport_stream_op_batch* batch =
386
384
  static_cast<grpc_transport_stream_op_batch*>(arg);
387
385
  SubchannelCall* call =
@@ -399,14 +397,14 @@ void HealthCheckClient::CallState::StartBatch(
399
397
  }
400
398
 
401
399
  void HealthCheckClient::CallState::AfterCallStackDestruction(
402
- void* arg, grpc_error* /*error*/) {
400
+ void* arg, grpc_error_handle /*error*/) {
403
401
  HealthCheckClient::CallState* self =
404
402
  static_cast<HealthCheckClient::CallState*>(arg);
405
403
  delete self;
406
404
  }
407
405
 
408
- void HealthCheckClient::CallState::OnCancelComplete(void* arg,
409
- grpc_error* /*error*/) {
406
+ void HealthCheckClient::CallState::OnCancelComplete(
407
+ void* arg, grpc_error_handle /*error*/) {
410
408
  HealthCheckClient::CallState* self =
411
409
  static_cast<HealthCheckClient::CallState*>(arg);
412
410
  GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "health_cancel");
@@ -414,7 +412,7 @@ void HealthCheckClient::CallState::OnCancelComplete(void* arg,
414
412
  }
415
413
 
416
414
  void HealthCheckClient::CallState::StartCancel(void* arg,
417
- grpc_error* /*error*/) {
415
+ grpc_error_handle /*error*/) {
418
416
  HealthCheckClient::CallState* self =
419
417
  static_cast<HealthCheckClient::CallState*>(arg);
420
418
  auto* batch = grpc_make_transport_stream_op(
@@ -437,7 +435,7 @@ void HealthCheckClient::CallState::Cancel() {
437
435
  }
438
436
 
439
437
  void HealthCheckClient::CallState::OnComplete(void* arg,
440
- grpc_error* /*error*/) {
438
+ grpc_error_handle /*error*/) {
441
439
  HealthCheckClient::CallState* self =
442
440
  static_cast<HealthCheckClient::CallState*>(arg);
443
441
  GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "on_complete");
@@ -447,7 +445,7 @@ void HealthCheckClient::CallState::OnComplete(void* arg,
447
445
  }
448
446
 
449
447
  void HealthCheckClient::CallState::RecvInitialMetadataReady(
450
- void* arg, grpc_error* /*error*/) {
448
+ void* arg, grpc_error_handle /*error*/) {
451
449
  HealthCheckClient::CallState* self =
452
450
  static_cast<HealthCheckClient::CallState*>(arg);
453
451
  GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_initial_metadata_ready");
@@ -455,7 +453,8 @@ void HealthCheckClient::CallState::RecvInitialMetadataReady(
455
453
  self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
456
454
  }
457
455
 
458
- void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) {
456
+ void HealthCheckClient::CallState::DoneReadingRecvMessage(
457
+ grpc_error_handle error) {
459
458
  recv_message_.reset();
460
459
  if (error != GRPC_ERROR_NONE) {
461
460
  GRPC_ERROR_UNREF(error);
@@ -467,10 +466,10 @@ void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) {
467
466
  const bool healthy = DecodeResponse(&recv_message_buffer_, &error);
468
467
  const grpc_connectivity_state state =
469
468
  healthy ? GRPC_CHANNEL_READY : GRPC_CHANNEL_TRANSIENT_FAILURE;
470
- const char* reason = error == GRPC_ERROR_NONE && !healthy
471
- ? "backend unhealthy"
472
- : grpc_error_string(error);
473
- health_check_client_->SetHealthStatus(state, reason);
469
+ health_check_client_->SetHealthStatus(
470
+ state, error == GRPC_ERROR_NONE && !healthy
471
+ ? "backend unhealthy"
472
+ : grpc_error_std_string(error).c_str());
474
473
  seen_response_.Store(true, MemoryOrder::RELEASE);
475
474
  grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
476
475
  // Start another recv_message batch.
@@ -485,9 +484,9 @@ void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) {
485
484
  StartBatch(&recv_message_batch_);
486
485
  }
487
486
 
488
- grpc_error* HealthCheckClient::CallState::PullSliceFromRecvMessage() {
487
+ grpc_error_handle HealthCheckClient::CallState::PullSliceFromRecvMessage() {
489
488
  grpc_slice slice;
490
- grpc_error* error = recv_message_->Pull(&slice);
489
+ grpc_error_handle error = recv_message_->Pull(&slice);
491
490
  if (error == GRPC_ERROR_NONE) {
492
491
  grpc_slice_buffer_add(&recv_message_buffer_, slice);
493
492
  }
@@ -496,7 +495,7 @@ grpc_error* HealthCheckClient::CallState::PullSliceFromRecvMessage() {
496
495
 
497
496
  void HealthCheckClient::CallState::ContinueReadingRecvMessage() {
498
497
  while (recv_message_->Next(SIZE_MAX, &recv_message_ready_)) {
499
- grpc_error* error = PullSliceFromRecvMessage();
498
+ grpc_error_handle error = PullSliceFromRecvMessage();
500
499
  if (error != GRPC_ERROR_NONE) {
501
500
  DoneReadingRecvMessage(error);
502
501
  return;
@@ -509,7 +508,7 @@ void HealthCheckClient::CallState::ContinueReadingRecvMessage() {
509
508
  }
510
509
 
511
510
  void HealthCheckClient::CallState::OnByteStreamNext(void* arg,
512
- grpc_error* error) {
511
+ grpc_error_handle error) {
513
512
  HealthCheckClient::CallState* self =
514
513
  static_cast<HealthCheckClient::CallState*>(arg);
515
514
  if (error != GRPC_ERROR_NONE) {
@@ -528,8 +527,8 @@ void HealthCheckClient::CallState::OnByteStreamNext(void* arg,
528
527
  }
529
528
  }
530
529
 
531
- void HealthCheckClient::CallState::RecvMessageReady(void* arg,
532
- grpc_error* /*error*/) {
530
+ void HealthCheckClient::CallState::RecvMessageReady(
531
+ void* arg, grpc_error_handle /*error*/) {
533
532
  HealthCheckClient::CallState* self =
534
533
  static_cast<HealthCheckClient::CallState*>(arg);
535
534
  GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready");
@@ -545,7 +544,7 @@ void HealthCheckClient::CallState::RecvMessageReady(void* arg,
545
544
  }
546
545
 
547
546
  void HealthCheckClient::CallState::RecvTrailingMetadataReady(
548
- void* arg, grpc_error* error) {
547
+ void* arg, grpc_error_handle error) {
549
548
  HealthCheckClient::CallState* self =
550
549
  static_cast<HealthCheckClient::CallState*>(arg);
551
550
  GRPC_CALL_COMBINER_STOP(&self->call_combiner_,
@@ -64,30 +64,30 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
64
64
 
65
65
  void Orphan() override;
66
66
 
67
- void StartCall();
67
+ void StartCall() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&HealthCheckClient::mu_);
68
68
 
69
69
  private:
70
70
  void Cancel();
71
71
 
72
72
  void StartBatch(grpc_transport_stream_op_batch* batch);
73
- static void StartBatchInCallCombiner(void* arg, grpc_error* error);
73
+ static void StartBatchInCallCombiner(void* arg, grpc_error_handle error);
74
74
 
75
- // Requires holding health_check_client_->mu_.
76
- void CallEndedLocked(bool retry);
75
+ void CallEndedLocked(bool retry)
76
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(health_check_client_->mu_);
77
77
 
78
- static void OnComplete(void* arg, grpc_error* error);
79
- static void RecvInitialMetadataReady(void* arg, grpc_error* error);
80
- static void RecvMessageReady(void* arg, grpc_error* error);
81
- static void RecvTrailingMetadataReady(void* arg, grpc_error* error);
82
- static void StartCancel(void* arg, grpc_error* error);
83
- static void OnCancelComplete(void* arg, grpc_error* error);
78
+ static void OnComplete(void* arg, grpc_error_handle error);
79
+ static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
80
+ static void RecvMessageReady(void* arg, grpc_error_handle error);
81
+ static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
82
+ static void StartCancel(void* arg, grpc_error_handle error);
83
+ static void OnCancelComplete(void* arg, grpc_error_handle error);
84
84
 
85
- static void OnByteStreamNext(void* arg, grpc_error* error);
85
+ static void OnByteStreamNext(void* arg, grpc_error_handle error);
86
86
  void ContinueReadingRecvMessage();
87
- grpc_error* PullSliceFromRecvMessage();
88
- void DoneReadingRecvMessage(grpc_error* error);
87
+ grpc_error_handle PullSliceFromRecvMessage();
88
+ void DoneReadingRecvMessage(grpc_error_handle error);
89
89
 
90
- static void AfterCallStackDestruction(void* arg, grpc_error* error);
90
+ static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
91
91
 
92
92
  RefCountedPtr<HealthCheckClient> health_check_client_;
93
93
  grpc_polling_entity pollent_;
@@ -141,14 +141,14 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
141
141
  };
142
142
 
143
143
  void StartCall();
144
- void StartCallLocked(); // Requires holding mu_.
144
+ void StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
145
145
 
146
- void StartRetryTimerLocked(); // Requires holding mu_.
147
- static void OnRetryTimer(void* arg, grpc_error* error);
146
+ void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
147
+ static void OnRetryTimer(void* arg, grpc_error_handle error);
148
148
 
149
149
  void SetHealthStatus(grpc_connectivity_state state, const char* reason);
150
- void SetHealthStatusLocked(grpc_connectivity_state state,
151
- const char* reason); // Requires holding mu_.
150
+ void SetHealthStatusLocked(grpc_connectivity_state state, const char* reason)
151
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
152
152
 
153
153
  std::string service_name_;
154
154
  RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
@@ -156,18 +156,19 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
156
156
  RefCountedPtr<channelz::SubchannelNode> channelz_node_;
157
157
 
158
158
  Mutex mu_;
159
- RefCountedPtr<ConnectivityStateWatcherInterface> watcher_;
160
- bool shutting_down_ = false;
159
+ RefCountedPtr<ConnectivityStateWatcherInterface> watcher_
160
+ ABSL_GUARDED_BY(mu_);
161
+ bool shutting_down_ ABSL_GUARDED_BY(mu_) = false;
161
162
 
162
163
  // The data associated with the current health check call. It holds a ref
163
164
  // to this HealthCheckClient object.
164
- OrphanablePtr<CallState> call_state_;
165
+ OrphanablePtr<CallState> call_state_ ABSL_GUARDED_BY(mu_);
165
166
 
166
167
  // Call retry state.
167
- BackOff retry_backoff_;
168
- grpc_timer retry_timer_;
169
- grpc_closure retry_timer_callback_;
170
- bool retry_timer_callback_pending_ = false;
168
+ BackOff retry_backoff_ ABSL_GUARDED_BY(mu_);
169
+ grpc_timer retry_timer_ ABSL_GUARDED_BY(mu_);
170
+ grpc_closure retry_timer_callback_ ABSL_GUARDED_BY(mu_);
171
+ bool retry_timer_callback_pending_ ABSL_GUARDED_BY(mu_) = false;
171
172
  };
172
173
 
173
174
  } // namespace grpc_core
@@ -47,7 +47,7 @@ namespace {
47
47
  class HttpConnectHandshaker : public Handshaker {
48
48
  public:
49
49
  HttpConnectHandshaker();
50
- void Shutdown(grpc_error* why) override;
50
+ void Shutdown(grpc_error_handle why) override;
51
51
  void DoHandshake(grpc_tcp_server_acceptor* acceptor,
52
52
  grpc_closure* on_handshake_done,
53
53
  HandshakerArgs* args) override;
@@ -55,30 +55,31 @@ class HttpConnectHandshaker : public Handshaker {
55
55
 
56
56
  private:
57
57
  ~HttpConnectHandshaker() override;
58
- void CleanupArgsForFailureLocked();
59
- void HandshakeFailedLocked(grpc_error* error);
60
- static void OnWriteDone(void* arg, grpc_error* error);
61
- static void OnReadDone(void* arg, grpc_error* error);
62
- static void OnWriteDoneScheduler(void* arg, grpc_error* error);
63
- static void OnReadDoneScheduler(void* arg, grpc_error* error);
58
+ void CleanupArgsForFailureLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
59
+ void HandshakeFailedLocked(grpc_error_handle error)
60
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
61
+ static void OnWriteDone(void* arg, grpc_error_handle error);
62
+ static void OnReadDone(void* arg, grpc_error_handle error);
63
+ static void OnWriteDoneScheduler(void* arg, grpc_error_handle error);
64
+ static void OnReadDoneScheduler(void* arg, grpc_error_handle error);
64
65
 
65
66
  Mutex mu_;
66
67
 
67
- bool is_shutdown_ = false;
68
+ bool is_shutdown_ ABSL_GUARDED_BY(mu_) = false;
68
69
  // Endpoint and read buffer to destroy after a shutdown.
69
- grpc_endpoint* endpoint_to_destroy_ = nullptr;
70
- grpc_slice_buffer* read_buffer_to_destroy_ = nullptr;
70
+ grpc_endpoint* endpoint_to_destroy_ ABSL_GUARDED_BY(mu_) = nullptr;
71
+ grpc_slice_buffer* read_buffer_to_destroy_ ABSL_GUARDED_BY(mu_) = nullptr;
71
72
 
72
73
  // State saved while performing the handshake.
73
74
  HandshakerArgs* args_ = nullptr;
74
75
  grpc_closure* on_handshake_done_ = nullptr;
75
76
 
76
77
  // Objects for processing the HTTP CONNECT request and response.
77
- grpc_slice_buffer write_buffer_;
78
- grpc_closure request_done_closure_;
79
- grpc_closure response_read_closure_;
80
- grpc_http_parser http_parser_;
81
- grpc_http_response http_response_;
78
+ grpc_slice_buffer write_buffer_ ABSL_GUARDED_BY(mu_);
79
+ grpc_closure request_done_closure_ ABSL_GUARDED_BY(mu_);
80
+ grpc_closure response_read_closure_ ABSL_GUARDED_BY(mu_);
81
+ grpc_http_parser http_parser_ ABSL_GUARDED_BY(mu_);
82
+ grpc_http_response http_response_ ABSL_GUARDED_BY(mu_);
82
83
  };
83
84
 
84
85
  HttpConnectHandshaker::~HttpConnectHandshaker() {
@@ -107,7 +108,7 @@ void HttpConnectHandshaker::CleanupArgsForFailureLocked() {
107
108
 
108
109
  // If the handshake failed or we're shutting down, clean up and invoke the
109
110
  // callback with the error.
110
- void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error* error) {
111
+ void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
111
112
  if (error == GRPC_ERROR_NONE) {
112
113
  // If we were shut down after an endpoint operation succeeded but
113
114
  // before the endpoint callback was invoked, we need to generate our
@@ -133,7 +134,8 @@ void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error* error) {
133
134
 
134
135
  // This callback can be invoked inline while already holding onto the mutex. To
135
136
  // avoid deadlocks, schedule OnWriteDone on ExecCtx.
136
- void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, grpc_error* error) {
137
+ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg,
138
+ grpc_error_handle error) {
137
139
  auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
138
140
  grpc_core::ExecCtx::Run(
139
141
  DEBUG_LOCATION,
@@ -144,7 +146,7 @@ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg, grpc_error* error) {
144
146
  }
145
147
 
146
148
  // Callback invoked when finished writing HTTP CONNECT request.
147
- void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) {
149
+ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error_handle error) {
148
150
  auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
149
151
  ReleasableMutexLock lock(&handshaker->mu_);
150
152
  if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
@@ -167,7 +169,8 @@ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) {
167
169
 
168
170
  // This callback can be invoked inline while already holding onto the mutex. To
169
171
  // avoid deadlocks, schedule OnReadDone on ExecCtx.
170
- void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, grpc_error* error) {
172
+ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg,
173
+ grpc_error_handle error) {
171
174
  auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
172
175
  grpc_core::ExecCtx::Run(
173
176
  DEBUG_LOCATION,
@@ -178,7 +181,7 @@ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg, grpc_error* error) {
178
181
  }
179
182
 
180
183
  // Callback invoked for reading HTTP CONNECT response.
181
- void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error* error) {
184
+ void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
182
185
  auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
183
186
  ReleasableMutexLock lock(&handshaker->mu_);
184
187
  if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
@@ -264,7 +267,7 @@ done:
264
267
  // Public handshaker methods
265
268
  //
266
269
 
267
- void HttpConnectHandshaker::Shutdown(grpc_error* why) {
270
+ void HttpConnectHandshaker::Shutdown(grpc_error_handle why) {
268
271
  {
269
272
  MutexLock lock(&mu_);
270
273
  if (!is_shutdown_) {