grpc 1.30.1 → 1.40.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (1628) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1195 -18269
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/event_engine/README.md +38 -0
  6. data/include/grpc/event_engine/endpoint_config.h +48 -0
  7. data/include/grpc/event_engine/event_engine.h +330 -0
  8. data/include/grpc/event_engine/port.h +41 -0
  9. data/include/grpc/event_engine/slice_allocator.h +66 -0
  10. data/include/grpc/grpc.h +38 -9
  11. data/include/grpc/grpc_security.h +291 -186
  12. data/include/grpc/grpc_security_constants.h +18 -0
  13. data/include/grpc/impl/codegen/README.md +22 -0
  14. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  15. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  16. data/include/grpc/impl/codegen/grpc_types.h +60 -31
  17. data/include/grpc/impl/codegen/log.h +0 -2
  18. data/include/grpc/impl/codegen/port_platform.h +75 -87
  19. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  20. data/include/grpc/module.modulemap +14 -14
  21. data/include/grpc/slice_buffer.h +3 -3
  22. data/include/grpc/support/sync.h +3 -3
  23. data/include/grpc/support/time.h +7 -7
  24. data/src/core/ext/filters/client_channel/backend_metric.cc +14 -13
  25. data/src/core/ext/filters/client_channel/backup_poller.cc +6 -5
  26. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  27. data/src/core/ext/filters/client_channel/client_channel.cc +2112 -2959
  28. data/src/core/ext/filters/client_channel/client_channel.h +514 -62
  29. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -4
  30. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
  31. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  32. data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
  33. data/src/core/ext/filters/client_channel/config_selector.h +146 -0
  34. data/src/core/ext/filters/client_channel/connector.h +1 -1
  35. data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
  36. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  37. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  39. data/src/core/ext/filters/client_channel/health/health_check_client.cc +46 -35
  40. data/src/core/ext/filters/client_channel/health/health_check_client.h +34 -33
  41. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +39 -37
  42. data/src/core/ext/filters/client_channel/http_proxy.cc +42 -24
  43. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
  44. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  45. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -7
  46. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  48. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +301 -267
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -40
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +34 -37
  58. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -51
  59. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
  61. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +18 -24
  62. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +15 -37
  63. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +41 -34
  64. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +472 -145
  65. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
  66. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  67. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +787 -0
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +700 -0
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1372 -0
  70. data/src/core/ext/filters/client_channel/lb_policy.cc +11 -18
  71. data/src/core/ext/filters/client_channel/lb_policy.h +80 -53
  72. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  73. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -10
  74. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  75. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  76. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +71 -78
  78. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -33
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +11 -9
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +14 -12
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -20
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +495 -79
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +6 -1
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  88. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +45 -36
  89. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +40 -45
  90. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -6
  91. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
  92. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
  93. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +883 -71
  94. data/src/core/ext/filters/client_channel/{xds/xds_channel_args.h → resolver/xds/xds_resolver.h} +9 -7
  95. data/src/core/ext/filters/client_channel/resolver.cc +7 -5
  96. data/src/core/ext/filters/client_channel/resolver.h +7 -15
  97. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  98. data/src/core/ext/filters/client_channel/resolver_registry.cc +49 -49
  99. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  100. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +50 -303
  101. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +26 -54
  102. data/src/core/ext/filters/client_channel/retry_filter.cc +2611 -0
  103. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  104. data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
  105. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  106. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  107. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
  108. data/src/core/ext/filters/client_channel/server_address.cc +129 -7
  109. data/src/core/ext/filters/client_channel/server_address.h +75 -21
  110. data/src/core/ext/filters/client_channel/service_config.cc +27 -21
  111. data/src/core/ext/filters/client_channel/service_config.h +11 -7
  112. data/src/core/ext/filters/client_channel/service_config_call_data.h +60 -2
  113. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +143 -0
  114. data/src/core/ext/filters/client_channel/service_config_parser.cc +14 -12
  115. data/src/core/ext/filters/client_channel/service_config_parser.h +12 -6
  116. data/src/core/ext/filters/client_channel/subchannel.cc +188 -236
  117. data/src/core/ext/filters/client_channel/subchannel.h +88 -113
  118. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  119. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  120. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
  121. data/src/core/ext/filters/client_idle/client_idle_filter.cc +18 -17
  122. data/src/core/ext/filters/deadline/deadline_filter.cc +94 -86
  123. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  124. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
  125. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  126. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  127. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  128. data/src/core/ext/filters/http/client/http_client_filter.cc +39 -29
  129. data/src/core/ext/filters/http/client_authority_filter.cc +9 -9
  130. data/src/core/ext/filters/http/http_filters_plugin.cc +8 -4
  131. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  132. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +91 -50
  133. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  134. data/src/core/ext/filters/http/server/http_server_filter.cc +30 -26
  135. data/src/core/ext/filters/max_age/max_age_filter.cc +50 -44
  136. data/src/core/ext/filters/message_size/message_size_filter.cc +72 -92
  137. data/src/core/ext/filters/message_size/message_size_filter.h +8 -1
  138. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
  139. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  140. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  141. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +90 -34
  142. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
  143. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
  144. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +23 -11
  145. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +38 -50
  146. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -352
  147. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  148. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +14 -5
  149. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +22 -20
  150. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +67 -24
  151. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +8 -8
  152. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
  153. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
  154. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +457 -447
  155. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
  156. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  157. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  158. data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
  159. data/src/core/ext/transport/chttp2/transport/flow_control.h +34 -26
  160. data/src/core/ext/transport/chttp2/transport/frame_data.cc +26 -25
  161. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  162. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -23
  163. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  164. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -14
  165. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  166. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +19 -20
  167. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  168. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  169. data/src/core/ext/transport/chttp2/transport/frame_settings.h +8 -7
  170. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +19 -24
  171. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  172. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  173. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +681 -765
  174. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
  175. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +17 -20
  176. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  177. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  178. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  179. data/src/core/ext/transport/chttp2/transport/internal.h +57 -30
  180. data/src/core/ext/transport/chttp2/transport/parsing.cc +181 -180
  181. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
  182. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
  183. data/src/core/ext/transport/inproc/inproc_transport.cc +154 -88
  184. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  185. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  186. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  187. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  188. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
  189. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
  190. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
  191. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
  192. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1452 -0
  193. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  194. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
  195. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +461 -0
  196. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1850 -0
  197. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
  198. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
  199. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
  200. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +370 -0
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1126 -0
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  208. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
  209. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  210. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
  211. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  212. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
  213. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  214. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
  215. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  216. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
  217. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
  218. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
  219. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +239 -0
  220. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +982 -0
  221. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
  222. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
  223. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
  224. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
  225. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +8 -8
  226. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
  227. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +43 -0
  228. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
  229. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
  230. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
  231. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
  232. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
  233. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  234. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
  235. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  236. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
  237. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
  238. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
  239. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -0
  240. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +604 -0
  241. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +161 -0
  242. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +638 -0
  243. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
  244. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
  245. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +42 -0
  246. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +115 -0
  247. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  248. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  249. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  250. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  251. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +179 -0
  252. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
  253. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +82 -0
  254. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +294 -0
  255. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +953 -0
  256. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3862 -0
  257. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  258. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
  259. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
  260. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
  261. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  262. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  263. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  264. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +285 -0
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +117 -0
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +404 -0
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1671 -0
  271. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
  272. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
  273. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +116 -0
  274. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +475 -0
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
  279. data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +6 -9
  280. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
  281. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +6 -5
  282. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
  285. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -10
  286. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
  287. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +6 -10
  288. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
  289. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
  290. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
  291. data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +6 -7
  292. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
  293. data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +6 -7
  294. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
  295. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
  296. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +438 -0
  297. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
  298. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +65 -0
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  313. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  314. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
  315. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  316. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
  317. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  318. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
  319. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  320. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
  321. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
  322. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
  323. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
  324. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
  325. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +7 -6
  326. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
  327. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  328. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  329. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
  330. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
  331. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
  332. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  333. data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
  334. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  335. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
  336. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +106 -106
  337. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +688 -499
  338. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  339. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
  340. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  341. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
  342. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
  343. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
  344. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  345. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
  346. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  347. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
  348. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  349. data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
  350. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
  351. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
  352. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
  353. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
  354. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  355. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
  356. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  357. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
  358. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  359. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
  360. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  361. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
  362. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  363. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
  364. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  365. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  366. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +12 -6
  367. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  368. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
  369. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
  370. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
  371. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  372. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  373. data/src/core/ext/upb-generated/validate/validate.upb.c +133 -117
  374. data/src/core/ext/upb-generated/validate/validate.upb.h +881 -645
  375. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
  376. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  377. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  378. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  379. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  380. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  381. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
  382. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  383. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  384. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  385. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  386. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  389. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +46 -0
  390. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  391. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  392. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +252 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
  396. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  397. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  398. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  399. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +570 -0
  400. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  402. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  403. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
  404. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  406. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  408. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +300 -0
  410. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +145 -0
  411. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +144 -0
  412. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  413. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  414. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  415. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  416. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  417. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  418. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  422. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  423. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +287 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +100 -0
  425. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +72 -0
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
  436. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  437. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  438. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  439. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  440. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  441. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  442. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  443. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +205 -0
  444. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
  445. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +201 -0
  446. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  447. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
  448. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  449. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +67 -0
  450. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  451. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  452. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  453. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  454. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  455. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
  456. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
  457. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +964 -0
  458. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
  459. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  460. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  461. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
  462. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  463. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  464. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  465. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  466. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  467. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
  468. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  469. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
  470. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  471. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +571 -0
  472. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +125 -0
  473. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
  474. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  475. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +178 -0
  476. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  477. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
  478. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  479. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +246 -0
  480. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  481. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  482. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  483. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  484. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  485. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
  486. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  487. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
  488. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  489. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
  490. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  491. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
  492. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  493. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
  494. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  495. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  496. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  497. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
  498. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  499. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
  500. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  501. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  502. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  503. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  504. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  505. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  506. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  507. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  508. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  509. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +76 -0
  510. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  511. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
  512. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  513. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  514. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  515. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  516. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  517. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  518. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  519. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  520. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  521. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  522. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
  523. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  524. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  525. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  526. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  527. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  528. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  529. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  530. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  531. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  532. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  533. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
  534. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  536. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  537. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
  538. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  539. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  540. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  541. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  542. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  543. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
  544. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  545. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  546. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  547. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  548. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  549. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  550. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  551. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  552. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  553. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  554. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  555. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  556. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  557. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  558. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  559. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  560. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  561. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +332 -0
  562. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  563. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  564. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  565. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  566. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  567. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  568. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  569. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  570. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  571. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  572. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  573. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  574. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  575. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  576. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  577. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  578. data/src/core/ext/xds/certificate_provider_store.cc +87 -0
  579. data/src/core/ext/xds/certificate_provider_store.h +112 -0
  580. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  581. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  582. data/src/core/ext/xds/xds_api.cc +4124 -0
  583. data/src/core/ext/xds/xds_api.h +709 -0
  584. data/src/core/ext/xds/xds_bootstrap.cc +496 -0
  585. data/src/core/ext/xds/xds_bootstrap.h +115 -0
  586. data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
  587. data/src/core/ext/xds/xds_certificate_provider.h +151 -0
  588. data/src/core/ext/xds/xds_channel_args.h +32 -0
  589. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +1056 -884
  590. data/src/core/ext/xds/xds_client.h +375 -0
  591. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +63 -19
  592. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +52 -23
  593. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  594. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  595. data/src/core/ext/xds/xds_http_filters.cc +115 -0
  596. data/src/core/ext/xds/xds_http_filters.h +133 -0
  597. data/src/core/ext/xds/xds_server_config_fetcher.cc +546 -0
  598. data/src/core/{ext/filters/client_channel → lib/address_utils}/parse_address.cc +129 -45
  599. data/src/core/lib/address_utils/parse_address.h +77 -0
  600. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +138 -19
  601. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +38 -7
  602. data/src/core/lib/channel/call_tracer.h +85 -0
  603. data/src/core/lib/channel/channel_args.cc +9 -8
  604. data/src/core/lib/channel/channel_args.h +0 -1
  605. data/src/core/lib/channel/channel_stack.cc +22 -9
  606. data/src/core/lib/channel/channel_stack.h +18 -10
  607. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  608. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  609. data/src/core/lib/channel/channel_trace.cc +6 -8
  610. data/src/core/lib/channel/channel_trace.h +1 -1
  611. data/src/core/lib/channel/channelz.cc +148 -99
  612. data/src/core/lib/channel/channelz.h +47 -24
  613. data/src/core/lib/channel/channelz_registry.cc +29 -12
  614. data/src/core/lib/channel/channelz_registry.h +3 -1
  615. data/src/core/lib/channel/connected_channel.cc +4 -4
  616. data/src/core/lib/channel/context.h +3 -0
  617. data/src/core/lib/channel/handshaker.cc +11 -52
  618. data/src/core/lib/channel/handshaker.h +8 -25
  619. data/src/core/lib/channel/status_util.cc +12 -2
  620. data/src/core/lib/channel/status_util.h +9 -0
  621. data/src/core/lib/compression/compression.cc +8 -4
  622. data/src/core/lib/compression/compression_args.cc +3 -2
  623. data/src/core/lib/compression/compression_internal.cc +10 -5
  624. data/src/core/lib/compression/compression_internal.h +2 -1
  625. data/src/core/lib/compression/stream_compression.h +1 -1
  626. data/src/core/lib/compression/stream_compression_gzip.h +1 -1
  627. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  628. data/src/core/lib/compression/stream_compression_identity.h +1 -1
  629. data/src/core/lib/debug/stats.h +3 -3
  630. data/src/core/lib/debug/stats_data.cc +1 -0
  631. data/src/core/lib/debug/stats_data.h +13 -13
  632. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  633. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  634. data/src/core/lib/event_engine/event_engine.cc +50 -0
  635. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  636. data/src/core/lib/event_engine/sockaddr.h +44 -0
  637. data/src/core/lib/gpr/alloc.cc +3 -2
  638. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  639. data/src/core/lib/gpr/log.cc +59 -17
  640. data/src/core/lib/gpr/log_linux.cc +23 -9
  641. data/src/core/lib/gpr/log_posix.cc +19 -7
  642. data/src/core/lib/gpr/log_windows.cc +18 -4
  643. data/src/core/lib/gpr/murmur_hash.cc +5 -3
  644. data/src/core/lib/gpr/spinlock.h +10 -2
  645. data/src/core/lib/gpr/string.cc +33 -31
  646. data/src/core/lib/gpr/string.h +9 -8
  647. data/src/core/lib/gpr/sync.cc +4 -4
  648. data/src/core/lib/gpr/sync_abseil.cc +3 -6
  649. data/src/core/lib/gpr/sync_posix.cc +2 -8
  650. data/src/core/lib/gpr/sync_windows.cc +2 -2
  651. data/src/core/lib/gpr/time.cc +12 -12
  652. data/src/core/lib/gpr/time_precise.cc +5 -2
  653. data/src/core/lib/gpr/time_precise.h +6 -2
  654. data/src/core/lib/gpr/tls.h +4 -0
  655. data/src/core/lib/gpr/tls_msvc.h +2 -0
  656. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  657. data/src/core/lib/gpr/useful.h +5 -4
  658. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  659. data/src/core/lib/gprpp/arena.h +3 -2
  660. data/src/core/lib/gprpp/atomic.h +3 -3
  661. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  662. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  663. data/src/core/lib/gprpp/examine_stack.h +46 -0
  664. data/src/core/lib/gprpp/fork.cc +2 -2
  665. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  666. data/src/core/lib/gprpp/manual_constructor.h +2 -2
  667. data/src/core/lib/gprpp/mpscq.cc +2 -2
  668. data/src/core/lib/gprpp/orphanable.h +7 -11
  669. data/src/core/lib/gprpp/ref_counted.h +105 -68
  670. data/src/core/lib/gprpp/ref_counted_ptr.h +168 -7
  671. data/src/core/lib/gprpp/stat.h +38 -0
  672. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  673. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  674. data/src/core/lib/gprpp/status_helper.cc +407 -0
  675. data/src/core/lib/gprpp/status_helper.h +183 -0
  676. data/src/core/lib/gprpp/sync.h +104 -43
  677. data/src/core/lib/gprpp/thd.h +3 -3
  678. data/src/core/lib/gprpp/thd_posix.cc +42 -37
  679. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  680. data/src/core/lib/gprpp/time_util.cc +77 -0
  681. data/src/core/lib/gprpp/time_util.h +42 -0
  682. data/src/core/lib/http/httpcli.cc +25 -22
  683. data/src/core/lib/http/httpcli.h +2 -3
  684. data/src/core/lib/http/httpcli_security_connector.cc +19 -15
  685. data/src/core/lib/http/parser.cc +63 -43
  686. data/src/core/lib/http/parser.h +4 -4
  687. data/src/core/lib/iomgr/buffer_list.cc +8 -10
  688. data/src/core/lib/iomgr/buffer_list.h +5 -6
  689. data/src/core/lib/iomgr/call_combiner.cc +21 -15
  690. data/src/core/lib/iomgr/call_combiner.h +12 -14
  691. data/src/core/lib/iomgr/cfstream_handle.cc +6 -5
  692. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  693. data/src/core/lib/iomgr/closure.h +7 -6
  694. data/src/core/lib/iomgr/combiner.cc +16 -13
  695. data/src/core/lib/iomgr/combiner.h +2 -2
  696. data/src/core/lib/iomgr/endpoint.cc +6 -2
  697. data/src/core/lib/iomgr/endpoint.h +10 -6
  698. data/src/core/lib/iomgr/endpoint_cfstream.cc +46 -23
  699. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  700. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  701. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  702. data/src/core/lib/iomgr/error.cc +185 -73
  703. data/src/core/lib/iomgr/error.h +218 -107
  704. data/src/core/lib/iomgr/error_cfstream.cc +12 -10
  705. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  706. data/src/core/lib/iomgr/error_internal.h +6 -2
  707. data/src/core/lib/iomgr/ev_apple.cc +16 -13
  708. data/src/core/lib/iomgr/ev_apple.h +1 -1
  709. data/src/core/lib/iomgr/ev_epoll1_linux.cc +47 -41
  710. data/src/core/lib/iomgr/ev_epollex_linux.cc +92 -87
  711. data/src/core/lib/iomgr/ev_poll_posix.cc +41 -35
  712. data/src/core/lib/iomgr/ev_posix.cc +12 -11
  713. data/src/core/lib/iomgr/ev_posix.h +9 -9
  714. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  715. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  716. data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
  717. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  718. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  719. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  720. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  721. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  722. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  723. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  724. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  725. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  726. data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
  727. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  728. data/src/core/lib/iomgr/exec_ctx.cc +19 -7
  729. data/src/core/lib/iomgr/exec_ctx.h +20 -17
  730. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  731. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  732. data/src/core/lib/iomgr/executor/threadpool.h +6 -6
  733. data/src/core/lib/iomgr/executor.cc +10 -9
  734. data/src/core/lib/iomgr/executor.h +3 -3
  735. data/src/core/lib/iomgr/iomgr.cc +3 -3
  736. data/src/core/lib/iomgr/iomgr.h +1 -1
  737. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  738. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  739. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  740. data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
  741. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -13
  742. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  743. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  744. data/src/core/lib/iomgr/load_file.cc +4 -4
  745. data/src/core/lib/iomgr/load_file.h +2 -2
  746. data/src/core/lib/iomgr/lockfree_event.cc +20 -15
  747. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  748. data/src/core/lib/iomgr/pollset.cc +5 -5
  749. data/src/core/lib/iomgr/pollset.h +9 -9
  750. data/src/core/lib/iomgr/pollset_custom.cc +7 -7
  751. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  752. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  753. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  754. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  755. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  756. data/src/core/lib/iomgr/port.h +8 -26
  757. data/src/core/lib/iomgr/python_util.h +5 -5
  758. data/src/core/lib/iomgr/resolve_address.cc +12 -8
  759. data/src/core/lib/iomgr/resolve_address.h +12 -6
  760. data/src/core/lib/iomgr/resolve_address_custom.cc +23 -27
  761. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  762. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -8
  763. data/src/core/lib/iomgr/resolve_address_windows.cc +12 -12
  764. data/src/core/lib/iomgr/resource_quota.cc +48 -42
  765. data/src/core/lib/iomgr/sockaddr.h +1 -0
  766. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  767. data/src/core/lib/iomgr/socket_mutator.cc +18 -4
  768. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  769. data/src/core/lib/iomgr/socket_utils_common_posix.cc +120 -77
  770. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  771. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  772. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  773. data/src/core/lib/iomgr/tcp_client_cfstream.cc +13 -15
  774. data/src/core/lib/iomgr/tcp_client_custom.cc +17 -20
  775. data/src/core/lib/iomgr/tcp_client_posix.cc +48 -54
  776. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  777. data/src/core/lib/iomgr/tcp_client_windows.cc +16 -14
  778. data/src/core/lib/iomgr/tcp_custom.cc +67 -48
  779. data/src/core/lib/iomgr/tcp_custom.h +14 -13
  780. data/src/core/lib/iomgr/tcp_posix.cc +118 -94
  781. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  782. data/src/core/lib/iomgr/tcp_server.cc +9 -10
  783. data/src/core/lib/iomgr/tcp_server.h +19 -16
  784. data/src/core/lib/iomgr/tcp_server_custom.cc +57 -58
  785. data/src/core/lib/iomgr/tcp_server_posix.cc +62 -61
  786. data/src/core/lib/iomgr/tcp_server_utils_posix.h +16 -16
  787. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +26 -25
  788. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -17
  789. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  790. data/src/core/lib/iomgr/tcp_server_windows.cc +42 -41
  791. data/src/core/lib/iomgr/tcp_uv.cc +27 -25
  792. data/src/core/lib/iomgr/tcp_windows.cc +39 -23
  793. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  794. data/src/core/lib/iomgr/timer.h +6 -1
  795. data/src/core/lib/iomgr/timer_custom.cc +7 -6
  796. data/src/core/lib/iomgr/timer_custom.h +1 -1
  797. data/src/core/lib/iomgr/timer_generic.cc +24 -23
  798. data/src/core/lib/iomgr/timer_manager.cc +4 -4
  799. data/src/core/lib/iomgr/udp_server.cc +46 -45
  800. data/src/core/lib/iomgr/udp_server.h +6 -4
  801. data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
  802. data/src/core/lib/iomgr/unix_sockets_posix.h +9 -2
  803. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +20 -7
  804. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  805. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  806. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -6
  807. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  808. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  809. data/src/core/lib/iomgr/work_serializer.h +17 -1
  810. data/src/core/lib/json/json.h +13 -3
  811. data/src/core/lib/json/json_reader.cc +33 -31
  812. data/src/core/lib/json/json_util.cc +58 -0
  813. data/src/core/lib/json/json_util.h +204 -0
  814. data/src/core/lib/json/json_writer.cc +2 -1
  815. data/src/core/lib/matchers/matchers.cc +327 -0
  816. data/src/core/lib/matchers/matchers.h +161 -0
  817. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  818. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  819. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  820. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  821. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  822. data/src/core/lib/security/context/security_context.cc +4 -3
  823. data/src/core/lib/security/context/security_context.h +3 -1
  824. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  825. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  826. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  827. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  828. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  829. data/src/core/lib/security/credentials/credentials.cc +7 -7
  830. data/src/core/lib/security/credentials/credentials.h +12 -9
  831. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +417 -0
  832. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
  833. data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
  834. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  835. data/src/core/lib/security/credentials/external/external_account_credentials.cc +500 -0
  836. data/src/core/lib/security/credentials/external/external_account_credentials.h +121 -0
  837. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  838. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  839. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
  840. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +60 -0
  841. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  842. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  843. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  844. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +95 -65
  845. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  846. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  847. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
  848. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -5
  849. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -7
  850. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -5
  851. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +12 -9
  852. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  853. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  854. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +78 -92
  855. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -9
  856. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -12
  857. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  858. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
  859. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
  860. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +347 -0
  861. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
  862. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +454 -0
  863. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +145 -0
  864. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +82 -150
  865. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +65 -185
  866. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
  867. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
  868. data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
  869. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  870. data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
  871. data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
  872. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +14 -4
  873. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +33 -28
  874. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
  875. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +97 -0
  876. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  877. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  878. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  879. data/src/core/lib/security/security_connector/local/local_security_connector.cc +25 -12
  880. data/src/core/lib/security/security_connector/security_connector.cc +6 -3
  881. data/src/core/lib/security/security_connector/security_connector.h +14 -7
  882. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -21
  883. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  884. data/src/core/lib/security/security_connector/ssl_utils.cc +82 -33
  885. data/src/core/lib/security/security_connector/ssl_utils.h +29 -25
  886. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +380 -312
  887. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +141 -79
  888. data/src/core/lib/security/transport/client_auth_filter.cc +28 -19
  889. data/src/core/lib/security/transport/secure_endpoint.cc +13 -7
  890. data/src/core/lib/security/transport/security_handshaker.cc +81 -44
  891. data/src/core/lib/security/transport/server_auth_filter.cc +19 -12
  892. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  893. data/src/core/lib/security/transport/tsi_error.h +2 -1
  894. data/src/core/lib/security/util/json_util.cc +14 -15
  895. data/src/core/lib/security/util/json_util.h +2 -1
  896. data/src/core/lib/slice/slice.cc +57 -7
  897. data/src/core/lib/slice/slice_buffer.cc +2 -1
  898. data/src/core/lib/slice/slice_intern.cc +11 -13
  899. data/src/core/lib/slice/slice_internal.h +4 -2
  900. data/src/core/lib/surface/call.cc +164 -136
  901. data/src/core/lib/surface/call.h +15 -3
  902. data/src/core/lib/surface/call_details.cc +8 -8
  903. data/src/core/lib/surface/channel.cc +55 -63
  904. data/src/core/lib/surface/channel.h +24 -7
  905. data/src/core/lib/surface/channel_init.cc +1 -1
  906. data/src/core/lib/surface/channel_ping.cc +1 -1
  907. data/src/core/lib/surface/completion_queue.cc +96 -96
  908. data/src/core/lib/surface/completion_queue.h +18 -17
  909. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  910. data/src/core/lib/surface/init.cc +46 -32
  911. data/src/core/lib/surface/init.h +10 -1
  912. data/src/core/lib/surface/lame_client.cc +51 -58
  913. data/src/core/lib/surface/lame_client.h +5 -0
  914. data/src/core/lib/surface/server.cc +1181 -1365
  915. data/src/core/lib/surface/server.h +463 -70
  916. data/src/core/lib/surface/validate_metadata.cc +7 -7
  917. data/src/core/lib/surface/validate_metadata.h +6 -2
  918. data/src/core/lib/surface/version.cc +2 -2
  919. data/src/core/lib/transport/authority_override.cc +40 -0
  920. data/src/core/lib/transport/authority_override.h +37 -0
  921. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  922. data/src/core/lib/transport/bdp_estimator.h +2 -1
  923. data/src/core/lib/transport/byte_stream.cc +5 -5
  924. data/src/core/lib/transport/byte_stream.h +11 -11
  925. data/src/core/lib/transport/connectivity_state.cc +19 -14
  926. data/src/core/lib/transport/connectivity_state.h +26 -12
  927. data/src/core/lib/transport/error_utils.cc +33 -9
  928. data/src/core/lib/transport/error_utils.h +15 -3
  929. data/src/core/lib/transport/metadata.cc +16 -2
  930. data/src/core/lib/transport/metadata.h +2 -2
  931. data/src/core/lib/transport/metadata_batch.cc +76 -38
  932. data/src/core/lib/transport/metadata_batch.h +43 -21
  933. data/src/core/lib/transport/static_metadata.cc +296 -277
  934. data/src/core/lib/transport/static_metadata.h +80 -73
  935. data/src/core/lib/transport/status_metadata.cc +4 -3
  936. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  937. data/src/core/lib/transport/transport.cc +9 -6
  938. data/src/core/lib/transport/transport.h +26 -11
  939. data/src/core/lib/transport/transport_op_string.cc +6 -6
  940. data/src/core/lib/uri/uri_parser.cc +135 -258
  941. data/src/core/lib/uri/uri_parser.h +58 -20
  942. data/src/core/plugin_registry/grpc_plugin_registry.cc +61 -20
  943. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  944. data/src/core/tsi/alts/crypt/gsec.h +6 -0
  945. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  946. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +47 -42
  947. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +74 -53
  948. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  949. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  950. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
  951. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  952. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  953. data/src/core/tsi/fake_transport_security.cc +17 -5
  954. data/src/core/tsi/local_transport_security.cc +5 -1
  955. data/src/core/tsi/local_transport_security.h +6 -7
  956. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  957. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  958. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -2
  959. data/src/core/tsi/ssl_transport_security.cc +199 -73
  960. data/src/core/tsi/ssl_transport_security.h +23 -12
  961. data/src/core/tsi/transport_security.cc +10 -8
  962. data/src/core/tsi/transport_security_interface.h +6 -1
  963. data/src/ruby/bin/math_services_pb.rb +5 -5
  964. data/src/ruby/ext/grpc/extconf.rb +17 -4
  965. data/src/ruby/ext/grpc/rb_call.c +3 -2
  966. data/src/ruby/ext/grpc/rb_call.h +4 -0
  967. data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
  968. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  969. data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
  970. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  971. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  972. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  973. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  974. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  975. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +46 -18
  976. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +87 -45
  977. data/src/ruby/ext/grpc/rb_server.c +13 -1
  978. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  979. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  980. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  981. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  982. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  983. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  984. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  985. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  986. data/src/ruby/lib/grpc/version.rb +1 -1
  987. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
  988. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
  989. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
  990. data/src/ruby/spec/call_spec.rb +1 -1
  991. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  992. data/src/ruby/spec/channel_spec.rb +17 -6
  993. data/src/ruby/spec/client_auth_spec.rb +27 -1
  994. data/src/ruby/spec/errors_spec.rb +1 -1
  995. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  996. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  997. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  998. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  999. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  1000. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  1001. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  1002. data/src/ruby/spec/pb/codegen/package_option_spec.rb +27 -7
  1003. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1004. data/src/ruby/spec/server_spec.rb +22 -0
  1005. data/src/ruby/spec/user_agent_spec.rb +74 -0
  1006. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  1007. data/third_party/abseil-cpp/absl/base/attributes.h +122 -41
  1008. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1009. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  1010. data/third_party/abseil-cpp/absl/base/config.h +97 -26
  1011. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +442 -335
  1012. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
  1013. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1014. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1015. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  1016. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  1017. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  1018. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  1019. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  1020. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1021. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
  1022. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
  1023. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
  1024. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +33 -30
  1025. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1026. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
  1027. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1028. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  1029. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1030. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  1031. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1032. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  1033. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  1034. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1035. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1036. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1037. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  1038. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  1039. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1040. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1041. data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
  1042. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1043. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1044. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1045. data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
  1046. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  1047. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  1048. data/third_party/abseil-cpp/absl/container/inlined_vector.h +38 -39
  1049. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  1050. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1051. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  1052. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  1053. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  1054. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  1055. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +274 -0
  1056. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +322 -0
  1057. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  1058. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  1059. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  1060. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  1061. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  1062. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +61 -0
  1063. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  1064. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  1065. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  1066. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1949 -0
  1067. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  1068. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  1069. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  1070. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
  1071. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1072. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +80 -0
  1073. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1074. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
  1075. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1076. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1077. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  1078. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +147 -0
  1079. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  1080. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1081. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  1082. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1083. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  1084. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1085. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1086. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  1087. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1088. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1089. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1090. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  1091. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1092. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1093. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  1094. data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
  1095. data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  1096. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +70 -0
  1097. data/third_party/abseil-cpp/absl/hash/internal/hash.h +1045 -0
  1098. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  1099. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  1100. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1101. data/third_party/abseil-cpp/absl/meta/type_traits.h +18 -10
  1102. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1103. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  1104. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  1105. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1106. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1107. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
  1108. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1109. data/third_party/abseil-cpp/absl/status/status.cc +452 -0
  1110. data/third_party/abseil-cpp/absl/status/status.h +878 -0
  1111. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1112. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1113. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  1114. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  1115. data/third_party/abseil-cpp/absl/strings/charconv.cc +7 -7
  1116. data/third_party/abseil-cpp/absl/strings/cord.cc +1953 -0
  1117. data/third_party/abseil-cpp/absl/strings/cord.h +1394 -0
  1118. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1119. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1120. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1121. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1122. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +8 -8
  1123. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  1124. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +543 -0
  1125. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1126. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  1127. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  1128. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  1129. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1130. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +150 -64
  1131. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +16 -2
  1132. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +29 -21
  1133. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
  1134. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  1135. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  1136. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1137. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1138. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1139. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +22 -6
  1140. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +27 -11
  1141. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  1142. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1143. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1144. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1145. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  1146. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  1147. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1148. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1149. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  1150. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1151. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1152. data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
  1153. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  1154. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  1155. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  1156. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1157. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1158. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  1159. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  1160. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1161. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1162. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1163. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1164. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1165. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
  1166. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1167. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1168. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
  1169. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
  1170. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
  1171. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
  1172. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1173. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1174. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  1175. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1176. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1177. data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
  1178. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1179. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +33 -27
  1180. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  1181. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1182. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1183. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1184. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1185. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  1186. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1187. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1188. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +2 -2
  1189. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  1190. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1191. data/third_party/abseil-cpp/absl/time/time.h +41 -40
  1192. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1193. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1194. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1195. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1196. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  1197. data/third_party/abseil-cpp/absl/types/variant.h +866 -0
  1198. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1199. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1200. data/third_party/boringssl-with-bazel/err_data.c +763 -721
  1201. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
  1202. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  1203. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1204. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1205. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +15 -20
  1206. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1207. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  1208. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
  1209. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  1210. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -22
  1211. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
  1212. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  1213. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  1214. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  1215. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1216. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  1217. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
  1218. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
  1219. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  1220. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  1221. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  1222. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1223. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1224. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  1225. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1226. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  1227. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  1228. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1230. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1231. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1232. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
  1233. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1234. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1235. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1236. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1237. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1238. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1239. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  1241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
  1242. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1243. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → dsa/internal.h} +16 -11
  1244. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1245. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  1246. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  1247. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1248. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  1249. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  1250. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  1255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +21 -3
  1256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
  1258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +198 -37
  1259. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1260. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  1261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
  1267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  1268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  1269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  1270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  1271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  1273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
  1275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
  1276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +25 -0
  1283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +122 -43
  1284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
  1285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  1286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +56 -34
  1287. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +116 -60
  1288. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1289. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +231 -11
  1290. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
  1291. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
  1292. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
  1293. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +584 -0
  1294. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  1295. data/third_party/boringssl-with-bazel/src/crypto/mem.c +43 -15
  1296. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  1297. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
  1298. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  1299. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +131 -53
  1300. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  1301. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1302. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1303. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1304. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1305. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1306. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1307. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1308. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
  1309. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
  1310. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
  1311. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1312. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
  1313. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  1314. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  1315. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
  1316. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1317. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  1318. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1319. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  1320. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  1321. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1322. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  1323. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
  1324. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
  1325. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  1326. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
  1327. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
  1328. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
  1329. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1330. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
  1331. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +71 -59
  1332. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  1333. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +98 -25
  1334. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
  1335. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1336. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  1337. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -10
  1338. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1339. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +43 -17
  1340. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  1341. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1342. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
  1343. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1344. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
  1345. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1346. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
  1347. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1348. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1349. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +12 -0
  1350. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  1351. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  1352. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
  1353. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  1354. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
  1355. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
  1356. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  1357. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1358. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1359. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1360. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  1361. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
  1362. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +127 -41
  1363. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  1364. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +11 -14
  1365. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  1366. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1367. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
  1368. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +746 -561
  1369. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  1370. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +58 -10
  1371. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  1372. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1373. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +23 -7
  1374. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1375. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -4
  1376. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1377. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  1378. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1379. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +62 -20
  1380. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +16 -2
  1381. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1382. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  1383. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1384. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +104 -51
  1385. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  1386. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  1387. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  1388. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1389. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  1390. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
  1391. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  1392. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1393. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  1394. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  1395. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +467 -125
  1396. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -12
  1397. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
  1398. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1456 -780
  1399. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  1400. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +595 -441
  1401. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1402. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
  1403. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1404. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
  1405. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
  1406. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +97 -53
  1407. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +202 -109
  1408. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +174 -30
  1409. data/third_party/boringssl-with-bazel/src/ssl/internal.h +504 -162
  1410. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1411. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
  1412. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1413. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
  1414. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
  1415. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  1416. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  1417. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +162 -60
  1418. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1419. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +26 -73
  1420. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1421. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -5
  1422. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +12 -8
  1423. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
  1424. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +1070 -566
  1425. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +66 -9
  1426. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +183 -76
  1427. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +169 -89
  1428. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +379 -140
  1429. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1430. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1431. data/third_party/re2/re2/bitmap256.h +117 -0
  1432. data/third_party/re2/re2/bitstate.cc +385 -0
  1433. data/third_party/re2/re2/compile.cc +1279 -0
  1434. data/third_party/re2/re2/dfa.cc +2130 -0
  1435. data/third_party/re2/re2/filtered_re2.cc +121 -0
  1436. data/third_party/re2/re2/filtered_re2.h +109 -0
  1437. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  1438. data/third_party/re2/re2/nfa.cc +713 -0
  1439. data/third_party/re2/re2/onepass.cc +623 -0
  1440. data/third_party/re2/re2/parse.cc +2464 -0
  1441. data/third_party/re2/re2/perl_groups.cc +119 -0
  1442. data/third_party/re2/re2/pod_array.h +55 -0
  1443. data/third_party/re2/re2/prefilter.cc +710 -0
  1444. data/third_party/re2/re2/prefilter.h +108 -0
  1445. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  1446. data/third_party/re2/re2/prefilter_tree.h +139 -0
  1447. data/third_party/re2/re2/prog.cc +988 -0
  1448. data/third_party/re2/re2/prog.h +436 -0
  1449. data/third_party/re2/re2/re2.cc +1362 -0
  1450. data/third_party/re2/re2/re2.h +1002 -0
  1451. data/third_party/re2/re2/regexp.cc +980 -0
  1452. data/third_party/re2/re2/regexp.h +659 -0
  1453. data/third_party/re2/re2/set.cc +154 -0
  1454. data/third_party/re2/re2/set.h +80 -0
  1455. data/third_party/re2/re2/simplify.cc +657 -0
  1456. data/third_party/re2/re2/sparse_array.h +392 -0
  1457. data/third_party/re2/re2/sparse_set.h +264 -0
  1458. data/third_party/re2/re2/stringpiece.cc +65 -0
  1459. data/third_party/re2/re2/stringpiece.h +210 -0
  1460. data/third_party/re2/re2/tostring.cc +351 -0
  1461. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  1462. data/third_party/re2/re2/unicode_casefold.h +78 -0
  1463. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  1464. data/third_party/re2/re2/unicode_groups.h +67 -0
  1465. data/third_party/re2/re2/walker-inl.h +246 -0
  1466. data/third_party/re2/util/benchmark.h +156 -0
  1467. data/third_party/re2/util/flags.h +26 -0
  1468. data/third_party/re2/util/logging.h +109 -0
  1469. data/third_party/re2/util/malloc_counter.h +19 -0
  1470. data/third_party/re2/util/mix.h +41 -0
  1471. data/third_party/re2/util/mutex.h +148 -0
  1472. data/third_party/re2/util/pcre.cc +1025 -0
  1473. data/third_party/re2/util/pcre.h +681 -0
  1474. data/third_party/re2/util/rune.cc +260 -0
  1475. data/third_party/re2/util/strutil.cc +149 -0
  1476. data/third_party/re2/util/strutil.h +21 -0
  1477. data/third_party/re2/util/test.h +50 -0
  1478. data/third_party/re2/util/utf.h +44 -0
  1479. data/third_party/re2/util/util.h +42 -0
  1480. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  1481. data/third_party/upb/upb/decode.c +604 -511
  1482. data/third_party/upb/upb/decode.h +20 -1
  1483. data/third_party/upb/upb/decode.int.h +163 -0
  1484. data/third_party/upb/upb/decode_fast.c +1040 -0
  1485. data/third_party/upb/upb/decode_fast.h +126 -0
  1486. data/third_party/upb/upb/def.c +2178 -0
  1487. data/third_party/upb/upb/def.h +315 -0
  1488. data/third_party/upb/upb/def.hpp +439 -0
  1489. data/third_party/upb/upb/encode.c +311 -211
  1490. data/third_party/upb/upb/encode.h +27 -2
  1491. data/third_party/upb/upb/msg.c +215 -70
  1492. data/third_party/upb/upb/msg.h +558 -14
  1493. data/third_party/upb/upb/port_def.inc +105 -63
  1494. data/third_party/upb/upb/port_undef.inc +10 -7
  1495. data/third_party/upb/upb/reflection.c +408 -0
  1496. data/third_party/upb/upb/reflection.h +168 -0
  1497. data/third_party/upb/upb/table.c +73 -269
  1498. data/third_party/upb/upb/table.int.h +25 -57
  1499. data/third_party/upb/upb/text_encode.c +421 -0
  1500. data/third_party/upb/upb/text_encode.h +38 -0
  1501. data/third_party/upb/upb/upb.c +138 -135
  1502. data/third_party/upb/upb/upb.h +119 -146
  1503. data/third_party/upb/upb/upb.hpp +88 -0
  1504. data/third_party/upb/upb/upb.int.h +29 -0
  1505. data/third_party/xxhash/xxhash.h +5325 -0
  1506. metadata +698 -181
  1507. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  1508. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  1509. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
  1510. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  1511. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  1512. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  1513. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
  1514. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
  1515. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  1516. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  1517. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -342
  1518. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
  1519. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  1520. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  1521. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
  1522. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  1523. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  1524. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  1525. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  1526. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  1527. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  1528. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  1529. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  1530. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  1531. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  1532. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  1533. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  1534. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  1535. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  1536. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  1537. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  1538. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  1539. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  1540. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  1541. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  1542. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  1543. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  1544. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  1545. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  1546. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  1547. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  1548. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  1549. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  1550. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  1551. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  1552. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  1553. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  1554. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  1555. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  1556. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  1557. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  1558. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  1559. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  1560. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  1561. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  1562. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  1563. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  1564. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  1565. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  1566. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  1567. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  1568. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  1569. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  1570. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  1571. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  1572. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  1573. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  1574. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  1575. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  1576. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  1577. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  1578. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  1579. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  1580. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  1581. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  1582. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  1583. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  1584. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  1585. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  1586. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  1587. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  1588. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  1589. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  1590. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  1591. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  1592. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  1593. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  1594. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  1595. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  1596. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  1597. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  1598. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  1599. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  1600. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  1601. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  1602. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  1603. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  1604. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  1605. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  1606. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  1607. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  1608. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  1609. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  1610. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  1611. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  1612. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  1613. data/src/core/lib/gpr/arena.h +0 -47
  1614. data/src/core/lib/gprpp/map.h +0 -53
  1615. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  1616. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  1617. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  1618. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  1619. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  1620. data/src/core/lib/slice/slice_hash_table.h +0 -199
  1621. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  1622. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  1623. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  1624. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  1625. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  1626. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  1627. data/third_party/upb/upb/generated_util.h +0 -105
  1628. data/third_party/upb/upb/port.c +0 -26
@@ -25,9 +25,11 @@
25
25
  #include <stddef.h>
26
26
  #include <string.h>
27
27
 
28
+ #include "absl/strings/str_cat.h"
29
+ #include "absl/strings/str_format.h"
30
+
28
31
  #include <grpc/support/alloc.h>
29
32
  #include <grpc/support/log.h>
30
- #include <grpc/support/string_util.h>
31
33
 
32
34
  #include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
33
35
  #include "src/core/lib/debug/stats.h"
@@ -38,17 +40,17 @@
38
40
  #include "src/core/lib/surface/validate_metadata.h"
39
41
  #include "src/core/lib/transport/http2_errors.h"
40
42
 
41
- grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser(
42
- false, "chttp2_hpack_parser");
43
+ #if __cplusplus > 201103L
44
+ #define GRPC_HPACK_CONSTEXPR_FN constexpr
45
+ #define GRPC_HPACK_CONSTEXPR_VALUE constexpr
46
+ #else
47
+ #define GRPC_HPACK_CONSTEXPR_FN
48
+ #define GRPC_HPACK_CONSTEXPR_VALUE const
49
+ #endif
50
+
51
+ namespace grpc_core {
43
52
 
44
- typedef enum {
45
- NOT_BINARY,
46
- BINARY_BEGIN,
47
- B64_BYTE0,
48
- B64_BYTE1,
49
- B64_BYTE2,
50
- B64_BYTE3
51
- } binary_state;
53
+ DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser(false, "chttp2_hpack_parser");
52
54
 
53
55
  /* How parsing works:
54
56
 
@@ -64,173 +66,6 @@ typedef enum {
64
66
  It's expected that most optimizing compilers will turn this code into
65
67
  a set of indirect jumps, and so not waste stack space. */
66
68
 
67
- /* forward declarations for parsing states */
68
- static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
69
- const uint8_t* end);
70
- static grpc_error* parse_error(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
71
- const uint8_t* end, grpc_error* error);
72
- static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p,
73
- const uint8_t* cur, const uint8_t* end);
74
- static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p,
75
- const uint8_t* cur, const uint8_t* end);
76
-
77
- static grpc_error* parse_string_prefix(grpc_chttp2_hpack_parser* p,
78
- const uint8_t* cur, const uint8_t* end);
79
- static grpc_error* parse_key_string(grpc_chttp2_hpack_parser* p,
80
- const uint8_t* cur, const uint8_t* end);
81
- static grpc_error* parse_value_string_with_indexed_key(
82
- grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end);
83
- static grpc_error* parse_value_string_with_literal_key(
84
- grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end);
85
-
86
- static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
87
- const uint8_t* end);
88
- static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
89
- const uint8_t* end);
90
- static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
91
- const uint8_t* end);
92
- static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
93
- const uint8_t* end);
94
- static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
95
- const uint8_t* end);
96
- static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p,
97
- const uint8_t* cur, const uint8_t* end);
98
-
99
- static grpc_error* parse_indexed_field(grpc_chttp2_hpack_parser* p,
100
- const uint8_t* cur, const uint8_t* end);
101
- static grpc_error* parse_indexed_field_x(grpc_chttp2_hpack_parser* p,
102
- const uint8_t* cur,
103
- const uint8_t* end);
104
- static grpc_error* parse_lithdr_incidx(grpc_chttp2_hpack_parser* p,
105
- const uint8_t* cur, const uint8_t* end);
106
- static grpc_error* parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p,
107
- const uint8_t* cur,
108
- const uint8_t* end);
109
- static grpc_error* parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p,
110
- const uint8_t* cur,
111
- const uint8_t* end);
112
- static grpc_error* parse_lithdr_notidx(grpc_chttp2_hpack_parser* p,
113
- const uint8_t* cur, const uint8_t* end);
114
- static grpc_error* parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p,
115
- const uint8_t* cur,
116
- const uint8_t* end);
117
- static grpc_error* parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p,
118
- const uint8_t* cur,
119
- const uint8_t* end);
120
- static grpc_error* parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p,
121
- const uint8_t* cur, const uint8_t* end);
122
- static grpc_error* parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p,
123
- const uint8_t* cur,
124
- const uint8_t* end);
125
- static grpc_error* parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p,
126
- const uint8_t* cur,
127
- const uint8_t* end);
128
- static grpc_error* parse_max_tbl_size(grpc_chttp2_hpack_parser* p,
129
- const uint8_t* cur, const uint8_t* end);
130
- static grpc_error* parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p,
131
- const uint8_t* cur, const uint8_t* end);
132
-
133
- /* we translate the first byte of a hpack field into one of these decoding
134
- cases, then use a lookup table to jump directly to the appropriate parser.
135
-
136
- _X => the integer index is all ones, meaning we need to do varint decoding
137
- _V => the integer index is all zeros, meaning we need to decode an additional
138
- string value */
139
- typedef enum {
140
- INDEXED_FIELD,
141
- INDEXED_FIELD_X,
142
- LITHDR_INCIDX,
143
- LITHDR_INCIDX_X,
144
- LITHDR_INCIDX_V,
145
- LITHDR_NOTIDX,
146
- LITHDR_NOTIDX_X,
147
- LITHDR_NOTIDX_V,
148
- LITHDR_NVRIDX,
149
- LITHDR_NVRIDX_X,
150
- LITHDR_NVRIDX_V,
151
- MAX_TBL_SIZE,
152
- MAX_TBL_SIZE_X,
153
- ILLEGAL
154
- } first_byte_type;
155
-
156
- /* jump table of parse state functions -- order must match first_byte_type
157
- above */
158
- static const grpc_chttp2_hpack_parser_state first_byte_action[] = {
159
- parse_indexed_field, parse_indexed_field_x, parse_lithdr_incidx,
160
- parse_lithdr_incidx_x, parse_lithdr_incidx_v, parse_lithdr_notidx,
161
- parse_lithdr_notidx_x, parse_lithdr_notidx_v, parse_lithdr_nvridx,
162
- parse_lithdr_nvridx_x, parse_lithdr_nvridx_v, parse_max_tbl_size,
163
- parse_max_tbl_size_x, parse_illegal_op};
164
-
165
- /* indexes the first byte to a parse state function - generated by
166
- gen_hpack_tables.c */
167
- static const uint8_t first_byte_lut[256] = {
168
- LITHDR_NOTIDX_V, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX,
169
- LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX,
170
- LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX,
171
- LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX_X,
172
- LITHDR_NVRIDX_V, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX,
173
- LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX,
174
- LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX,
175
- LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX_X,
176
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
177
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
178
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
179
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
180
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
181
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
182
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
183
- MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE_X,
184
- LITHDR_INCIDX_V, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
185
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
186
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
187
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
188
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
189
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
190
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
191
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
192
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
193
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
194
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
195
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
196
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
197
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
198
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
199
- LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX_X,
200
- ILLEGAL, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
201
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
202
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
203
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
204
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
205
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
206
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
207
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
208
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
209
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
210
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
211
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
212
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
213
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
214
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
215
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
216
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
217
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
218
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
219
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
220
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
221
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
222
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
223
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
224
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
225
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
226
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
227
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
228
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
229
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
230
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
231
- INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD_X,
232
- };
233
-
234
69
  /* state table for huffman decoding: given a state, gives an index/16 into
235
70
  next_sub_tbl. Taking that index and adding the value of the nibble being
236
71
  considered returns the next state.
@@ -604,28 +439,37 @@ static const int16_t emit_sub_tbl[249 * 16] = {
604
439
  13, 22, 22, 22, 22, 256, 256, 256, 256,
605
440
  };
606
441
 
607
- static const uint8_t inverse_base64[256] = {
608
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
609
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
610
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255,
611
- 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255,
612
- 255, 64, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
613
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
614
- 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33,
615
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
616
- 49, 50, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
617
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
618
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
619
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
620
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
621
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
622
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
623
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
624
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
625
- 255,
442
+ namespace {
443
+ // The alphabet used for base64 encoding binary metadata.
444
+ static constexpr char kBase64Alphabet[] =
445
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
446
+
447
+ // An inverted table: for each value in kBase64Alphabet, table contains the
448
+ // index with which it's stored, so we can quickly invert the encoding without
449
+ // any complicated runtime logic.
450
+ struct Base64InverseTable {
451
+ uint8_t table[256]{};
452
+ GRPC_HPACK_CONSTEXPR_FN Base64InverseTable() {
453
+ for (int i = 0; i < 256; i++) {
454
+ table[i] = 255;
455
+ }
456
+ for (const char* p = kBase64Alphabet; *p; p++) {
457
+ uint8_t idx = *p;
458
+ uint8_t ofs = p - kBase64Alphabet;
459
+ table[idx] = ofs;
460
+ }
461
+ }
626
462
  };
627
463
 
628
- static void GPR_ATTRIBUTE_NOINLINE on_hdr_log(grpc_mdelem md) {
464
+ static GRPC_HPACK_CONSTEXPR_VALUE Base64InverseTable kBase64InverseTable;
465
+ } // namespace
466
+
467
+ void HPackParser::FinishFrame() {
468
+ sink_ = Sink();
469
+ dynamic_table_updates_allowed_ = 2;
470
+ }
471
+
472
+ void GPR_ATTRIBUTE_NOINLINE HPackParser::LogHeader(grpc_mdelem md) {
629
473
  char* k = grpc_slice_to_c_string(GRPC_MDKEY(md));
630
474
  char* v = nullptr;
631
475
  if (grpc_is_binary_header_internal(GRPC_MDKEY(md))) {
@@ -644,179 +488,270 @@ static void GPR_ATTRIBUTE_NOINLINE on_hdr_log(grpc_mdelem md) {
644
488
  }
645
489
 
646
490
  /* emission helpers */
647
- template <bool do_add>
648
- static grpc_error* on_hdr(grpc_chttp2_hpack_parser* p, grpc_mdelem md) {
491
+ template <HPackParser::TableAction action>
492
+ grpc_error_handle HPackParser::FinishHeader(grpc_mdelem md) {
649
493
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
650
- on_hdr_log(md);
494
+ LogHeader(md);
651
495
  }
652
- if (do_add) {
496
+ if (action == TableAction::kAddToTable) {
653
497
  GPR_DEBUG_ASSERT(GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_INTERNED ||
654
498
  GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_STATIC);
655
- grpc_error* err = grpc_chttp2_hptbl_add(&p->table, md);
499
+ grpc_error_handle err = grpc_chttp2_hptbl_add(&table_, md);
656
500
  if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err;
657
501
  }
658
- return p->on_header(p->on_header_user_data, md);
502
+ return sink_(md);
659
503
  }
660
504
 
661
- static grpc_core::UnmanagedMemorySlice take_string_extern(
662
- grpc_chttp2_hpack_parser* /*p*/, grpc_chttp2_hpack_parser_string* str) {
663
- grpc_core::UnmanagedMemorySlice s;
664
- if (!str->copied) {
665
- GPR_DEBUG_ASSERT(!grpc_slice_is_interned(str->data.referenced));
666
- s = static_cast<grpc_core::UnmanagedMemorySlice&>(str->data.referenced);
667
- str->copied = true;
668
- str->data.referenced = grpc_core::UnmanagedMemorySlice();
505
+ UnmanagedMemorySlice HPackParser::String::TakeExtern() {
506
+ UnmanagedMemorySlice s;
507
+ if (!copied_) {
508
+ GPR_DEBUG_ASSERT(!grpc_slice_is_interned(data_.referenced));
509
+ s = static_cast<UnmanagedMemorySlice&>(data_.referenced);
510
+ copied_ = true;
511
+ data_.referenced = UnmanagedMemorySlice();
669
512
  } else {
670
- s = grpc_core::UnmanagedMemorySlice(str->data.copied.str,
671
- str->data.copied.length);
513
+ s = UnmanagedMemorySlice(data_.copied.str, data_.copied.length);
672
514
  }
673
- str->data.copied.length = 0;
515
+ data_.copied.length = 0;
674
516
  return s;
675
517
  }
676
518
 
677
- static grpc_core::ManagedMemorySlice take_string_intern(
678
- grpc_chttp2_hpack_parser* /*p*/, grpc_chttp2_hpack_parser_string* str) {
679
- grpc_core::ManagedMemorySlice s;
680
- if (!str->copied) {
681
- s = grpc_core::ManagedMemorySlice(&str->data.referenced);
682
- grpc_slice_unref_internal(str->data.referenced);
683
- str->copied = true;
684
- str->data.referenced = grpc_empty_slice();
519
+ ManagedMemorySlice HPackParser::String::TakeIntern() {
520
+ ManagedMemorySlice s;
521
+ if (!copied_) {
522
+ s = ManagedMemorySlice(&data_.referenced);
523
+ grpc_slice_unref_internal(data_.referenced);
524
+ copied_ = true;
525
+ data_.referenced = grpc_empty_slice();
685
526
  } else {
686
- s = grpc_core::ManagedMemorySlice(str->data.copied.str,
687
- str->data.copied.length);
527
+ s = ManagedMemorySlice(data_.copied.str, data_.copied.length);
688
528
  }
689
- str->data.copied.length = 0;
529
+ data_.copied.length = 0;
690
530
  return s;
691
531
  }
692
532
 
693
- /* jump to the next state */
694
- static grpc_error* parse_next(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
695
- const uint8_t* end) {
696
- p->state = *p->next_state++;
697
- return p->state(p, cur, end);
533
+ grpc_error_handle HPackParser::parse_next(const uint8_t* cur,
534
+ const uint8_t* end) {
535
+ state_ = *next_state_++;
536
+ return (this->*state_)(cur, end);
698
537
  }
699
538
 
700
539
  /* begin parsing a header: all functionality is encoded into lookup tables
701
540
  above */
702
- static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
703
- const uint8_t* end) {
541
+ grpc_error_handle HPackParser::parse_begin(const uint8_t* cur,
542
+ const uint8_t* end) {
704
543
  if (cur == end) {
705
- p->state = parse_begin;
544
+ state_ = &HPackParser::parse_begin;
706
545
  return GRPC_ERROR_NONE;
707
546
  }
708
547
 
709
- return first_byte_action[first_byte_lut[*cur]](p, cur, end);
548
+ switch (*cur >> 4) {
549
+ // Literal header not indexed.
550
+ // First byte format: 0000xxxx
551
+ // Where xxxx:
552
+ // 0000 - literal key
553
+ // 1111 - indexed key, varint encoded index
554
+ // other - indexed key, inline encoded index
555
+ case 0:
556
+ switch (*cur & 0xf) {
557
+ case 0: // literal key
558
+ return parse_lithdr_notidx_v(cur, end);
559
+ case 0xf: // varint encoded key index
560
+ return parse_lithdr_notidx_x(cur, end);
561
+ default: // inline encoded key index
562
+ return parse_lithdr_notidx(cur, end);
563
+ }
564
+ // Literal header never indexed.
565
+ // First byte format: 0001xxxx
566
+ // Where xxxx:
567
+ // 0000 - literal key
568
+ // 1111 - indexed key, varint encoded index
569
+ // other - indexed key, inline encoded index
570
+ case 1:
571
+ switch (*cur & 0xf) {
572
+ case 0: // literal key
573
+ return parse_lithdr_nvridx_v(cur, end);
574
+ case 0xf: // varint encoded key index
575
+ return parse_lithdr_nvridx_x(cur, end);
576
+ default: // inline encoded key index
577
+ return parse_lithdr_nvridx(cur, end);
578
+ }
579
+ // Update max table size.
580
+ // First byte format: 001xxxxx
581
+ // Where xxxxx:
582
+ // 11111 - max size is varint encoded
583
+ // other - max size is stored inline
584
+ case 2:
585
+ // inline encoded max table size
586
+ return parse_max_tbl_size(cur, end);
587
+ case 3:
588
+ if (*cur == 0x3f) {
589
+ // varint encoded max table size
590
+ return parse_max_tbl_size_x(cur, end);
591
+ } else {
592
+ // inline encoded max table size
593
+ return parse_max_tbl_size(cur, end);
594
+ }
595
+ // Literal header with incremental indexing.
596
+ // First byte format: 01xxxxxx
597
+ // Where xxxxxx:
598
+ // 000000 - literal key
599
+ // 111111 - indexed key, varint encoded index
600
+ // other - indexed key, inline encoded index
601
+ case 4:
602
+ if (*cur == 0x40) {
603
+ // literal key
604
+ return parse_lithdr_incidx_v(cur, end);
605
+ }
606
+ ABSL_FALLTHROUGH_INTENDED;
607
+ case 5:
608
+ case 6:
609
+ // inline encoded key index
610
+ return parse_lithdr_incidx(cur, end);
611
+ case 7:
612
+ if (*cur == 0x7f) {
613
+ // varint encoded key index
614
+ return parse_lithdr_incidx_x(cur, end);
615
+ } else {
616
+ // inline encoded key index
617
+ return parse_lithdr_incidx(cur, end);
618
+ }
619
+ // Indexed Header Field Representation
620
+ // First byte format: 1xxxxxxx
621
+ // Where xxxxxxx:
622
+ // 0000000 - illegal
623
+ // 1111111 - varint encoded field index
624
+ // other - inline encoded field index
625
+ case 8:
626
+ if (*cur == 0x80) {
627
+ // illegal value.
628
+ return parse_illegal_op(cur, end);
629
+ }
630
+ ABSL_FALLTHROUGH_INTENDED;
631
+ case 9:
632
+ case 10:
633
+ case 11:
634
+ case 12:
635
+ case 13:
636
+ case 14:
637
+ // inline encoded field index
638
+ return parse_indexed_field(cur, end);
639
+ case 15:
640
+ if (*cur == 0xff) {
641
+ // varint encoded field index
642
+ return parse_indexed_field_x(cur, end);
643
+ } else {
644
+ // inline encoded field index
645
+ return parse_indexed_field(cur, end);
646
+ }
647
+ }
648
+ GPR_UNREACHABLE_CODE(abort());
710
649
  }
711
650
 
712
651
  /* stream dependency and prioritization data: we just skip it */
713
- static grpc_error* parse_stream_weight(grpc_chttp2_hpack_parser* p,
714
- const uint8_t* cur, const uint8_t* end) {
652
+ grpc_error_handle HPackParser::parse_stream_weight(const uint8_t* cur,
653
+ const uint8_t* end) {
715
654
  if (cur == end) {
716
- p->state = parse_stream_weight;
655
+ state_ = &HPackParser::parse_stream_weight;
717
656
  return GRPC_ERROR_NONE;
718
657
  }
719
658
 
720
- return p->after_prioritization(p, cur + 1, end);
659
+ return (this->*after_prioritization_)(cur + 1, end);
721
660
  }
722
661
 
723
- static grpc_error* parse_stream_dep3(grpc_chttp2_hpack_parser* p,
724
- const uint8_t* cur, const uint8_t* end) {
662
+ grpc_error_handle HPackParser::parse_stream_dep3(const uint8_t* cur,
663
+ const uint8_t* end) {
725
664
  if (cur == end) {
726
- p->state = parse_stream_dep3;
665
+ state_ = &HPackParser::parse_stream_dep3;
727
666
  return GRPC_ERROR_NONE;
728
667
  }
729
668
 
730
- return parse_stream_weight(p, cur + 1, end);
669
+ return parse_stream_weight(cur + 1, end);
731
670
  }
732
671
 
733
- static grpc_error* parse_stream_dep2(grpc_chttp2_hpack_parser* p,
734
- const uint8_t* cur, const uint8_t* end) {
672
+ grpc_error_handle HPackParser::parse_stream_dep2(const uint8_t* cur,
673
+ const uint8_t* end) {
735
674
  if (cur == end) {
736
- p->state = parse_stream_dep2;
675
+ state_ = &HPackParser::parse_stream_dep2;
737
676
  return GRPC_ERROR_NONE;
738
677
  }
739
678
 
740
- return parse_stream_dep3(p, cur + 1, end);
679
+ return parse_stream_dep3(cur + 1, end);
741
680
  }
742
681
 
743
- static grpc_error* parse_stream_dep1(grpc_chttp2_hpack_parser* p,
744
- const uint8_t* cur, const uint8_t* end) {
682
+ grpc_error_handle HPackParser::parse_stream_dep1(const uint8_t* cur,
683
+ const uint8_t* end) {
745
684
  if (cur == end) {
746
- p->state = parse_stream_dep1;
685
+ state_ = &HPackParser::parse_stream_dep1;
747
686
  return GRPC_ERROR_NONE;
748
687
  }
749
688
 
750
- return parse_stream_dep2(p, cur + 1, end);
689
+ return parse_stream_dep2(cur + 1, end);
751
690
  }
752
691
 
753
- static grpc_error* parse_stream_dep0(grpc_chttp2_hpack_parser* p,
754
- const uint8_t* cur, const uint8_t* end) {
692
+ grpc_error_handle HPackParser::parse_stream_dep0(const uint8_t* cur,
693
+ const uint8_t* end) {
755
694
  if (cur == end) {
756
- p->state = parse_stream_dep0;
695
+ state_ = &HPackParser::parse_stream_dep0;
757
696
  return GRPC_ERROR_NONE;
758
697
  }
759
698
 
760
- return parse_stream_dep1(p, cur + 1, end);
699
+ return parse_stream_dep1(cur + 1, end);
761
700
  }
762
701
 
763
- static grpc_error* GPR_ATTRIBUTE_NOINLINE
764
- on_invalid_hpack_idx(grpc_chttp2_hpack_parser* p) {
702
+ grpc_error_handle HPackParser::InvalidHPackIndexError() {
765
703
  return grpc_error_set_int(
766
704
  grpc_error_set_int(
767
705
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid HPACK index received"),
768
- GRPC_ERROR_INT_INDEX, static_cast<intptr_t>(p->index)),
769
- GRPC_ERROR_INT_SIZE, static_cast<intptr_t>(p->table.num_ents));
706
+ GRPC_ERROR_INT_INDEX, static_cast<intptr_t>(index_)),
707
+ GRPC_ERROR_INT_SIZE, static_cast<intptr_t>(table_.num_ents));
770
708
  }
771
709
 
772
710
  /* emit an indexed field; jumps to begin the next field on completion */
773
- static grpc_error* finish_indexed_field(grpc_chttp2_hpack_parser* p,
774
- const uint8_t* cur,
775
- const uint8_t* end) {
776
- grpc_mdelem md = grpc_chttp2_hptbl_lookup<true>(&p->table, p->index);
711
+ grpc_error_handle HPackParser::finish_indexed_field(const uint8_t* cur,
712
+ const uint8_t* end) {
713
+ grpc_mdelem md = grpc_chttp2_hptbl_lookup<true>(&table_, index_);
777
714
  if (GPR_UNLIKELY(GRPC_MDISNULL(md))) {
778
- return on_invalid_hpack_idx(p);
715
+ return InvalidHPackIndexError();
779
716
  }
780
717
  GRPC_STATS_INC_HPACK_RECV_INDEXED();
781
- grpc_error* err = on_hdr<false>(p, md);
718
+ grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(md);
782
719
  if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err;
783
- return parse_begin(p, cur, end);
720
+ return parse_begin(cur, end);
784
721
  }
785
722
 
786
723
  /* parse an indexed field with index < 127 */
787
- static grpc_error* parse_indexed_field(grpc_chttp2_hpack_parser* p,
788
- const uint8_t* cur, const uint8_t* end) {
789
- p->dynamic_table_update_allowed = 0;
790
- p->index = (*cur) & 0x7f;
791
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
792
- return finish_indexed_field(p, cur + 1, end);
724
+ grpc_error_handle HPackParser::parse_indexed_field(const uint8_t* cur,
725
+ const uint8_t* end) {
726
+ dynamic_table_updates_allowed_ = 0;
727
+ index_ = (*cur) & 0x7f;
728
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
729
+ return finish_indexed_field(cur + 1, end);
793
730
  }
794
731
 
795
732
  /* parse an indexed field with index >= 127 */
796
- static grpc_error* parse_indexed_field_x(grpc_chttp2_hpack_parser* p,
797
- const uint8_t* cur,
798
- const uint8_t* end) {
799
- static const grpc_chttp2_hpack_parser_state and_then[] = {
800
- finish_indexed_field};
801
- p->dynamic_table_update_allowed = 0;
802
- p->next_state = and_then;
803
- p->index = 0x7f;
804
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
805
- p->parsing.value = &p->index;
806
- return parse_value0(p, cur + 1, end);
733
+ grpc_error_handle HPackParser::parse_indexed_field_x(const uint8_t* cur,
734
+ const uint8_t* end) {
735
+ static const State and_then[] = {&HPackParser::finish_indexed_field};
736
+ dynamic_table_updates_allowed_ = 0;
737
+ next_state_ = and_then;
738
+ index_ = 0x7f;
739
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
740
+ parsing_.value = &index_;
741
+ return parse_value0(cur + 1, end);
807
742
  }
808
743
 
809
744
  /* When finishing with a header, get the cached md element for this index.
810
745
  This is set in parse_value_string(). We ensure (in debug mode) that the
811
746
  cached metadata corresponds with the index we are examining. */
812
- static grpc_mdelem get_precomputed_md_for_idx(grpc_chttp2_hpack_parser* p) {
813
- GPR_DEBUG_ASSERT(p->md_for_index.payload != 0);
814
- GPR_DEBUG_ASSERT(static_cast<int64_t>(p->index) == p->precomputed_md_index);
815
- grpc_mdelem md = p->md_for_index;
747
+ grpc_mdelem HPackParser::GetPrecomputedMDForIndex() {
748
+ GPR_DEBUG_ASSERT(md_for_index_.payload != 0);
749
+ GPR_DEBUG_ASSERT(static_cast<int64_t>(index_) == precomputed_md_index_);
750
+ grpc_mdelem md = md_for_index_;
816
751
  GPR_DEBUG_ASSERT(!GRPC_MDISNULL(md)); /* handled in string parsing */
817
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
752
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
818
753
  #ifndef NDEBUG
819
- p->precomputed_md_index = -1;
754
+ precomputed_md_index_ = -1;
820
755
  #endif
821
756
  return md;
822
757
  }
@@ -828,355 +763,340 @@ static const grpc_core::ManagedMemorySlice& get_indexed_key(grpc_mdelem md) {
828
763
  }
829
764
 
830
765
  /* finish a literal header with incremental indexing */
831
- static grpc_error* finish_lithdr_incidx(grpc_chttp2_hpack_parser* p,
832
- const uint8_t* cur,
833
- const uint8_t* end) {
766
+ grpc_error_handle HPackParser::finish_lithdr_incidx(const uint8_t* cur,
767
+ const uint8_t* end) {
834
768
  GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX();
835
- grpc_mdelem md = get_precomputed_md_for_idx(p);
836
- grpc_error* err = on_hdr<true>(
837
- p, grpc_mdelem_from_slices(get_indexed_key(md),
838
- take_string_intern(p, &p->value)));
839
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
840
- return parse_begin(p, cur, end);
769
+ grpc_mdelem md = GetPrecomputedMDForIndex();
770
+ grpc_error_handle err = FinishHeader<TableAction::kAddToTable>(
771
+ grpc_mdelem_from_slices(get_indexed_key(md), value_.TakeIntern()));
772
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
773
+ return parse_begin(cur, end);
841
774
  }
842
775
 
843
776
  /* finish a literal header with incremental indexing with no index */
844
- static grpc_error* finish_lithdr_incidx_v(grpc_chttp2_hpack_parser* p,
845
- const uint8_t* cur,
846
- const uint8_t* end) {
777
+ grpc_error_handle HPackParser::finish_lithdr_incidx_v(const uint8_t* cur,
778
+ const uint8_t* end) {
847
779
  GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V();
848
- grpc_error* err = on_hdr<true>(
849
- p, grpc_mdelem_from_slices(take_string_intern(p, &p->key),
850
- take_string_intern(p, &p->value)));
851
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
852
- return parse_begin(p, cur, end);
780
+ grpc_error_handle err = FinishHeader<TableAction::kAddToTable>(
781
+ grpc_mdelem_from_slices(key_.TakeIntern(), value_.TakeIntern()));
782
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
783
+ return parse_begin(cur, end);
853
784
  }
854
785
 
855
786
  /* parse a literal header with incremental indexing; index < 63 */
856
- static grpc_error* parse_lithdr_incidx(grpc_chttp2_hpack_parser* p,
857
- const uint8_t* cur, const uint8_t* end) {
858
- static const grpc_chttp2_hpack_parser_state and_then[] = {
859
- parse_value_string_with_indexed_key, finish_lithdr_incidx};
860
- p->dynamic_table_update_allowed = 0;
861
- p->next_state = and_then;
862
- p->index = (*cur) & 0x3f;
863
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
864
- return parse_string_prefix(p, cur + 1, end);
787
+ grpc_error_handle HPackParser::parse_lithdr_incidx(const uint8_t* cur,
788
+ const uint8_t* end) {
789
+ static const State and_then[] = {
790
+ &HPackParser::parse_value_string_with_indexed_key,
791
+ &HPackParser::finish_lithdr_incidx};
792
+ dynamic_table_updates_allowed_ = 0;
793
+ next_state_ = and_then;
794
+ index_ = (*cur) & 0x3f;
795
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
796
+ return parse_string_prefix(cur + 1, end);
865
797
  }
866
798
 
867
799
  /* parse a literal header with incremental indexing; index >= 63 */
868
- static grpc_error* parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p,
869
- const uint8_t* cur,
870
- const uint8_t* end) {
871
- static const grpc_chttp2_hpack_parser_state and_then[] = {
872
- parse_string_prefix, parse_value_string_with_indexed_key,
873
- finish_lithdr_incidx};
874
- p->dynamic_table_update_allowed = 0;
875
- p->next_state = and_then;
876
- p->index = 0x3f;
877
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
878
- p->parsing.value = &p->index;
879
- return parse_value0(p, cur + 1, end);
800
+ grpc_error_handle HPackParser::parse_lithdr_incidx_x(const uint8_t* cur,
801
+ const uint8_t* end) {
802
+ static const State and_then[] = {
803
+ &HPackParser::parse_string_prefix,
804
+ &HPackParser::parse_value_string_with_indexed_key,
805
+ &HPackParser::finish_lithdr_incidx};
806
+ dynamic_table_updates_allowed_ = 0;
807
+ next_state_ = and_then;
808
+ index_ = 0x3f;
809
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
810
+ parsing_.value = &index_;
811
+ return parse_value0(cur + 1, end);
880
812
  }
881
813
 
882
814
  /* parse a literal header with incremental indexing; index = 0 */
883
- static grpc_error* parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p,
884
- const uint8_t* cur,
885
- const uint8_t* end) {
886
- static const grpc_chttp2_hpack_parser_state and_then[] = {
887
- parse_key_string, parse_string_prefix,
888
- parse_value_string_with_literal_key, finish_lithdr_incidx_v};
889
- p->dynamic_table_update_allowed = 0;
890
- p->next_state = and_then;
891
- return parse_string_prefix(p, cur + 1, end);
815
+ grpc_error_handle HPackParser::parse_lithdr_incidx_v(const uint8_t* cur,
816
+ const uint8_t* end) {
817
+ static const State and_then[] = {
818
+ &HPackParser::parse_key_string, &HPackParser::parse_string_prefix,
819
+ &HPackParser::parse_value_string_with_literal_key,
820
+ &HPackParser::finish_lithdr_incidx_v};
821
+ dynamic_table_updates_allowed_ = 0;
822
+ next_state_ = and_then;
823
+ return parse_string_prefix(cur + 1, end);
892
824
  }
893
825
 
894
826
  /* finish a literal header without incremental indexing */
895
- static grpc_error* finish_lithdr_notidx(grpc_chttp2_hpack_parser* p,
896
- const uint8_t* cur,
897
- const uint8_t* end) {
827
+ grpc_error_handle HPackParser::finish_lithdr_notidx(const uint8_t* cur,
828
+ const uint8_t* end) {
898
829
  GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX();
899
- grpc_mdelem md = get_precomputed_md_for_idx(p);
900
- grpc_error* err = on_hdr<false>(
901
- p, grpc_mdelem_from_slices(get_indexed_key(md),
902
- take_string_extern(p, &p->value)));
903
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
904
- return parse_begin(p, cur, end);
830
+ grpc_mdelem md = GetPrecomputedMDForIndex();
831
+ grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
832
+ grpc_mdelem_from_slices(get_indexed_key(md), value_.TakeExtern()));
833
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
834
+ return parse_begin(cur, end);
905
835
  }
906
836
 
907
837
  /* finish a literal header without incremental indexing with index = 0 */
908
- static grpc_error* finish_lithdr_notidx_v(grpc_chttp2_hpack_parser* p,
909
- const uint8_t* cur,
910
- const uint8_t* end) {
838
+ grpc_error_handle HPackParser::finish_lithdr_notidx_v(const uint8_t* cur,
839
+ const uint8_t* end) {
911
840
  GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V();
912
- grpc_error* err = on_hdr<false>(
913
- p, grpc_mdelem_from_slices(take_string_intern(p, &p->key),
914
- take_string_extern(p, &p->value)));
915
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
916
- return parse_begin(p, cur, end);
841
+ grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
842
+ grpc_mdelem_from_slices(key_.TakeIntern(), value_.TakeExtern()));
843
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
844
+ return parse_begin(cur, end);
917
845
  }
918
846
 
919
847
  /* parse a literal header without incremental indexing; index < 15 */
920
- static grpc_error* parse_lithdr_notidx(grpc_chttp2_hpack_parser* p,
921
- const uint8_t* cur, const uint8_t* end) {
922
- static const grpc_chttp2_hpack_parser_state and_then[] = {
923
- parse_value_string_with_indexed_key, finish_lithdr_notidx};
924
- p->dynamic_table_update_allowed = 0;
925
- p->next_state = and_then;
926
- p->index = (*cur) & 0xf;
927
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
928
- return parse_string_prefix(p, cur + 1, end);
848
+ grpc_error_handle HPackParser::parse_lithdr_notidx(const uint8_t* cur,
849
+ const uint8_t* end) {
850
+ static const State and_then[] = {
851
+ &HPackParser::parse_value_string_with_indexed_key,
852
+ &HPackParser::finish_lithdr_notidx};
853
+ dynamic_table_updates_allowed_ = 0;
854
+ next_state_ = and_then;
855
+ index_ = (*cur) & 0xf;
856
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
857
+ return parse_string_prefix(cur + 1, end);
929
858
  }
930
859
 
931
860
  /* parse a literal header without incremental indexing; index >= 15 */
932
- static grpc_error* parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p,
933
- const uint8_t* cur,
934
- const uint8_t* end) {
935
- static const grpc_chttp2_hpack_parser_state and_then[] = {
936
- parse_string_prefix, parse_value_string_with_indexed_key,
937
- finish_lithdr_notidx};
938
- p->dynamic_table_update_allowed = 0;
939
- p->next_state = and_then;
940
- p->index = 0xf;
941
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
942
- p->parsing.value = &p->index;
943
- return parse_value0(p, cur + 1, end);
861
+ grpc_error_handle HPackParser::parse_lithdr_notidx_x(const uint8_t* cur,
862
+ const uint8_t* end) {
863
+ static const State and_then[] = {
864
+ &HPackParser::parse_string_prefix,
865
+ &HPackParser::parse_value_string_with_indexed_key,
866
+ &HPackParser::finish_lithdr_notidx};
867
+ dynamic_table_updates_allowed_ = 0;
868
+ next_state_ = and_then;
869
+ index_ = 0xf;
870
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
871
+ parsing_.value = &index_;
872
+ return parse_value0(cur + 1, end);
944
873
  }
945
874
 
946
875
  /* parse a literal header without incremental indexing; index == 0 */
947
- static grpc_error* parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p,
948
- const uint8_t* cur,
949
- const uint8_t* end) {
950
- static const grpc_chttp2_hpack_parser_state and_then[] = {
951
- parse_key_string, parse_string_prefix,
952
- parse_value_string_with_literal_key, finish_lithdr_notidx_v};
953
- p->dynamic_table_update_allowed = 0;
954
- p->next_state = and_then;
955
- return parse_string_prefix(p, cur + 1, end);
876
+ grpc_error_handle HPackParser::parse_lithdr_notidx_v(const uint8_t* cur,
877
+ const uint8_t* end) {
878
+ static const State and_then[] = {
879
+ &HPackParser::parse_key_string, &HPackParser::parse_string_prefix,
880
+ &HPackParser::parse_value_string_with_literal_key,
881
+ &HPackParser::finish_lithdr_notidx_v};
882
+ dynamic_table_updates_allowed_ = 0;
883
+ next_state_ = and_then;
884
+ return parse_string_prefix(cur + 1, end);
956
885
  }
957
886
 
958
887
  /* finish a literal header that is never indexed */
959
- static grpc_error* finish_lithdr_nvridx(grpc_chttp2_hpack_parser* p,
960
- const uint8_t* cur,
961
- const uint8_t* end) {
888
+ grpc_error_handle HPackParser::finish_lithdr_nvridx(const uint8_t* cur,
889
+ const uint8_t* end) {
962
890
  GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX();
963
- grpc_mdelem md = get_precomputed_md_for_idx(p);
964
- grpc_error* err = on_hdr<false>(
965
- p, grpc_mdelem_from_slices(get_indexed_key(md),
966
- take_string_extern(p, &p->value)));
967
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
968
- return parse_begin(p, cur, end);
891
+ grpc_mdelem md = GetPrecomputedMDForIndex();
892
+ grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
893
+ grpc_mdelem_from_slices(get_indexed_key(md), value_.TakeExtern()));
894
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
895
+ return parse_begin(cur, end);
969
896
  }
970
897
 
971
898
  /* finish a literal header that is never indexed with an extra value */
972
- static grpc_error* finish_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p,
973
- const uint8_t* cur,
974
- const uint8_t* end) {
899
+ grpc_error_handle HPackParser::finish_lithdr_nvridx_v(const uint8_t* cur,
900
+ const uint8_t* end) {
975
901
  GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V();
976
- grpc_error* err = on_hdr<false>(
977
- p, grpc_mdelem_from_slices(take_string_intern(p, &p->key),
978
- take_string_extern(p, &p->value)));
979
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
980
- return parse_begin(p, cur, end);
902
+ grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
903
+ grpc_mdelem_from_slices(key_.TakeIntern(), value_.TakeExtern()));
904
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
905
+ return parse_begin(cur, end);
981
906
  }
982
907
 
983
908
  /* parse a literal header that is never indexed; index < 15 */
984
- static grpc_error* parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p,
985
- const uint8_t* cur, const uint8_t* end) {
986
- static const grpc_chttp2_hpack_parser_state and_then[] = {
987
- parse_value_string_with_indexed_key, finish_lithdr_nvridx};
988
- p->dynamic_table_update_allowed = 0;
989
- p->next_state = and_then;
990
- p->index = (*cur) & 0xf;
991
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
992
- return parse_string_prefix(p, cur + 1, end);
909
+ grpc_error_handle HPackParser::parse_lithdr_nvridx(const uint8_t* cur,
910
+ const uint8_t* end) {
911
+ static const State and_then[] = {
912
+ &HPackParser::parse_value_string_with_indexed_key,
913
+ &HPackParser::finish_lithdr_nvridx};
914
+ dynamic_table_updates_allowed_ = 0;
915
+ next_state_ = and_then;
916
+ index_ = (*cur) & 0xf;
917
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
918
+ return parse_string_prefix(cur + 1, end);
993
919
  }
994
920
 
995
921
  /* parse a literal header that is never indexed; index >= 15 */
996
- static grpc_error* parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p,
997
- const uint8_t* cur,
998
- const uint8_t* end) {
999
- static const grpc_chttp2_hpack_parser_state and_then[] = {
1000
- parse_string_prefix, parse_value_string_with_indexed_key,
1001
- finish_lithdr_nvridx};
1002
- p->dynamic_table_update_allowed = 0;
1003
- p->next_state = and_then;
1004
- p->index = 0xf;
1005
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
1006
- p->parsing.value = &p->index;
1007
- return parse_value0(p, cur + 1, end);
922
+ grpc_error_handle HPackParser::parse_lithdr_nvridx_x(const uint8_t* cur,
923
+ const uint8_t* end) {
924
+ static const State and_then[] = {
925
+ &HPackParser::parse_string_prefix,
926
+ &HPackParser::parse_value_string_with_indexed_key,
927
+ &HPackParser::finish_lithdr_nvridx};
928
+ dynamic_table_updates_allowed_ = 0;
929
+ next_state_ = and_then;
930
+ index_ = 0xf;
931
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
932
+ parsing_.value = &index_;
933
+ return parse_value0(cur + 1, end);
1008
934
  }
1009
935
 
1010
936
  /* parse a literal header that is never indexed; index == 0 */
1011
- static grpc_error* parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p,
1012
- const uint8_t* cur,
1013
- const uint8_t* end) {
1014
- static const grpc_chttp2_hpack_parser_state and_then[] = {
1015
- parse_key_string, parse_string_prefix,
1016
- parse_value_string_with_literal_key, finish_lithdr_nvridx_v};
1017
- p->dynamic_table_update_allowed = 0;
1018
- p->next_state = and_then;
1019
- return parse_string_prefix(p, cur + 1, end);
937
+ grpc_error_handle HPackParser::parse_lithdr_nvridx_v(const uint8_t* cur,
938
+ const uint8_t* end) {
939
+ static const State and_then[] = {
940
+ &HPackParser::parse_key_string, &HPackParser::parse_string_prefix,
941
+ &HPackParser::parse_value_string_with_literal_key,
942
+ &HPackParser::finish_lithdr_nvridx_v};
943
+ dynamic_table_updates_allowed_ = 0;
944
+ next_state_ = and_then;
945
+ return parse_string_prefix(cur + 1, end);
1020
946
  }
1021
947
 
1022
948
  /* finish parsing a max table size change */
1023
- static grpc_error* finish_max_tbl_size(grpc_chttp2_hpack_parser* p,
1024
- const uint8_t* cur, const uint8_t* end) {
949
+ grpc_error_handle HPackParser::finish_max_tbl_size(const uint8_t* cur,
950
+ const uint8_t* end) {
1025
951
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
1026
- gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", p->index);
952
+ gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", index_);
1027
953
  }
1028
- grpc_error* err =
1029
- grpc_chttp2_hptbl_set_current_table_size(&p->table, p->index);
1030
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1031
- return parse_begin(p, cur, end);
954
+ grpc_error_handle err =
955
+ grpc_chttp2_hptbl_set_current_table_size(&table_, index_);
956
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
957
+ return parse_begin(cur, end);
1032
958
  }
1033
959
 
1034
960
  /* parse a max table size change, max size < 15 */
1035
- static grpc_error* parse_max_tbl_size(grpc_chttp2_hpack_parser* p,
1036
- const uint8_t* cur, const uint8_t* end) {
1037
- if (p->dynamic_table_update_allowed == 0) {
961
+ grpc_error_handle HPackParser::parse_max_tbl_size(const uint8_t* cur,
962
+ const uint8_t* end) {
963
+ if (dynamic_table_updates_allowed_ == 0) {
1038
964
  return parse_error(
1039
- p, cur, end,
965
+ cur, end,
1040
966
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1041
967
  "More than two max table size changes in a single frame"));
1042
968
  }
1043
- p->dynamic_table_update_allowed--;
1044
- p->index = (*cur) & 0x1f;
1045
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
1046
- return finish_max_tbl_size(p, cur + 1, end);
969
+ dynamic_table_updates_allowed_--;
970
+ index_ = (*cur) & 0x1f;
971
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
972
+ return finish_max_tbl_size(cur + 1, end);
1047
973
  }
1048
974
 
1049
975
  /* parse a max table size change, max size >= 15 */
1050
- static grpc_error* parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p,
1051
- const uint8_t* cur,
1052
- const uint8_t* end) {
1053
- static const grpc_chttp2_hpack_parser_state and_then[] = {
1054
- finish_max_tbl_size};
1055
- if (p->dynamic_table_update_allowed == 0) {
976
+ grpc_error_handle HPackParser::parse_max_tbl_size_x(const uint8_t* cur,
977
+ const uint8_t* end) {
978
+ static const State and_then[] = {&HPackParser::finish_max_tbl_size};
979
+ if (dynamic_table_updates_allowed_ == 0) {
1056
980
  return parse_error(
1057
- p, cur, end,
981
+ cur, end,
1058
982
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1059
983
  "More than two max table size changes in a single frame"));
1060
984
  }
1061
- p->dynamic_table_update_allowed--;
1062
- p->next_state = and_then;
1063
- p->index = 0x1f;
1064
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
1065
- p->parsing.value = &p->index;
1066
- return parse_value0(p, cur + 1, end);
985
+ dynamic_table_updates_allowed_--;
986
+ next_state_ = and_then;
987
+ index_ = 0x1f;
988
+ md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
989
+ parsing_.value = &index_;
990
+ return parse_value0(cur + 1, end);
1067
991
  }
1068
992
 
1069
993
  /* a parse error: jam the parse state into parse_error, and return error */
1070
- static grpc_error* parse_error(grpc_chttp2_hpack_parser* p,
1071
- const uint8_t* /*cur*/, const uint8_t* /*end*/,
1072
- grpc_error* err) {
994
+ grpc_error_handle HPackParser::parse_error(const uint8_t* /*cur*/,
995
+ const uint8_t* /*end*/,
996
+ grpc_error_handle err) {
1073
997
  GPR_ASSERT(err != GRPC_ERROR_NONE);
1074
- if (p->last_error == GRPC_ERROR_NONE) {
1075
- p->last_error = GRPC_ERROR_REF(err);
998
+ if (last_error_ == GRPC_ERROR_NONE) {
999
+ last_error_ = GRPC_ERROR_REF(err);
1076
1000
  }
1077
- p->state = still_parse_error;
1001
+ state_ = &HPackParser::still_parse_error;
1078
1002
  return err;
1079
1003
  }
1080
1004
 
1081
- static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p,
1082
- const uint8_t* /*cur*/,
1083
- const uint8_t* /*end*/) {
1084
- return GRPC_ERROR_REF(p->last_error);
1005
+ grpc_error_handle HPackParser::still_parse_error(const uint8_t* /*cur*/,
1006
+ const uint8_t* /*end*/) {
1007
+ return GRPC_ERROR_REF(last_error_);
1085
1008
  }
1086
1009
 
1087
- static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p,
1088
- const uint8_t* cur, const uint8_t* end) {
1010
+ grpc_error_handle HPackParser::parse_illegal_op(const uint8_t* cur,
1011
+ const uint8_t* end) {
1089
1012
  GPR_ASSERT(cur != end);
1090
- char* msg;
1091
- gpr_asprintf(&msg, "Illegal hpack op code %d", *cur);
1092
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1093
- gpr_free(msg);
1094
- return parse_error(p, cur, end, err);
1013
+ grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1014
+ absl::StrCat("Illegal hpack op code ", *cur).c_str());
1015
+ return parse_error(cur, end, err);
1095
1016
  }
1096
1017
 
1097
- /* parse the 1st byte of a varint into p->parsing.value
1018
+ /* parse the 1st byte of a varint into parsing_.value
1098
1019
  no overflow is possible */
1099
- static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1100
- const uint8_t* end) {
1020
+ grpc_error_handle HPackParser::parse_value0(const uint8_t* cur,
1021
+ const uint8_t* end) {
1101
1022
  if (cur == end) {
1102
- p->state = parse_value0;
1023
+ state_ = &HPackParser::parse_value0;
1103
1024
  return GRPC_ERROR_NONE;
1104
1025
  }
1105
1026
 
1106
- *p->parsing.value += (*cur) & 0x7f;
1027
+ *parsing_.value += (*cur) & 0x7f;
1107
1028
 
1108
1029
  if ((*cur) & 0x80) {
1109
- return parse_value1(p, cur + 1, end);
1030
+ return parse_value1(cur + 1, end);
1110
1031
  } else {
1111
- return parse_next(p, cur + 1, end);
1032
+ return parse_next(cur + 1, end);
1112
1033
  }
1113
1034
  }
1114
1035
 
1115
- /* parse the 2nd byte of a varint into p->parsing.value
1036
+ /* parse the 2nd byte of a varint into parsing_.value
1116
1037
  no overflow is possible */
1117
- static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1118
- const uint8_t* end) {
1038
+ grpc_error_handle HPackParser::parse_value1(const uint8_t* cur,
1039
+ const uint8_t* end) {
1119
1040
  if (cur == end) {
1120
- p->state = parse_value1;
1041
+ state_ = &HPackParser::parse_value1;
1121
1042
  return GRPC_ERROR_NONE;
1122
1043
  }
1123
1044
 
1124
- *p->parsing.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 7;
1045
+ *parsing_.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 7;
1125
1046
 
1126
1047
  if ((*cur) & 0x80) {
1127
- return parse_value2(p, cur + 1, end);
1048
+ return parse_value2(cur + 1, end);
1128
1049
  } else {
1129
- return parse_next(p, cur + 1, end);
1050
+ return parse_next(cur + 1, end);
1130
1051
  }
1131
1052
  }
1132
1053
 
1133
- /* parse the 3rd byte of a varint into p->parsing.value
1054
+ /* parse the 3rd byte of a varint into parsing_.value
1134
1055
  no overflow is possible */
1135
- static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1136
- const uint8_t* end) {
1056
+ grpc_error_handle HPackParser::parse_value2(const uint8_t* cur,
1057
+ const uint8_t* end) {
1137
1058
  if (cur == end) {
1138
- p->state = parse_value2;
1059
+ state_ = &HPackParser::parse_value2;
1139
1060
  return GRPC_ERROR_NONE;
1140
1061
  }
1141
1062
 
1142
- *p->parsing.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 14;
1063
+ *parsing_.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 14;
1143
1064
 
1144
1065
  if ((*cur) & 0x80) {
1145
- return parse_value3(p, cur + 1, end);
1066
+ return parse_value3(cur + 1, end);
1146
1067
  } else {
1147
- return parse_next(p, cur + 1, end);
1068
+ return parse_next(cur + 1, end);
1148
1069
  }
1149
1070
  }
1150
1071
 
1151
- /* parse the 4th byte of a varint into p->parsing.value
1072
+ /* parse the 4th byte of a varint into parsing_.value
1152
1073
  no overflow is possible */
1153
- static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1154
- const uint8_t* end) {
1074
+ grpc_error_handle HPackParser::parse_value3(const uint8_t* cur,
1075
+ const uint8_t* end) {
1155
1076
  if (cur == end) {
1156
- p->state = parse_value3;
1077
+ state_ = &HPackParser::parse_value3;
1157
1078
  return GRPC_ERROR_NONE;
1158
1079
  }
1159
1080
 
1160
- *p->parsing.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 21;
1081
+ *parsing_.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 21;
1161
1082
 
1162
1083
  if ((*cur) & 0x80) {
1163
- return parse_value4(p, cur + 1, end);
1084
+ return parse_value4(cur + 1, end);
1164
1085
  } else {
1165
- return parse_next(p, cur + 1, end);
1086
+ return parse_next(cur + 1, end);
1166
1087
  }
1167
1088
  }
1168
1089
 
1169
- /* parse the 5th byte of a varint into p->parsing.value
1090
+ /* parse the 5th byte of a varint into parsing_.value
1170
1091
  depending on the byte, we may overflow, and care must be taken */
1171
- static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1172
- const uint8_t* end) {
1092
+ grpc_error_handle HPackParser::parse_value4(const uint8_t* cur,
1093
+ const uint8_t* end) {
1173
1094
  uint8_t c;
1174
1095
  uint32_t cur_value;
1175
1096
  uint32_t add_value;
1176
- char* msg;
1177
1097
 
1178
1098
  if (cur == end) {
1179
- p->state = parse_value4;
1099
+ state_ = &HPackParser::parse_value4;
1180
1100
  return GRPC_ERROR_NONE;
1181
1101
  }
1182
1102
 
@@ -1185,368 +1105,366 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1185
1105
  goto error;
1186
1106
  }
1187
1107
 
1188
- cur_value = *p->parsing.value;
1108
+ cur_value = *parsing_.value;
1189
1109
  add_value = (static_cast<uint32_t>(c)) << 28;
1190
1110
  if (add_value > 0xffffffffu - cur_value) {
1191
1111
  goto error;
1192
1112
  }
1193
1113
 
1194
- *p->parsing.value = cur_value + add_value;
1114
+ *parsing_.value = cur_value + add_value;
1195
1115
 
1196
1116
  if ((*cur) & 0x80) {
1197
- return parse_value5up(p, cur + 1, end);
1117
+ return parse_value5up(cur + 1, end);
1198
1118
  } else {
1199
- return parse_next(p, cur + 1, end);
1119
+ return parse_next(cur + 1, end);
1200
1120
  }
1201
1121
 
1202
1122
  error:
1203
- gpr_asprintf(&msg,
1204
- "integer overflow in hpack integer decoding: have 0x%08x, "
1205
- "got byte 0x%02x on byte 5",
1206
- *p->parsing.value, *cur);
1207
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1208
- gpr_free(msg);
1209
- return parse_error(p, cur, end, err);
1123
+ grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1124
+ absl::StrFormat(
1125
+ "integer overflow in hpack integer decoding: have 0x%08x, "
1126
+ "got byte 0x%02x on byte 5",
1127
+ *parsing_.value, *cur)
1128
+ .c_str());
1129
+ return parse_error(cur, end, err);
1210
1130
  }
1211
1131
 
1212
1132
  /* parse any trailing bytes in a varint: it's possible to append an arbitrary
1213
1133
  number of 0x80's and not affect the value - a zero will terminate - and
1214
1134
  anything else will overflow */
1215
- static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p,
1216
- const uint8_t* cur, const uint8_t* end) {
1135
+ grpc_error_handle HPackParser::parse_value5up(const uint8_t* cur,
1136
+ const uint8_t* end) {
1217
1137
  while (cur != end && *cur == 0x80) {
1218
1138
  ++cur;
1219
1139
  }
1220
1140
 
1221
1141
  if (cur == end) {
1222
- p->state = parse_value5up;
1142
+ state_ = &HPackParser::parse_value5up;
1223
1143
  return GRPC_ERROR_NONE;
1224
1144
  }
1225
1145
 
1226
1146
  if (*cur == 0) {
1227
- return parse_next(p, cur + 1, end);
1147
+ return parse_next(cur + 1, end);
1228
1148
  }
1229
1149
 
1230
- char* msg;
1231
- gpr_asprintf(&msg,
1232
- "integer overflow in hpack integer decoding: have 0x%08x, "
1233
- "got byte 0x%02x sometime after byte 5",
1234
- *p->parsing.value, *cur);
1235
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1236
- gpr_free(msg);
1237
- return parse_error(p, cur, end, err);
1150
+ grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1151
+ absl::StrFormat(
1152
+ "integer overflow in hpack integer decoding: have 0x%08x, "
1153
+ "got byte 0x%02x sometime after byte 5",
1154
+ *parsing_.value, *cur)
1155
+ .c_str());
1156
+ return parse_error(cur, end, err);
1238
1157
  }
1239
1158
 
1240
1159
  /* parse a string prefix */
1241
- static grpc_error* parse_string_prefix(grpc_chttp2_hpack_parser* p,
1242
- const uint8_t* cur, const uint8_t* end) {
1160
+ grpc_error_handle HPackParser::parse_string_prefix(const uint8_t* cur,
1161
+ const uint8_t* end) {
1243
1162
  if (cur == end) {
1244
- p->state = parse_string_prefix;
1163
+ state_ = &HPackParser::parse_string_prefix;
1245
1164
  return GRPC_ERROR_NONE;
1246
1165
  }
1247
1166
 
1248
- p->strlen = (*cur) & 0x7f;
1249
- p->huff = (*cur) >> 7;
1250
- if (p->strlen == 0x7f) {
1251
- p->parsing.value = &p->strlen;
1252
- return parse_value0(p, cur + 1, end);
1167
+ strlen_ = (*cur) & 0x7f;
1168
+ huff_ = (*cur) >> 7;
1169
+ if (strlen_ == 0x7f) {
1170
+ parsing_.value = &strlen_;
1171
+ return parse_value0(cur + 1, end);
1253
1172
  } else {
1254
- return parse_next(p, cur + 1, end);
1173
+ return parse_next(cur + 1, end);
1255
1174
  }
1256
1175
  }
1257
1176
 
1258
1177
  /* append some bytes to a string */
1259
- static void append_bytes(grpc_chttp2_hpack_parser_string* str,
1260
- const uint8_t* data, size_t length) {
1178
+ void HPackParser::String::AppendBytes(const uint8_t* data, size_t length) {
1261
1179
  if (length == 0) return;
1262
- if (length + str->data.copied.length > str->data.copied.capacity) {
1263
- GPR_ASSERT(str->data.copied.length + length <= UINT32_MAX);
1264
- str->data.copied.capacity =
1265
- static_cast<uint32_t>(str->data.copied.length + length);
1266
- str->data.copied.str = static_cast<char*>(
1267
- gpr_realloc(str->data.copied.str, str->data.copied.capacity));
1180
+ if (length + data_.copied.length > data_.copied.capacity) {
1181
+ GPR_ASSERT(data_.copied.length + length <= UINT32_MAX);
1182
+ data_.copied.capacity = static_cast<uint32_t>(data_.copied.length + length);
1183
+ data_.copied.str = static_cast<char*>(
1184
+ gpr_realloc(data_.copied.str, data_.copied.capacity));
1268
1185
  }
1269
- memcpy(str->data.copied.str + str->data.copied.length, data, length);
1270
- GPR_ASSERT(length <= UINT32_MAX - str->data.copied.length);
1271
- str->data.copied.length += static_cast<uint32_t>(length);
1186
+ memcpy(data_.copied.str + data_.copied.length, data, length);
1187
+ GPR_ASSERT(length <= UINT32_MAX - data_.copied.length);
1188
+ data_.copied.length += static_cast<uint32_t>(length);
1272
1189
  }
1273
1190
 
1274
- static grpc_error* append_string(grpc_chttp2_hpack_parser* p,
1275
- const uint8_t* cur, const uint8_t* end) {
1276
- grpc_chttp2_hpack_parser_string* str = p->parsing.str;
1191
+ grpc_error_handle HPackParser::AppendString(const uint8_t* cur,
1192
+ const uint8_t* end) {
1193
+ String* str = parsing_.str;
1277
1194
  uint32_t bits;
1278
1195
  uint8_t decoded[3];
1279
- switch (static_cast<binary_state>(p->binary)) {
1280
- case NOT_BINARY:
1281
- append_bytes(str, cur, static_cast<size_t>(end - cur));
1196
+ switch (binary_) {
1197
+ case BinaryState::kNotBinary:
1198
+ str->AppendBytes(cur, static_cast<size_t>(end - cur));
1282
1199
  return GRPC_ERROR_NONE;
1283
- case BINARY_BEGIN:
1200
+ case BinaryState::kBinaryBegin:
1284
1201
  if (cur == end) {
1285
- p->binary = BINARY_BEGIN;
1202
+ binary_ = BinaryState::kBinaryBegin;
1286
1203
  return GRPC_ERROR_NONE;
1287
1204
  }
1288
1205
  if (*cur == 0) {
1289
1206
  /* 'true-binary' case */
1290
1207
  ++cur;
1291
- p->binary = NOT_BINARY;
1208
+ binary_ = BinaryState::kNotBinary;
1292
1209
  GRPC_STATS_INC_HPACK_RECV_BINARY();
1293
- append_bytes(str, cur, static_cast<size_t>(end - cur));
1210
+ str->AppendBytes(cur, static_cast<size_t>(end - cur));
1294
1211
  return GRPC_ERROR_NONE;
1295
1212
  }
1296
1213
  GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64();
1297
- /* fallthrough */
1298
1214
  b64_byte0:
1299
- case B64_BYTE0:
1215
+ ABSL_FALLTHROUGH_INTENDED;
1216
+ case BinaryState::kBase64Byte0:
1300
1217
  if (cur == end) {
1301
- p->binary = B64_BYTE0;
1218
+ binary_ = BinaryState::kBase64Byte0;
1302
1219
  return GRPC_ERROR_NONE;
1303
1220
  }
1304
- bits = inverse_base64[*cur];
1221
+ bits = kBase64InverseTable.table[*cur];
1305
1222
  ++cur;
1306
- if (bits == 255)
1223
+ if (bits == 255) {
1307
1224
  return parse_error(
1308
- p, cur, end,
1225
+ cur, end,
1309
1226
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1310
- else if (bits == 64)
1227
+ } else if (bits == 64) {
1311
1228
  goto b64_byte0;
1312
- p->base64_buffer = bits << 18;
1313
- /* fallthrough */
1229
+ }
1230
+ base64_buffer_ = bits << 18;
1314
1231
  b64_byte1:
1315
- case B64_BYTE1:
1232
+ ABSL_FALLTHROUGH_INTENDED;
1233
+ case BinaryState::kBase64Byte1:
1316
1234
  if (cur == end) {
1317
- p->binary = B64_BYTE1;
1235
+ binary_ = BinaryState::kBase64Byte1;
1318
1236
  return GRPC_ERROR_NONE;
1319
1237
  }
1320
- bits = inverse_base64[*cur];
1238
+ bits = kBase64InverseTable.table[*cur];
1321
1239
  ++cur;
1322
- if (bits == 255)
1240
+ if (bits == 255) {
1323
1241
  return parse_error(
1324
- p, cur, end,
1242
+ cur, end,
1325
1243
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1326
- else if (bits == 64)
1244
+ } else if (bits == 64) {
1327
1245
  goto b64_byte1;
1328
- p->base64_buffer |= bits << 12;
1329
- /* fallthrough */
1246
+ }
1247
+ base64_buffer_ |= bits << 12;
1330
1248
  b64_byte2:
1331
- case B64_BYTE2:
1249
+ ABSL_FALLTHROUGH_INTENDED;
1250
+ case BinaryState::kBase64Byte2:
1332
1251
  if (cur == end) {
1333
- p->binary = B64_BYTE2;
1252
+ binary_ = BinaryState::kBase64Byte2;
1334
1253
  return GRPC_ERROR_NONE;
1335
1254
  }
1336
- bits = inverse_base64[*cur];
1255
+ bits = kBase64InverseTable.table[*cur];
1337
1256
  ++cur;
1338
- if (bits == 255)
1257
+ if (bits == 255) {
1339
1258
  return parse_error(
1340
- p, cur, end,
1259
+ cur, end,
1341
1260
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1342
- else if (bits == 64)
1261
+ } else if (bits == 64) {
1343
1262
  goto b64_byte2;
1344
- p->base64_buffer |= bits << 6;
1345
- /* fallthrough */
1263
+ }
1264
+ base64_buffer_ |= bits << 6;
1346
1265
  b64_byte3:
1347
- case B64_BYTE3:
1266
+ ABSL_FALLTHROUGH_INTENDED;
1267
+ case BinaryState::kBase64Byte3:
1348
1268
  if (cur == end) {
1349
- p->binary = B64_BYTE3;
1269
+ binary_ = BinaryState::kBase64Byte3;
1350
1270
  return GRPC_ERROR_NONE;
1351
1271
  }
1352
- bits = inverse_base64[*cur];
1272
+ bits = kBase64InverseTable.table[*cur];
1353
1273
  ++cur;
1354
- if (bits == 255)
1274
+ if (bits == 255) {
1355
1275
  return parse_error(
1356
- p, cur, end,
1276
+ cur, end,
1357
1277
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1358
- else if (bits == 64)
1278
+ } else if (bits == 64) {
1359
1279
  goto b64_byte3;
1360
- p->base64_buffer |= bits;
1361
- bits = p->base64_buffer;
1280
+ }
1281
+ base64_buffer_ |= bits;
1282
+ bits = base64_buffer_;
1362
1283
  decoded[0] = static_cast<uint8_t>(bits >> 16);
1363
1284
  decoded[1] = static_cast<uint8_t>(bits >> 8);
1364
1285
  decoded[2] = static_cast<uint8_t>(bits);
1365
- append_bytes(str, decoded, 3);
1286
+ str->AppendBytes(decoded, 3);
1366
1287
  goto b64_byte0;
1367
1288
  }
1368
1289
  GPR_UNREACHABLE_CODE(return parse_error(
1369
- p, cur, end,
1290
+ cur, end,
1370
1291
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here")));
1371
1292
  }
1372
1293
 
1373
- static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1374
- const uint8_t* end) {
1294
+ grpc_error_handle HPackParser::finish_str(const uint8_t* cur,
1295
+ const uint8_t* end) {
1375
1296
  uint8_t decoded[2];
1376
1297
  uint32_t bits;
1377
- grpc_chttp2_hpack_parser_string* str = p->parsing.str;
1378
- switch (static_cast<binary_state>(p->binary)) {
1379
- case NOT_BINARY:
1298
+ String* str = parsing_.str;
1299
+ switch (binary_) {
1300
+ case BinaryState::kNotBinary:
1380
1301
  break;
1381
- case BINARY_BEGIN:
1302
+ case BinaryState::kBinaryBegin:
1382
1303
  break;
1383
- case B64_BYTE0:
1304
+ case BinaryState::kBase64Byte0:
1384
1305
  break;
1385
- case B64_BYTE1:
1386
- return parse_error(p, cur, end,
1306
+ case BinaryState::kBase64Byte1:
1307
+ return parse_error(cur, end,
1387
1308
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1388
1309
  "illegal base64 encoding")); /* illegal encoding */
1389
- case B64_BYTE2:
1390
- bits = p->base64_buffer;
1310
+ case BinaryState::kBase64Byte2:
1311
+ bits = base64_buffer_;
1391
1312
  if (bits & 0xffff) {
1392
- char* msg;
1393
- gpr_asprintf(&msg, "trailing bits in base64 encoding: 0x%04x",
1394
- bits & 0xffff);
1395
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1396
- gpr_free(msg);
1397
- return parse_error(p, cur, end, err);
1313
+ grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1314
+ absl::StrFormat("trailing bits in base64 encoding: 0x%04x",
1315
+ bits & 0xffff)
1316
+ .c_str());
1317
+ return parse_error(cur, end, err);
1398
1318
  }
1399
1319
  decoded[0] = static_cast<uint8_t>(bits >> 16);
1400
- append_bytes(str, decoded, 1);
1320
+ str->AppendBytes(decoded, 1);
1401
1321
  break;
1402
- case B64_BYTE3:
1403
- bits = p->base64_buffer;
1322
+ case BinaryState::kBase64Byte3:
1323
+ bits = base64_buffer_;
1404
1324
  if (bits & 0xff) {
1405
- char* msg;
1406
- gpr_asprintf(&msg, "trailing bits in base64 encoding: 0x%02x",
1407
- bits & 0xff);
1408
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1409
- gpr_free(msg);
1410
- return parse_error(p, cur, end, err);
1325
+ grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1326
+ absl::StrFormat("trailing bits in base64 encoding: 0x%02x",
1327
+ bits & 0xff)
1328
+ .c_str());
1329
+ return parse_error(cur, end, err);
1411
1330
  }
1412
1331
  decoded[0] = static_cast<uint8_t>(bits >> 16);
1413
1332
  decoded[1] = static_cast<uint8_t>(bits >> 8);
1414
- append_bytes(str, decoded, 2);
1333
+ str->AppendBytes(decoded, 2);
1415
1334
  break;
1416
1335
  }
1417
1336
  return GRPC_ERROR_NONE;
1418
1337
  }
1419
1338
 
1420
1339
  /* decode a nibble from a huffman encoded stream */
1421
- static grpc_error* huff_nibble(grpc_chttp2_hpack_parser* p, uint8_t nibble) {
1422
- int16_t emit = emit_sub_tbl[16 * emit_tbl[p->huff_state] + nibble];
1423
- int16_t next = next_sub_tbl[16 * next_tbl[p->huff_state] + nibble];
1340
+ grpc_error_handle HPackParser::AppendHuffNibble(uint8_t nibble) {
1341
+ int16_t emit = emit_sub_tbl[16 * emit_tbl[huff_state_] + nibble];
1342
+ int16_t next = next_sub_tbl[16 * next_tbl[huff_state_] + nibble];
1424
1343
  if (emit != -1) {
1425
1344
  if (emit >= 0 && emit < 256) {
1426
1345
  uint8_t c = static_cast<uint8_t>(emit);
1427
- grpc_error* err = append_string(p, &c, (&c) + 1);
1346
+ grpc_error_handle err = AppendString(&c, (&c) + 1);
1428
1347
  if (err != GRPC_ERROR_NONE) return err;
1429
1348
  } else {
1430
1349
  assert(emit == 256);
1431
1350
  }
1432
1351
  }
1433
- p->huff_state = next;
1352
+ huff_state_ = next;
1434
1353
  return GRPC_ERROR_NONE;
1435
1354
  }
1436
1355
 
1437
1356
  /* decode full bytes from a huffman encoded stream */
1438
- static grpc_error* add_huff_bytes(grpc_chttp2_hpack_parser* p,
1439
- const uint8_t* cur, const uint8_t* end) {
1357
+ grpc_error_handle HPackParser::AppendHuffBytes(const uint8_t* cur,
1358
+ const uint8_t* end) {
1440
1359
  for (; cur != end; ++cur) {
1441
- grpc_error* err = huff_nibble(p, *cur >> 4);
1442
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1443
- err = huff_nibble(p, *cur & 0xf);
1444
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1360
+ grpc_error_handle err = AppendHuffNibble(*cur >> 4);
1361
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
1362
+ err = AppendHuffNibble(*cur & 0xf);
1363
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
1445
1364
  }
1446
1365
  return GRPC_ERROR_NONE;
1447
1366
  }
1448
1367
 
1449
1368
  /* decode some string bytes based on the current decoding mode
1450
1369
  (huffman or not) */
1451
- static grpc_error* add_str_bytes(grpc_chttp2_hpack_parser* p,
1452
- const uint8_t* cur, const uint8_t* end) {
1453
- if (p->huff) {
1454
- return add_huff_bytes(p, cur, end);
1370
+ grpc_error_handle HPackParser::AppendStrBytes(const uint8_t* cur,
1371
+ const uint8_t* end) {
1372
+ if (huff_) {
1373
+ return AppendHuffBytes(cur, end);
1455
1374
  } else {
1456
- return append_string(p, cur, end);
1375
+ return AppendString(cur, end);
1457
1376
  }
1458
1377
  }
1459
1378
 
1460
1379
  /* parse a string - tries to do large chunks at a time */
1461
- static grpc_error* parse_string(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1462
- const uint8_t* end) {
1463
- size_t remaining = p->strlen - p->strgot;
1380
+ grpc_error_handle HPackParser::parse_string(const uint8_t* cur,
1381
+ const uint8_t* end) {
1382
+ size_t remaining = strlen_ - strgot_;
1464
1383
  size_t given = static_cast<size_t>(end - cur);
1465
1384
  if (remaining <= given) {
1466
- grpc_error* err = add_str_bytes(p, cur, cur + remaining);
1467
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1468
- err = finish_str(p, cur + remaining, end);
1469
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1470
- return parse_next(p, cur + remaining, end);
1385
+ grpc_error_handle err = AppendStrBytes(cur, cur + remaining);
1386
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
1387
+ err = finish_str(cur + remaining, end);
1388
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
1389
+ return parse_next(cur + remaining, end);
1471
1390
  } else {
1472
- grpc_error* err = add_str_bytes(p, cur, cur + given);
1473
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1474
- GPR_ASSERT(given <= UINT32_MAX - p->strgot);
1475
- p->strgot += static_cast<uint32_t>(given);
1476
- p->state = parse_string;
1391
+ grpc_error_handle err = AppendStrBytes(cur, cur + given);
1392
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
1393
+ GPR_ASSERT(given <= UINT32_MAX - strgot_);
1394
+ strgot_ += static_cast<uint32_t>(given);
1395
+ state_ = &HPackParser::parse_string;
1477
1396
  return GRPC_ERROR_NONE;
1478
1397
  }
1479
1398
  }
1480
1399
 
1481
1400
  /* begin parsing a string - performs setup, calls parse_string */
1482
- static grpc_error* begin_parse_string(grpc_chttp2_hpack_parser* p,
1483
- const uint8_t* cur, const uint8_t* end,
1484
- uint8_t binary,
1485
- grpc_chttp2_hpack_parser_string* str) {
1486
- if (!p->huff && binary == NOT_BINARY &&
1487
- static_cast<uint32_t>(end - cur) >= p->strlen &&
1488
- p->current_slice_refcount != nullptr) {
1401
+ grpc_error_handle HPackParser::begin_parse_string(const uint8_t* cur,
1402
+ const uint8_t* end,
1403
+ BinaryState binary,
1404
+ HPackParser::String* str) {
1405
+ if (!huff_ && binary == BinaryState::kNotBinary &&
1406
+ static_cast<uint32_t>(end - cur) >= strlen_ &&
1407
+ current_slice_refcount_ != nullptr) {
1489
1408
  GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
1490
- str->copied = false;
1491
- str->data.referenced.refcount = p->current_slice_refcount;
1492
- str->data.referenced.data.refcounted.bytes = const_cast<uint8_t*>(cur);
1493
- str->data.referenced.data.refcounted.length = p->strlen;
1494
- grpc_slice_ref_internal(str->data.referenced);
1495
- return parse_next(p, cur + p->strlen, end);
1409
+ str->copied_ = false;
1410
+ str->data_.referenced.refcount = current_slice_refcount_;
1411
+ str->data_.referenced.data.refcounted.bytes = const_cast<uint8_t*>(cur);
1412
+ str->data_.referenced.data.refcounted.length = strlen_;
1413
+ grpc_slice_ref_internal(str->data_.referenced);
1414
+ return parse_next(cur + strlen_, end);
1496
1415
  }
1497
- p->strgot = 0;
1498
- str->copied = true;
1499
- str->data.copied.length = 0;
1500
- p->parsing.str = str;
1501
- p->huff_state = 0;
1502
- p->binary = binary;
1503
- switch (p->binary) {
1504
- case NOT_BINARY:
1505
- if (p->huff) {
1416
+ strgot_ = 0;
1417
+ str->copied_ = true;
1418
+ str->data_.copied.length = 0;
1419
+ parsing_.str = str;
1420
+ huff_state_ = 0;
1421
+ binary_ = binary;
1422
+ switch (binary_) {
1423
+ case BinaryState::kNotBinary:
1424
+ if (huff_) {
1506
1425
  GRPC_STATS_INC_HPACK_RECV_HUFFMAN();
1507
1426
  } else {
1508
1427
  GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
1509
1428
  }
1510
1429
  break;
1511
- case BINARY_BEGIN:
1430
+ case BinaryState::kBinaryBegin:
1512
1431
  /* stats incremented later: don't know true binary or not */
1513
1432
  break;
1514
1433
  default:
1515
1434
  abort();
1516
1435
  }
1517
- return parse_string(p, cur, end);
1436
+ return parse_string(cur, end);
1518
1437
  }
1519
1438
 
1520
1439
  /* parse the key string */
1521
- static grpc_error* parse_key_string(grpc_chttp2_hpack_parser* p,
1522
- const uint8_t* cur, const uint8_t* end) {
1523
- return begin_parse_string(p, cur, end, NOT_BINARY, &p->key);
1440
+ grpc_error_handle HPackParser::parse_key_string(const uint8_t* cur,
1441
+ const uint8_t* end) {
1442
+ return begin_parse_string(cur, end, BinaryState::kNotBinary, &key_);
1524
1443
  }
1525
1444
 
1526
1445
  /* check if a key represents a binary header or not */
1527
1446
 
1528
- static bool is_binary_literal_header(grpc_chttp2_hpack_parser* p) {
1447
+ bool HPackParser::IsBinaryLiteralHeader() {
1529
1448
  /* We know that either argument here is a reference counter slice.
1530
1449
  * 1. If it is a grpc_core::StaticSlice, the refcount is set to kNoopRefcount.
1531
- * 2. If it's p->key.data.referenced, then p->key.copied was set to false,
1450
+ * 2. If it's key_.data.referenced, then key_.copied was set to false,
1532
1451
  * which occurs in begin_parse_string() - where the refcount is set to
1533
- * p->current_slice_refcount, which is not null. */
1452
+ * current_slice_refcount_, which is not null. */
1534
1453
  return grpc_is_refcounted_slice_binary_header(
1535
- p->key.copied ? grpc_core::ExternallyManagedSlice(
1536
- p->key.data.copied.str, p->key.data.copied.length)
1537
- : p->key.data.referenced);
1454
+ key_.copied_ ? grpc_core::ExternallyManagedSlice(key_.data_.copied.str,
1455
+ key_.data_.copied.length)
1456
+ : key_.data_.referenced);
1538
1457
  }
1539
1458
 
1540
1459
  /* Cache the metadata for the given index during initial parsing. This avoids a
1541
1460
  pointless recomputation of the metadata when finishing a header. We read the
1542
1461
  cached value in get_precomputed_md_for_idx(). */
1543
- static void set_precomputed_md_idx(grpc_chttp2_hpack_parser* p,
1544
- grpc_mdelem md) {
1545
- GPR_DEBUG_ASSERT(p->md_for_index.payload == 0);
1546
- GPR_DEBUG_ASSERT(p->precomputed_md_index == -1);
1547
- p->md_for_index = md;
1462
+ void HPackParser::SetPrecomputedMDIndex(grpc_mdelem md) {
1463
+ GPR_DEBUG_ASSERT(md_for_index_.payload == 0);
1464
+ GPR_DEBUG_ASSERT(precomputed_md_index_ == -1);
1465
+ md_for_index_ = md;
1548
1466
  #ifndef NDEBUG
1549
- p->precomputed_md_index = p->index;
1467
+ precomputed_md_index_ = index_;
1550
1468
  #endif
1551
1469
  }
1552
1470
 
@@ -1554,11 +1472,10 @@ static void set_precomputed_md_idx(grpc_chttp2_hpack_parser* p,
1554
1472
  is a binary indexed header during string parsing. We'll need to revisit this
1555
1473
  metadata when we're done parsing, so we cache the metadata for this index
1556
1474
  here using set_precomputed_md_idx(). */
1557
- static grpc_error* is_binary_indexed_header(grpc_chttp2_hpack_parser* p,
1558
- bool* is) {
1559
- grpc_mdelem elem = grpc_chttp2_hptbl_lookup(&p->table, p->index);
1475
+ grpc_error_handle HPackParser::IsBinaryIndexedHeader(bool* is) {
1476
+ grpc_mdelem elem = grpc_chttp2_hptbl_lookup(&table_, index_);
1560
1477
  if (GPR_UNLIKELY(GRPC_MDISNULL(elem))) {
1561
- return on_invalid_hpack_idx(p);
1478
+ return InvalidHPackIndexError();
1562
1479
  }
1563
1480
  /* We know that GRPC_MDKEY(elem) points to a reference counted slice since:
1564
1481
  * 1. elem was a result of grpc_chttp2_hptbl_lookup
@@ -1569,107 +1486,111 @@ static grpc_error* is_binary_indexed_header(grpc_chttp2_hpack_parser* p,
1569
1486
  * interned.
1570
1487
  * 4. Both static and interned element slices have non-null refcounts. */
1571
1488
  *is = grpc_is_refcounted_slice_binary_header(GRPC_MDKEY(elem));
1572
- set_precomputed_md_idx(p, elem);
1489
+ SetPrecomputedMDIndex(elem);
1573
1490
  return GRPC_ERROR_NONE;
1574
1491
  }
1575
1492
 
1576
1493
  /* parse the value string */
1577
- static grpc_error* parse_value_string(grpc_chttp2_hpack_parser* p,
1578
- const uint8_t* cur, const uint8_t* end,
1579
- bool is_binary) {
1580
- return begin_parse_string(p, cur, end, is_binary ? BINARY_BEGIN : NOT_BINARY,
1581
- &p->value);
1494
+ grpc_error_handle HPackParser::parse_value_string(const uint8_t* cur,
1495
+ const uint8_t* end,
1496
+ bool is_binary) {
1497
+ return begin_parse_string(
1498
+ cur, end, is_binary ? BinaryState::kBinaryBegin : BinaryState::kNotBinary,
1499
+ &value_);
1582
1500
  }
1583
1501
 
1584
- static grpc_error* parse_value_string_with_indexed_key(
1585
- grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end) {
1502
+ grpc_error_handle HPackParser::parse_value_string_with_indexed_key(
1503
+ const uint8_t* cur, const uint8_t* end) {
1586
1504
  bool is_binary = false;
1587
- grpc_error* err = is_binary_indexed_header(p, &is_binary);
1588
- if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err);
1589
- return parse_value_string(p, cur, end, is_binary);
1505
+ grpc_error_handle err = IsBinaryIndexedHeader(&is_binary);
1506
+ if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
1507
+ return parse_value_string(cur, end, is_binary);
1590
1508
  }
1591
1509
 
1592
- static grpc_error* parse_value_string_with_literal_key(
1593
- grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end) {
1594
- return parse_value_string(p, cur, end, is_binary_literal_header(p));
1595
- }
1596
-
1597
- /* "Uninitialized" header parser to save us a branch in on_hdr(). */
1598
- static grpc_error* on_header_uninitialized(void* /*user_data*/,
1599
- grpc_mdelem md) {
1600
- GRPC_MDELEM_UNREF(md);
1601
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("on_header callback not set");
1510
+ grpc_error_handle HPackParser::parse_value_string_with_literal_key(
1511
+ const uint8_t* cur, const uint8_t* end) {
1512
+ return parse_value_string(cur, end, IsBinaryLiteralHeader());
1602
1513
  }
1603
1514
 
1604
1515
  /* PUBLIC INTERFACE */
1605
1516
 
1606
- void grpc_chttp2_hpack_parser_init(grpc_chttp2_hpack_parser* p) {
1607
- p->on_header = on_header_uninitialized;
1608
- p->on_header_user_data = nullptr;
1609
- p->state = parse_begin;
1610
- p->key.data.referenced = grpc_empty_slice();
1611
- p->key.data.copied.str = nullptr;
1612
- p->key.data.copied.capacity = 0;
1613
- p->key.data.copied.length = 0;
1614
- p->value.data.referenced = grpc_empty_slice();
1615
- p->value.data.copied.str = nullptr;
1616
- p->value.data.copied.capacity = 0;
1617
- p->value.data.copied.length = 0;
1517
+ HPackParser::HPackParser() {
1518
+ state_ = &HPackParser::parse_begin;
1519
+ key_.data_.referenced = grpc_empty_slice();
1520
+ key_.data_.copied.str = nullptr;
1521
+ key_.data_.copied.capacity = 0;
1522
+ key_.data_.copied.length = 0;
1523
+ value_.data_.referenced = grpc_empty_slice();
1524
+ value_.data_.copied.str = nullptr;
1525
+ value_.data_.copied.capacity = 0;
1526
+ value_.data_.copied.length = 0;
1618
1527
  /* Cached metadata for the current index the parser is handling. This is set
1619
1528
  to 0 initially, invalidated when the index changes, and invalidated when it
1620
1529
  is read (by get_precomputed_md_for_idx()). It is set during string parsing,
1621
1530
  by set_precomputed_md_idx() - which is called by parse_value_string().
1622
1531
  The goal here is to avoid recomputing the metadata for the index when
1623
1532
  finishing with a header as well as the initial parse. */
1624
- p->md_for_index.payload = 0;
1533
+ md_for_index_.payload = 0;
1625
1534
  #ifndef NDEBUG
1626
1535
  /* In debug mode, this ensures that the cached metadata we're reading is in
1627
1536
  * fact correct for the index we are examining. */
1628
- p->precomputed_md_index = -1;
1537
+ precomputed_md_index_ = -1;
1629
1538
  #endif
1630
- p->dynamic_table_update_allowed = 2;
1631
- p->last_error = GRPC_ERROR_NONE;
1539
+ dynamic_table_updates_allowed_ = 2;
1540
+ last_error_ = GRPC_ERROR_NONE;
1632
1541
  }
1633
1542
 
1634
- void grpc_chttp2_hpack_parser_set_has_priority(grpc_chttp2_hpack_parser* p) {
1635
- p->after_prioritization = p->state;
1636
- p->state = parse_stream_dep0;
1543
+ void HPackParser::BeginFrame(Sink sink, Boundary boundary, Priority priority) {
1544
+ sink_ = std::move(sink);
1545
+ boundary_ = boundary;
1546
+ switch (priority) {
1547
+ case Priority::Included:
1548
+ after_prioritization_ = state_;
1549
+ state_ = &HPackParser::parse_stream_dep0;
1550
+ break;
1551
+ case Priority::None:
1552
+ break;
1553
+ }
1637
1554
  }
1638
1555
 
1639
- void grpc_chttp2_hpack_parser_destroy(grpc_chttp2_hpack_parser* p) {
1640
- grpc_chttp2_hptbl_destroy(&p->table);
1641
- GRPC_ERROR_UNREF(p->last_error);
1642
- grpc_slice_unref_internal(p->key.data.referenced);
1643
- grpc_slice_unref_internal(p->value.data.referenced);
1644
- gpr_free(p->key.data.copied.str);
1645
- gpr_free(p->value.data.copied.str);
1556
+ HPackParser::~HPackParser() {
1557
+ grpc_chttp2_hptbl_destroy(&table_);
1558
+ GRPC_ERROR_UNREF(last_error_);
1559
+ grpc_slice_unref_internal(key_.data_.referenced);
1560
+ grpc_slice_unref_internal(value_.data_.referenced);
1561
+ gpr_free(key_.data_.copied.str);
1562
+ gpr_free(value_.data_.copied.str);
1646
1563
  }
1647
1564
 
1648
- grpc_error* grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser* p,
1649
- const grpc_slice& slice) {
1565
+ grpc_error_handle HPackParser::Parse(const grpc_slice& slice) {
1650
1566
  /* max number of bytes to parse at a time... limits call stack depth on
1651
1567
  * compilers without TCO */
1652
1568
  #define MAX_PARSE_LENGTH 1024
1653
- p->current_slice_refcount = slice.refcount;
1569
+ current_slice_refcount_ = slice.refcount;
1654
1570
  const uint8_t* start = GRPC_SLICE_START_PTR(slice);
1655
1571
  const uint8_t* end = GRPC_SLICE_END_PTR(slice);
1656
- grpc_error* error = GRPC_ERROR_NONE;
1572
+ grpc_error_handle error = GRPC_ERROR_NONE;
1657
1573
  while (start != end && error == GRPC_ERROR_NONE) {
1658
1574
  const uint8_t* target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start);
1659
- error = p->state(p, start, target);
1575
+ error = (this->*state_)(start, target);
1660
1576
  start = target;
1661
1577
  }
1662
- p->current_slice_refcount = nullptr;
1578
+ current_slice_refcount_ = nullptr;
1663
1579
  return error;
1664
1580
  }
1665
1581
 
1582
+ } // namespace grpc_core
1583
+
1584
+ // TODO(ctiller): this serves as an eviction notice for the remainder of this
1585
+ // file... it belongs elsewhere!
1586
+
1666
1587
  typedef void (*maybe_complete_func_type)(grpc_chttp2_transport* t,
1667
1588
  grpc_chttp2_stream* s);
1668
1589
  static const maybe_complete_func_type maybe_complete_funcs[] = {
1669
1590
  grpc_chttp2_maybe_complete_recv_initial_metadata,
1670
1591
  grpc_chttp2_maybe_complete_recv_trailing_metadata};
1671
1592
 
1672
- static void force_client_rst_stream(void* sp, grpc_error* /*error*/) {
1593
+ static void force_client_rst_stream(void* sp, grpc_error_handle /*error*/) {
1673
1594
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
1674
1595
  grpc_chttp2_transport* t = s->t;
1675
1596
  if (!s->write_closed) {
@@ -1699,30 +1620,29 @@ static void parse_stream_compression_md(grpc_chttp2_transport* /*t*/,
1699
1620
  }
1700
1621
  }
1701
1622
 
1702
- grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
1703
- grpc_chttp2_transport* t,
1704
- grpc_chttp2_stream* s,
1705
- const grpc_slice& slice,
1706
- int is_last) {
1623
+ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
1624
+ grpc_chttp2_transport* t,
1625
+ grpc_chttp2_stream* s,
1626
+ const grpc_slice& slice,
1627
+ int is_last) {
1707
1628
  GPR_TIMER_SCOPE("grpc_chttp2_header_parser_parse", 0);
1708
- grpc_chttp2_hpack_parser* parser =
1709
- static_cast<grpc_chttp2_hpack_parser*>(hpack_parser);
1629
+ auto* parser = static_cast<grpc_core::HPackParser*>(hpack_parser);
1710
1630
  if (s != nullptr) {
1711
1631
  s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice);
1712
1632
  }
1713
- grpc_error* error = grpc_chttp2_hpack_parser_parse(parser, slice);
1633
+ grpc_error_handle error = parser->Parse(slice);
1714
1634
  if (error != GRPC_ERROR_NONE) {
1715
1635
  return error;
1716
1636
  }
1717
1637
  if (is_last) {
1718
- if (parser->is_boundary && parser->state != parse_begin) {
1638
+ if (parser->is_boundary() && !parser->is_in_begin_state()) {
1719
1639
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1720
1640
  "end of header frame not aligned with a hpack record boundary");
1721
1641
  }
1722
1642
  /* need to check for null stream: this can occur if we receive an invalid
1723
1643
  stream id on a header */
1724
1644
  if (s != nullptr) {
1725
- if (parser->is_boundary) {
1645
+ if (parser->is_boundary()) {
1726
1646
  if (s->header_frames_received == GPR_ARRAY_SIZE(s->metadata_buffer)) {
1727
1647
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1728
1648
  "Too many trailer frames");
@@ -1737,7 +1657,7 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
1737
1657
  maybe_complete_funcs[s->header_frames_received](t, s);
1738
1658
  s->header_frames_received++;
1739
1659
  }
1740
- if (parser->is_eof) {
1660
+ if (parser->is_eof()) {
1741
1661
  if (t->is_client && !s->write_closed) {
1742
1662
  /* server eof ==> complete closure; we may need to forcefully close
1743
1663
  the stream. Wait until the combiner lock is ready to be released
@@ -1751,11 +1671,7 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
1751
1671
  grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE);
1752
1672
  }
1753
1673
  }
1754
- parser->on_header = on_header_uninitialized;
1755
- parser->on_header_user_data = nullptr;
1756
- parser->is_boundary = 0xde;
1757
- parser->is_eof = 0xde;
1758
- parser->dynamic_table_update_allowed = 2;
1674
+ parser->FinishFrame();
1759
1675
  }
1760
1676
  return GRPC_ERROR_NONE;
1761
1677
  }