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
@@ -36,27 +36,31 @@
36
36
  #include "src/core/lib/transport/status_conversion.h"
37
37
  #include "src/core/lib/transport/timeout_encoding.h"
38
38
 
39
- static grpc_error* init_frame_parser(grpc_chttp2_transport* t);
40
- static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
41
- int is_continuation);
42
- static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t);
43
- static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t);
44
- static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t);
45
- static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t);
46
- static grpc_error* init_ping_parser(grpc_chttp2_transport* t);
47
- static grpc_error* init_goaway_parser(grpc_chttp2_transport* t);
48
- static grpc_error* init_skip_frame_parser(grpc_chttp2_transport* t,
49
- int is_header);
50
-
51
- static grpc_error* parse_frame_slice(grpc_chttp2_transport* t,
52
- const grpc_slice& slice, int is_last);
53
-
54
- grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
55
- const grpc_slice& slice) {
39
+ using grpc_core::HPackParser;
40
+
41
+ static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t);
42
+ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
43
+ int is_continuation);
44
+ static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t);
45
+ static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t);
46
+ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t);
47
+ static grpc_error_handle init_window_update_frame_parser(
48
+ grpc_chttp2_transport* t);
49
+ static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t);
50
+ static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t);
51
+ static grpc_error_handle init_non_header_skip_frame_parser(
52
+ grpc_chttp2_transport* t);
53
+
54
+ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
55
+ const grpc_slice& slice,
56
+ int is_last);
57
+
58
+ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
59
+ const grpc_slice& slice) {
56
60
  const uint8_t* beg = GRPC_SLICE_START_PTR(slice);
57
61
  const uint8_t* end = GRPC_SLICE_END_PTR(slice);
58
62
  const uint8_t* cur = beg;
59
- grpc_error* err;
63
+ grpc_error_handle err;
60
64
 
61
65
  if (cur == end) return GRPC_ERROR_NONE;
62
66
 
@@ -105,8 +109,8 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
105
109
  if (cur == end) {
106
110
  return GRPC_ERROR_NONE;
107
111
  }
108
- /* fallthrough */
109
112
  dts_fh_0:
113
+ ABSL_FALLTHROUGH_INTENDED;
110
114
  case GRPC_DTS_FH_0:
111
115
  GPR_DEBUG_ASSERT(cur < end);
112
116
  t->incoming_frame_size = (static_cast<uint32_t>(*cur)) << 16;
@@ -114,7 +118,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
114
118
  t->deframe_state = GRPC_DTS_FH_1;
115
119
  return GRPC_ERROR_NONE;
116
120
  }
117
- /* fallthrough */
121
+ ABSL_FALLTHROUGH_INTENDED;
118
122
  case GRPC_DTS_FH_1:
119
123
  GPR_DEBUG_ASSERT(cur < end);
120
124
  t->incoming_frame_size |= (static_cast<uint32_t>(*cur)) << 8;
@@ -122,7 +126,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
122
126
  t->deframe_state = GRPC_DTS_FH_2;
123
127
  return GRPC_ERROR_NONE;
124
128
  }
125
- /* fallthrough */
129
+ ABSL_FALLTHROUGH_INTENDED;
126
130
  case GRPC_DTS_FH_2:
127
131
  GPR_DEBUG_ASSERT(cur < end);
128
132
  t->incoming_frame_size |= *cur;
@@ -130,7 +134,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
130
134
  t->deframe_state = GRPC_DTS_FH_3;
131
135
  return GRPC_ERROR_NONE;
132
136
  }
133
- /* fallthrough */
137
+ ABSL_FALLTHROUGH_INTENDED;
134
138
  case GRPC_DTS_FH_3:
135
139
  GPR_DEBUG_ASSERT(cur < end);
136
140
  t->incoming_frame_type = *cur;
@@ -138,7 +142,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
138
142
  t->deframe_state = GRPC_DTS_FH_4;
139
143
  return GRPC_ERROR_NONE;
140
144
  }
141
- /* fallthrough */
145
+ ABSL_FALLTHROUGH_INTENDED;
142
146
  case GRPC_DTS_FH_4:
143
147
  GPR_DEBUG_ASSERT(cur < end);
144
148
  t->incoming_frame_flags = *cur;
@@ -146,7 +150,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
146
150
  t->deframe_state = GRPC_DTS_FH_5;
147
151
  return GRPC_ERROR_NONE;
148
152
  }
149
- /* fallthrough */
153
+ ABSL_FALLTHROUGH_INTENDED;
150
154
  case GRPC_DTS_FH_5:
151
155
  GPR_DEBUG_ASSERT(cur < end);
152
156
  t->incoming_stream_id = ((static_cast<uint32_t>(*cur)) & 0x7f) << 24;
@@ -154,7 +158,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
154
158
  t->deframe_state = GRPC_DTS_FH_6;
155
159
  return GRPC_ERROR_NONE;
156
160
  }
157
- /* fallthrough */
161
+ ABSL_FALLTHROUGH_INTENDED;
158
162
  case GRPC_DTS_FH_6:
159
163
  GPR_DEBUG_ASSERT(cur < end);
160
164
  t->incoming_stream_id |= (static_cast<uint32_t>(*cur)) << 16;
@@ -162,7 +166,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
162
166
  t->deframe_state = GRPC_DTS_FH_7;
163
167
  return GRPC_ERROR_NONE;
164
168
  }
165
- /* fallthrough */
169
+ ABSL_FALLTHROUGH_INTENDED;
166
170
  case GRPC_DTS_FH_7:
167
171
  GPR_DEBUG_ASSERT(cur < end);
168
172
  t->incoming_stream_id |= (static_cast<uint32_t>(*cur)) << 8;
@@ -170,7 +174,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
170
174
  t->deframe_state = GRPC_DTS_FH_8;
171
175
  return GRPC_ERROR_NONE;
172
176
  }
173
- /* fallthrough */
177
+ ABSL_FALLTHROUGH_INTENDED;
174
178
  case GRPC_DTS_FH_8:
175
179
  GPR_DEBUG_ASSERT(cur < end);
176
180
  t->incoming_stream_id |= (static_cast<uint32_t>(*cur));
@@ -204,7 +208,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
204
208
  if (++cur == end) {
205
209
  return GRPC_ERROR_NONE;
206
210
  }
207
- /* fallthrough */
211
+ ABSL_FALLTHROUGH_INTENDED;
208
212
  case GRPC_DTS_FRAME:
209
213
  GPR_DEBUG_ASSERT(cur < end);
210
214
  if (static_cast<uint32_t>(end - cur) == t->incoming_frame_size) {
@@ -244,13 +248,13 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
244
248
  t->incoming_frame_size -= static_cast<uint32_t>(end - cur);
245
249
  return GRPC_ERROR_NONE;
246
250
  }
247
- GPR_UNREACHABLE_CODE(return nullptr);
251
+ GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
248
252
  }
249
253
 
250
- GPR_UNREACHABLE_CODE(return nullptr);
254
+ GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
251
255
  }
252
256
 
253
- static grpc_error* init_frame_parser(grpc_chttp2_transport* t) {
257
+ static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t) {
254
258
  if (t->is_first_frame &&
255
259
  t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) {
256
260
  return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
@@ -299,42 +303,61 @@ static grpc_error* init_frame_parser(grpc_chttp2_transport* t) {
299
303
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
300
304
  gpr_log(GPR_ERROR, "Unknown frame type %02x", t->incoming_frame_type);
301
305
  }
302
- return init_skip_frame_parser(t, 0);
306
+ return init_non_header_skip_frame_parser(t);
303
307
  }
304
308
  }
305
309
 
306
- static grpc_error* skip_parser(void* /*parser*/, grpc_chttp2_transport* /*t*/,
307
- grpc_chttp2_stream* /*s*/,
308
- const grpc_slice& /*slice*/, int /*is_last*/) {
310
+ static grpc_error_handle skip_parser(void* /*parser*/,
311
+ grpc_chttp2_transport* /*t*/,
312
+ grpc_chttp2_stream* /*s*/,
313
+ const grpc_slice& /*slice*/,
314
+ int /*is_last*/) {
309
315
  return GRPC_ERROR_NONE;
310
316
  }
311
317
 
312
- static grpc_error* skip_header(void* /*tp*/, grpc_mdelem md) {
318
+ grpc_error_handle skip_header(grpc_mdelem md) {
313
319
  GRPC_MDELEM_UNREF(md);
314
320
  return GRPC_ERROR_NONE;
315
321
  }
316
322
 
317
- static grpc_error* init_skip_frame_parser(grpc_chttp2_transport* t,
318
- int is_header) {
319
- if (is_header) {
320
- uint8_t is_eoh = t->expect_continuation_stream_id != 0;
321
- t->parser = grpc_chttp2_header_parser_parse;
322
- t->parser_data = &t->hpack_parser;
323
- t->hpack_parser.on_header = skip_header;
324
- t->hpack_parser.on_header_user_data = nullptr;
325
- t->hpack_parser.is_boundary = is_eoh;
326
- t->hpack_parser.is_eof = static_cast<uint8_t>(is_eoh ? t->header_eof : 0);
323
+ static HPackParser::Boundary hpack_boundary_type(grpc_chttp2_transport* t,
324
+ bool is_eoh) {
325
+ if (is_eoh) {
326
+ if (t->header_eof) {
327
+ return HPackParser::Boundary::EndOfStream;
328
+ } else {
329
+ return HPackParser::Boundary::EndOfHeaders;
330
+ }
327
331
  } else {
328
- t->parser = skip_parser;
332
+ return HPackParser::Boundary::None;
329
333
  }
334
+ }
335
+
336
+ static grpc_error_handle init_header_skip_frame_parser(
337
+ grpc_chttp2_transport* t, HPackParser::Priority priority_type) {
338
+ bool is_eoh = t->expect_continuation_stream_id != 0;
339
+ t->parser = grpc_chttp2_header_parser_parse;
340
+ t->parser_data = &t->hpack_parser;
341
+ t->hpack_parser.BeginFrame(skip_header, hpack_boundary_type(t, is_eoh),
342
+ priority_type);
343
+ return GRPC_ERROR_NONE;
344
+ }
345
+
346
+ static grpc_error_handle init_non_header_skip_frame_parser(
347
+ grpc_chttp2_transport* t) {
348
+ t->parser = skip_parser;
330
349
  return GRPC_ERROR_NONE;
331
350
  }
332
351
 
333
352
  void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
334
- init_skip_frame_parser(t, t->parser == grpc_chttp2_header_parser_parse);
353
+ if (t->parser == grpc_chttp2_header_parser_parse) {
354
+ t->hpack_parser.ResetSink(skip_header);
355
+ } else {
356
+ t->parser = skip_parser;
357
+ }
335
358
  }
336
359
 
337
- static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t) {
360
+ static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
338
361
  // Update BDP accounting since we have received a data frame.
339
362
  grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
340
363
  if (bdp_est) {
@@ -347,7 +370,7 @@ static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t) {
347
370
  }
348
371
  grpc_chttp2_stream* s =
349
372
  grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
350
- grpc_error* err = GRPC_ERROR_NONE;
373
+ grpc_error_handle err = GRPC_ERROR_NONE;
351
374
  grpc_core::chttp2::FlowControlAction action;
352
375
  if (s == nullptr) {
353
376
  err = t->flow_control->RecvData(t->incoming_frame_size);
@@ -361,12 +384,12 @@ static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t) {
361
384
  goto error_handler;
362
385
  }
363
386
  if (s == nullptr) {
364
- return init_skip_frame_parser(t, 0);
387
+ return init_non_header_skip_frame_parser(t);
365
388
  }
366
389
  s->received_bytes += t->incoming_frame_size;
367
390
  s->stats.incoming.framing_bytes += 9;
368
391
  if (err == GRPC_ERROR_NONE && s->read_closed) {
369
- return init_skip_frame_parser(t, 0);
392
+ return init_non_header_skip_frame_parser(t);
370
393
  }
371
394
  if (err == GRPC_ERROR_NONE) {
372
395
  err = grpc_chttp2_data_parser_begin_frame(
@@ -389,7 +412,7 @@ error_handler:
389
412
  grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id,
390
413
  GRPC_HTTP2_PROTOCOL_ERROR,
391
414
  &s->stats.outgoing);
392
- return init_skip_frame_parser(t, 0);
415
+ return init_non_header_skip_frame_parser(t);
393
416
  } else {
394
417
  return err;
395
418
  }
@@ -413,8 +436,8 @@ static void GPR_ATTRIBUTE_NOINLINE on_initial_header_log(
413
436
  gpr_free(value);
414
437
  }
415
438
 
416
- static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_timeout(grpc_chttp2_stream* s,
417
- grpc_mdelem md) {
439
+ static grpc_error_handle GPR_ATTRIBUTE_NOINLINE
440
+ handle_timeout(grpc_chttp2_stream* s, grpc_mdelem md) {
418
441
  grpc_millis* cached_timeout =
419
442
  static_cast<grpc_millis*>(grpc_mdelem_get_user_data(md, free_timeout));
420
443
  grpc_millis timeout;
@@ -443,9 +466,11 @@ static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_timeout(grpc_chttp2_stream* s,
443
466
  return GRPC_ERROR_NONE;
444
467
  }
445
468
 
446
- static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_metadata_size_limit_exceeded(
447
- grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_mdelem md,
448
- size_t new_size, size_t metadata_size_limit) {
469
+ static grpc_error_handle GPR_ATTRIBUTE_NOINLINE
470
+ handle_metadata_size_limit_exceeded(grpc_chttp2_transport* t,
471
+ grpc_chttp2_stream* s, grpc_mdelem md,
472
+ size_t new_size,
473
+ size_t metadata_size_limit) {
449
474
  gpr_log(GPR_DEBUG,
450
475
  "received initial metadata size exceeds limit (%" PRIuPTR
451
476
  " vs. %" PRIuPTR
@@ -463,9 +488,9 @@ static grpc_error* GPR_ATTRIBUTE_NOINLINE handle_metadata_size_limit_exceeded(
463
488
  return GRPC_ERROR_NONE;
464
489
  }
465
490
 
466
- static grpc_error* GPR_ATTRIBUTE_NOINLINE
491
+ static grpc_error_handle GPR_ATTRIBUTE_NOINLINE
467
492
  handle_metadata_add_failure(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
468
- grpc_mdelem md, grpc_error* error) {
493
+ grpc_mdelem md, grpc_error_handle error) {
469
494
  grpc_chttp2_cancel_stream(t, s, error);
470
495
  grpc_chttp2_parsing_become_skip_parser(t);
471
496
  s->seen_error = true;
@@ -473,7 +498,7 @@ handle_metadata_add_failure(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
473
498
  return GRPC_ERROR_NONE;
474
499
  }
475
500
 
476
- static grpc_error* on_initial_header(void* tp, grpc_mdelem md) {
501
+ static grpc_error_handle on_initial_header(void* tp, grpc_mdelem md) {
477
502
  GPR_TIMER_SCOPE("on_initial_header", 0);
478
503
 
479
504
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
@@ -496,7 +521,7 @@ static grpc_error* on_initial_header(void* tp, grpc_mdelem md) {
496
521
  return handle_metadata_size_limit_exceeded(t, s, md, new_size,
497
522
  metadata_size_limit);
498
523
  } else {
499
- grpc_error* error =
524
+ grpc_error_handle error =
500
525
  grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[0], md);
501
526
  if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
502
527
  return handle_metadata_add_failure(t, s, md, error);
@@ -506,7 +531,7 @@ static grpc_error* on_initial_header(void* tp, grpc_mdelem md) {
506
531
  return GRPC_ERROR_NONE;
507
532
  }
508
533
 
509
- static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) {
534
+ static grpc_error_handle on_trailing_header(void* tp, grpc_mdelem md) {
510
535
  GPR_TIMER_SCOPE("on_trailing_header", 0);
511
536
 
512
537
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
@@ -545,7 +570,7 @@ static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) {
545
570
  s->seen_error = true;
546
571
  GRPC_MDELEM_UNREF(md);
547
572
  } else {
548
- grpc_error* error =
573
+ grpc_error_handle error =
549
574
  grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[1], md);
550
575
  if (error != GRPC_ERROR_NONE) {
551
576
  grpc_chttp2_cancel_stream(t, s, error);
@@ -557,9 +582,9 @@ static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) {
557
582
  return GRPC_ERROR_NONE;
558
583
  }
559
584
 
560
- static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
561
- int is_continuation) {
562
- uint8_t is_eoh =
585
+ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
586
+ int is_continuation) {
587
+ const bool is_eoh =
563
588
  (t->incoming_frame_flags & GRPC_CHTTP2_DATA_FLAG_END_HEADERS) != 0;
564
589
  grpc_chttp2_stream* s;
565
590
 
@@ -576,6 +601,11 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
576
601
  (t->incoming_frame_flags & GRPC_CHTTP2_DATA_FLAG_END_STREAM) != 0;
577
602
  }
578
603
 
604
+ const auto priority_type = !is_continuation && (t->incoming_frame_flags &
605
+ GRPC_CHTTP2_FLAG_HAS_PRIORITY)
606
+ ? HPackParser::Priority::Included
607
+ : HPackParser::Priority::None;
608
+
579
609
  t->ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
580
610
 
581
611
  /* could be a new grpc_chttp2_stream or an existing grpc_chttp2_stream */
@@ -585,7 +615,7 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
585
615
  GRPC_CHTTP2_IF_TRACING(
586
616
  gpr_log(GPR_ERROR,
587
617
  "grpc_chttp2_stream disbanded before CONTINUATION received"));
588
- return init_skip_frame_parser(t, 1);
618
+ return init_header_skip_frame_parser(t, priority_type);
589
619
  }
590
620
  if (t->is_client) {
591
621
  if (GPR_LIKELY((t->incoming_stream_id & 1) &&
@@ -595,11 +625,7 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
595
625
  GRPC_CHTTP2_IF_TRACING(gpr_log(
596
626
  GPR_ERROR, "ignoring new grpc_chttp2_stream creation on client"));
597
627
  }
598
- grpc_error* err = init_skip_frame_parser(t, 1);
599
- if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_HAS_PRIORITY) {
600
- grpc_chttp2_hpack_parser_set_has_priority(&t->hpack_parser);
601
- }
602
- return err;
628
+ return init_header_skip_frame_parser(t, priority_type);
603
629
  } else if (GPR_UNLIKELY(t->last_new_stream_id >= t->incoming_stream_id)) {
604
630
  GRPC_CHTTP2_IF_TRACING(gpr_log(
605
631
  GPR_ERROR,
@@ -607,13 +633,13 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
607
633
  "last grpc_chttp2_stream "
608
634
  "id=%d, new grpc_chttp2_stream id=%d",
609
635
  t->last_new_stream_id, t->incoming_stream_id));
610
- return init_skip_frame_parser(t, 1);
636
+ return init_header_skip_frame_parser(t, priority_type);
611
637
  } else if (GPR_UNLIKELY((t->incoming_stream_id & 1) == 0)) {
612
638
  GRPC_CHTTP2_IF_TRACING(gpr_log(
613
639
  GPR_ERROR,
614
640
  "ignoring grpc_chttp2_stream with non-client generated index %d",
615
641
  t->incoming_stream_id));
616
- return init_skip_frame_parser(t, 1);
642
+ return init_header_skip_frame_parser(t, priority_type);
617
643
  } else if (GPR_UNLIKELY(
618
644
  grpc_chttp2_stream_map_size(&t->stream_map) >=
619
645
  t->settings[GRPC_ACKED_SETTINGS]
@@ -626,7 +652,7 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
626
652
  if (GPR_UNLIKELY(s == nullptr)) {
627
653
  GRPC_CHTTP2_IF_TRACING(
628
654
  gpr_log(GPR_ERROR, "grpc_chttp2_stream not accepted"));
629
- return init_skip_frame_parser(t, 1);
655
+ return init_header_skip_frame_parser(t, priority_type);
630
656
  }
631
657
  if (t->channelz_socket != nullptr) {
632
658
  t->channelz_socket->RecordStreamStartedFromRemote();
@@ -640,13 +666,14 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
640
666
  GRPC_CHTTP2_IF_TRACING(gpr_log(
641
667
  GPR_ERROR, "skipping already closed grpc_chttp2_stream header"));
642
668
  t->incoming_stream = nullptr;
643
- return init_skip_frame_parser(t, 1);
669
+ return init_header_skip_frame_parser(t, priority_type);
644
670
  }
645
671
  t->parser = grpc_chttp2_header_parser_parse;
646
672
  t->parser_data = &t->hpack_parser;
647
673
  if (t->header_eof) {
648
674
  s->eos_received = true;
649
675
  }
676
+ HPackParser::Sink on_header;
650
677
  switch (s->header_frames_received) {
651
678
  case 0:
652
679
  if (t->is_client && t->header_eof) {
@@ -654,32 +681,28 @@ static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
654
681
  if (s->trailing_metadata_available != nullptr) {
655
682
  *s->trailing_metadata_available = true;
656
683
  }
657
- t->hpack_parser.on_header = on_trailing_header;
684
+ on_header = [t](grpc_mdelem md) { return on_trailing_header(t, md); };
658
685
  } else {
659
686
  GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "parsing initial_metadata"));
660
- t->hpack_parser.on_header = on_initial_header;
687
+ on_header = [t](grpc_mdelem md) { return on_initial_header(t, md); };
661
688
  }
662
689
  break;
663
690
  case 1:
664
691
  GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "parsing trailing_metadata"));
665
- t->hpack_parser.on_header = on_trailing_header;
692
+ on_header = [t](grpc_mdelem md) { return on_trailing_header(t, md); };
666
693
  break;
667
694
  case 2:
668
695
  gpr_log(GPR_ERROR, "too many header frames received");
669
- return init_skip_frame_parser(t, 1);
670
- }
671
- t->hpack_parser.on_header_user_data = t;
672
- t->hpack_parser.is_boundary = is_eoh;
673
- t->hpack_parser.is_eof = static_cast<uint8_t>(is_eoh ? t->header_eof : 0);
674
- if (!is_continuation &&
675
- (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_HAS_PRIORITY)) {
676
- grpc_chttp2_hpack_parser_set_has_priority(&t->hpack_parser);
696
+ return init_header_skip_frame_parser(t, priority_type);
677
697
  }
698
+ t->hpack_parser.BeginFrame(std::move(on_header),
699
+ hpack_boundary_type(t, is_eoh), priority_type);
678
700
  return GRPC_ERROR_NONE;
679
701
  }
680
702
 
681
- static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t) {
682
- grpc_error* err = grpc_chttp2_window_update_parser_begin_frame(
703
+ static grpc_error_handle init_window_update_frame_parser(
704
+ grpc_chttp2_transport* t) {
705
+ grpc_error_handle err = grpc_chttp2_window_update_parser_begin_frame(
683
706
  &t->simple.window_update, t->incoming_frame_size,
684
707
  t->incoming_frame_flags);
685
708
  if (err != GRPC_ERROR_NONE) return err;
@@ -687,7 +710,7 @@ static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t) {
687
710
  grpc_chttp2_stream* s = t->incoming_stream =
688
711
  grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
689
712
  if (s == nullptr) {
690
- return init_skip_frame_parser(t, 0);
713
+ return init_non_header_skip_frame_parser(t);
691
714
  }
692
715
  s->stats.incoming.framing_bytes += 9;
693
716
  }
@@ -696,8 +719,8 @@ static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t) {
696
719
  return GRPC_ERROR_NONE;
697
720
  }
698
721
 
699
- static grpc_error* init_ping_parser(grpc_chttp2_transport* t) {
700
- grpc_error* err = grpc_chttp2_ping_parser_begin_frame(
722
+ static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
723
+ grpc_error_handle err = grpc_chttp2_ping_parser_begin_frame(
701
724
  &t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags);
702
725
  if (err != GRPC_ERROR_NONE) return err;
703
726
  t->parser = grpc_chttp2_ping_parser_parse;
@@ -705,14 +728,14 @@ static grpc_error* init_ping_parser(grpc_chttp2_transport* t) {
705
728
  return GRPC_ERROR_NONE;
706
729
  }
707
730
 
708
- static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t) {
709
- grpc_error* err = grpc_chttp2_rst_stream_parser_begin_frame(
731
+ static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
732
+ grpc_error_handle err = grpc_chttp2_rst_stream_parser_begin_frame(
710
733
  &t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags);
711
734
  if (err != GRPC_ERROR_NONE) return err;
712
735
  grpc_chttp2_stream* s = t->incoming_stream =
713
736
  grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
714
737
  if (!t->incoming_stream) {
715
- return init_skip_frame_parser(t, 0);
738
+ return init_non_header_skip_frame_parser(t);
716
739
  }
717
740
  s->stats.incoming.framing_bytes += 9;
718
741
  t->parser = grpc_chttp2_rst_stream_parser_parse;
@@ -720,8 +743,8 @@ static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t) {
720
743
  return GRPC_ERROR_NONE;
721
744
  }
722
745
 
723
- static grpc_error* init_goaway_parser(grpc_chttp2_transport* t) {
724
- grpc_error* err = grpc_chttp2_goaway_parser_begin_frame(
746
+ static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t) {
747
+ grpc_error_handle err = grpc_chttp2_goaway_parser_begin_frame(
725
748
  &t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags);
726
749
  if (err != GRPC_ERROR_NONE) return err;
727
750
  t->parser = grpc_chttp2_goaway_parser_parse;
@@ -729,13 +752,13 @@ static grpc_error* init_goaway_parser(grpc_chttp2_transport* t) {
729
752
  return GRPC_ERROR_NONE;
730
753
  }
731
754
 
732
- static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t) {
755
+ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
733
756
  if (t->incoming_stream_id != 0) {
734
757
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
735
758
  "Settings frame received for grpc_chttp2_stream");
736
759
  }
737
760
 
738
- grpc_error* err = grpc_chttp2_settings_parser_begin_frame(
761
+ grpc_error_handle err = grpc_chttp2_settings_parser_begin_frame(
739
762
  &t->simple.settings, t->incoming_frame_size, t->incoming_frame_flags,
740
763
  t->settings[GRPC_PEER_SETTINGS]);
741
764
  if (err != GRPC_ERROR_NONE) {
@@ -745,7 +768,7 @@ static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t) {
745
768
  memcpy(t->settings[GRPC_ACKED_SETTINGS], t->settings[GRPC_SENT_SETTINGS],
746
769
  GRPC_CHTTP2_NUM_SETTINGS * sizeof(uint32_t));
747
770
  grpc_chttp2_hptbl_set_max_bytes(
748
- &t->hpack_parser.table,
771
+ t->hpack_parser.hpack_table(),
749
772
  t->settings[GRPC_ACKED_SETTINGS]
750
773
  [GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
751
774
  t->sent_local_settings = false;
@@ -755,17 +778,17 @@ static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t) {
755
778
  return GRPC_ERROR_NONE;
756
779
  }
757
780
 
758
- static grpc_error* parse_frame_slice(grpc_chttp2_transport* t,
759
- const grpc_slice& slice, int is_last) {
781
+ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
782
+ const grpc_slice& slice,
783
+ int is_last) {
760
784
  grpc_chttp2_stream* s = t->incoming_stream;
761
- grpc_error* err = t->parser(t->parser_data, t, s, slice, is_last);
785
+ grpc_error_handle err = t->parser(t->parser_data, t, s, slice, is_last);
762
786
  intptr_t unused;
763
787
  if (GPR_LIKELY(err == GRPC_ERROR_NONE)) {
764
788
  return err;
765
789
  } else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, &unused)) {
766
790
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
767
- const char* msg = grpc_error_string(err);
768
- gpr_log(GPR_ERROR, "%s", msg);
791
+ gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
769
792
  }
770
793
  grpc_chttp2_parsing_become_skip_parser(t);
771
794
  if (s) {