grpc 1.30.0 → 1.46.3

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 (2443) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1497 -18376
  3. data/etc/roots.pem +592 -899
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/compression.h +1 -1
  7. data/include/grpc/event_engine/README.md +38 -0
  8. data/include/grpc/event_engine/endpoint_config.h +43 -0
  9. data/include/grpc/event_engine/event_engine.h +399 -0
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  11. data/include/grpc/event_engine/memory_allocator.h +226 -0
  12. data/include/grpc/event_engine/memory_request.h +57 -0
  13. data/include/grpc/event_engine/port.h +39 -0
  14. data/include/grpc/fork.h +1 -1
  15. data/include/grpc/grpc.h +90 -25
  16. data/include/grpc/grpc_posix.h +22 -18
  17. data/include/grpc/grpc_security.h +563 -315
  18. data/include/grpc/grpc_security_constants.h +20 -14
  19. data/include/grpc/impl/codegen/README.md +22 -0
  20. data/include/grpc/impl/codegen/atm.h +5 -3
  21. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  22. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  23. data/include/grpc/impl/codegen/atm_windows.h +6 -0
  24. data/include/grpc/impl/codegen/byte_buffer.h +3 -1
  25. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  26. data/include/grpc/impl/codegen/compression_types.h +2 -2
  27. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  28. data/include/grpc/impl/codegen/fork.h +2 -0
  29. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  30. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  31. data/include/grpc/impl/codegen/grpc_types.h +84 -53
  32. data/include/grpc/impl/codegen/log.h +2 -2
  33. data/include/grpc/impl/codegen/port_platform.h +100 -97
  34. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  35. data/include/grpc/impl/codegen/slice.h +6 -1
  36. data/include/grpc/impl/codegen/status.h +2 -0
  37. data/include/grpc/impl/codegen/sync.h +8 -5
  38. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  39. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  40. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  41. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  42. data/include/grpc/impl/codegen/sync_windows.h +6 -0
  43. data/include/grpc/module.modulemap +14 -14
  44. data/include/grpc/slice.h +1 -12
  45. data/include/grpc/slice_buffer.h +3 -3
  46. data/include/grpc/status.h +1 -1
  47. data/include/grpc/support/atm.h +1 -1
  48. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  49. data/include/grpc/support/atm_gcc_sync.h +1 -1
  50. data/include/grpc/support/atm_windows.h +1 -1
  51. data/include/grpc/support/log.h +1 -1
  52. data/include/grpc/support/port_platform.h +1 -1
  53. data/include/grpc/support/sync.h +4 -4
  54. data/include/grpc/support/sync_abseil.h +1 -1
  55. data/include/grpc/support/sync_custom.h +1 -1
  56. data/include/grpc/support/sync_generic.h +1 -1
  57. data/include/grpc/support/sync_posix.h +1 -1
  58. data/include/grpc/support/sync_windows.h +1 -1
  59. data/include/grpc/support/time.h +9 -9
  60. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  61. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  63. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +33 -35
  66. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  67. data/src/core/ext/filters/client_channel/backup_poller.cc +20 -14
  68. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  69. data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
  70. data/src/core/ext/filters/client_channel/client_channel.cc +2284 -3096
  71. data/src/core/ext/filters/client_channel/client_channel.h +566 -63
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  73. data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -5
  74. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
  75. data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
  76. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -22
  77. data/src/core/ext/filters/client_channel/config_selector.cc +59 -0
  78. data/src/core/ext/filters/client_channel/config_selector.h +145 -0
  79. data/src/core/ext/filters/client_channel/connector.h +20 -20
  80. data/src/core/ext/filters/client_channel/dynamic_filters.cc +189 -0
  81. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  82. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -143
  83. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +16 -24
  84. data/src/core/ext/filters/client_channel/health/health_check_client.cc +129 -572
  85. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -158
  86. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +60 -62
  87. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  88. data/src/core/ext/filters/client_channel/http_proxy.cc +113 -117
  89. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +52 -38
  91. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +12 -9
  92. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +16 -9
  93. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -24
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +519 -388
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -14
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -4
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +4 -3
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -5
  101. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +20 -21
  102. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  103. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -75
  104. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +307 -211
  105. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +804 -0
  106. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
  107. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2542 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +84 -84
  109. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -49
  110. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +138 -96
  111. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +443 -156
  112. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +872 -0
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +710 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1215 -0
  117. data/src/core/ext/filters/client_channel/lb_policy.cc +23 -29
  118. data/src/core/ext/filters/client_channel/lb_policy.h +178 -142
  119. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
  120. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +13 -10
  121. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  122. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  123. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  124. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +304 -339
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -42
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +31 -24
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +58 -72
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +524 -230
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +44 -26
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  134. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +98 -247
  135. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +60 -62
  136. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +10 -7
  137. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +400 -0
  138. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  139. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  140. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +71 -63
  141. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +983 -101
  142. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  143. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +57 -314
  144. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +40 -62
  145. data/src/core/ext/filters/client_channel/retry_filter.cc +2655 -0
  146. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  147. data/src/core/ext/filters/client_channel/retry_service_config.cc +314 -0
  148. data/src/core/ext/filters/client_channel/retry_service_config.h +102 -0
  149. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -60
  150. data/src/core/ext/filters/client_channel/retry_throttle.h +15 -7
  151. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +157 -0
  152. data/src/core/ext/filters/client_channel/subchannel.cc +284 -397
  153. data/src/core/ext/filters/client_channel/subchannel.h +116 -161
  154. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  155. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
  156. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +27 -12
  157. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  158. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  159. data/src/core/ext/filters/deadline/deadline_filter.cc +120 -114
  160. data/src/core/ext/filters/deadline/deadline_filter.h +9 -12
  161. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +258 -0
  162. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
  163. data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
  164. data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
  165. data/src/core/ext/filters/http/client/http_client_filter.cc +84 -539
  166. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  167. data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
  168. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  169. data/src/core/ext/filters/http/http_filters_plugin.cc +55 -69
  170. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +67 -157
  171. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +103 -75
  172. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  173. data/src/core/ext/filters/http/server/http_server_filter.cc +89 -295
  174. data/src/core/ext/filters/message_size/message_size_filter.cc +101 -130
  175. data/src/core/ext/filters/message_size/message_size_filter.h +17 -3
  176. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  177. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  178. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  179. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  180. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  181. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  182. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  183. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  184. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  185. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +335 -46
  186. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
  187. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1005 -355
  188. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  189. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +11 -9
  190. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  191. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  192. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +807 -778
  193. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +24 -5
  194. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -6
  195. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -6
  196. data/src/core/ext/transport/chttp2/transport/flow_control.cc +89 -67
  197. data/src/core/ext/transport/chttp2/transport/flow_control.h +52 -38
  198. data/src/core/ext/transport/chttp2/transport/frame_data.cc +30 -30
  199. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
  200. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +25 -25
  201. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
  202. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +19 -20
  203. data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
  204. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -22
  205. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
  206. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +55 -22
  207. data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -7
  208. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +25 -25
  209. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  210. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  211. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
  212. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
  213. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  214. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
  215. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +814 -1196
  216. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +101 -83
  217. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
  218. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
  219. data/src/core/ext/transport/chttp2/transport/internal.h +79 -78
  220. data/src/core/ext/transport/chttp2/transport/parsing.cc +177 -327
  221. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  222. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  223. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  224. data/src/core/ext/transport/chttp2/transport/writing.cc +145 -190
  225. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  226. data/src/core/ext/transport/inproc/inproc_transport.cc +262 -237
  227. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  228. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  229. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  230. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  231. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  232. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
  233. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
  234. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  235. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  236. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  237. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  238. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  239. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  240. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  241. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  242. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  243. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  244. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  245. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  246. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  247. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  248. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  249. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +53 -2
  250. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  251. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +59 -14
  252. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +270 -0
  253. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +1240 -0
  254. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
  255. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
  256. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +95 -0
  257. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +382 -0
  258. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +543 -0
  259. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2961 -0
  260. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +48 -0
  261. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +103 -0
  262. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -0
  263. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +545 -0
  264. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  265. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  266. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +145 -0
  267. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +636 -0
  268. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +49 -0
  269. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +116 -0
  270. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +419 -0
  271. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1783 -0
  272. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +163 -0
  273. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +778 -0
  274. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +47 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +100 -0
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +47 -0
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +103 -0
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +269 -0
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +1277 -0
  282. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +220 -0
  283. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1219 -0
  284. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +49 -0
  285. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +122 -0
  286. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +322 -0
  287. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1686 -0
  288. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +40 -0
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +84 -0
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +47 -0
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +144 -0
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +56 -0
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +178 -0
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
  298. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +106 -0
  299. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +348 -0
  300. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +144 -0
  301. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +623 -0
  302. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +129 -0
  303. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +568 -0
  304. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +46 -0
  305. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +94 -0
  306. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +165 -0
  307. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +886 -0
  308. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +186 -0
  309. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +941 -0
  310. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  311. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
  312. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +56 -0
  313. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +154 -0
  314. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  315. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  316. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  317. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
  318. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  319. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
  320. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +209 -0
  321. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1008 -0
  322. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +101 -0
  323. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +443 -0
  324. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1051 -0
  325. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5956 -0
  326. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +79 -0
  327. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +255 -0
  328. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  329. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  330. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  331. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  332. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  333. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  334. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +63 -0
  335. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +167 -0
  336. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  337. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  338. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  339. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  342. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  343. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  344. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  345. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  346. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  347. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  348. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  349. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  350. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  351. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
  352. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  353. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
  354. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  355. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
  356. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  357. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  358. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  359. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
  360. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +463 -0
  361. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2606 -0
  362. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +28 -0
  363. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +38 -0
  364. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +175 -0
  365. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +880 -0
  366. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +88 -0
  367. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +308 -0
  368. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +191 -0
  369. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +1035 -0
  370. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  371. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  372. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +38 -0
  373. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +70 -0
  374. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +165 -0
  375. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +755 -0
  376. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +68 -0
  377. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +210 -0
  378. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  379. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
  380. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  381. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  382. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  383. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
  384. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  385. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  386. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +62 -0
  387. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +188 -0
  388. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  389. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
  390. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +48 -0
  391. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +113 -0
  392. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +47 -0
  393. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +100 -0
  394. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +80 -0
  395. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +234 -0
  396. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +67 -0
  397. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +218 -0
  398. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  399. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
  400. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +78 -0
  401. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +294 -0
  402. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +107 -0
  403. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +429 -0
  404. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +107 -0
  405. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +419 -0
  406. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  407. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  408. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +26 -0
  409. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +39 -0
  410. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  411. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  412. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +54 -0
  413. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +139 -0
  414. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +66 -0
  415. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +196 -0
  416. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  417. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  418. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +43 -0
  419. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +97 -0
  420. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  421. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  422. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  423. data/src/core/ext/upb-generated/google/api/annotations.upb.h +25 -2
  424. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +271 -0
  425. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +1236 -0
  426. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +283 -0
  427. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +1338 -0
  428. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  429. data/src/core/ext/upb-generated/google/api/http.upb.h +241 -100
  430. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  431. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  432. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  433. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +48 -18
  434. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
  435. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2368 -969
  436. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  437. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +46 -16
  438. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  439. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +31 -11
  440. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  441. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +203 -101
  442. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  443. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +46 -16
  444. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  445. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +313 -112
  446. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  447. data/src/core/ext/upb-generated/google/rpc/status.upb.h +63 -26
  448. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  449. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  450. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  451. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  452. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  453. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +777 -337
  454. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  455. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +99 -34
  456. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  457. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +74 -27
  458. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  459. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +460 -184
  460. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  461. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
  462. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  463. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  464. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  465. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +217 -43
  466. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +55 -0
  467. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +108 -0
  468. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  469. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +18 -2
  470. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  471. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +66 -16
  472. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +53 -0
  473. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +99 -0
  474. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  475. data/src/core/ext/upb-generated/validate/validate.upb.h +3024 -1084
  476. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  477. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  478. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  479. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  480. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  481. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  482. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  483. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
  484. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  485. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  486. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  487. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
  488. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  489. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
  490. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  491. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
  492. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  493. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  494. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  495. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
  496. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  497. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
  498. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  499. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
  500. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  501. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
  502. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  503. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  504. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  505. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  506. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  507. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  508. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  509. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
  510. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  511. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  512. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  513. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  514. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
  515. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  516. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  517. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  518. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  519. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  520. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  521. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  522. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  523. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  524. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  525. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  526. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  527. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  528. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  529. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  530. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +48 -0
  531. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  532. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +38 -0
  533. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  534. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +222 -0
  535. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  536. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +393 -0
  537. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  538. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +98 -0
  539. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  540. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +557 -0
  541. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
  542. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +51 -0
  543. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  544. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +138 -0
  545. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  546. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  547. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  548. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +112 -0
  549. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  550. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +54 -0
  551. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  552. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +267 -0
  553. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
  554. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +168 -0
  555. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  556. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +53 -0
  557. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  558. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +47 -0
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +35 -0
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  562. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +235 -0
  563. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  564. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +228 -0
  565. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  566. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +53 -0
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +298 -0
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +41 -0
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +57 -0
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +70 -0
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  580. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +99 -0
  581. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  582. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +128 -0
  583. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +136 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  586. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +48 -0
  587. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  588. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +197 -0
  589. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +190 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  592. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  593. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  594. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +63 -0
  595. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  596. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  597. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  599. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  600. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
  606. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +896 -0
  607. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +77 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  616. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +57 -0
  617. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  618. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  619. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  620. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  628. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  629. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  632. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  633. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  634. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  635. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  636. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  637. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  638. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  639. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  640. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  641. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  642. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +551 -0
  643. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +130 -0
  644. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  645. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  646. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +210 -0
  647. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  648. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +91 -0
  649. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  650. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +254 -0
  651. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  652. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  653. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  654. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +58 -0
  655. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  656. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +128 -0
  657. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  658. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +76 -0
  659. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  660. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  661. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  662. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  663. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  664. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  665. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  666. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  667. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  668. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +61 -0
  669. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  670. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  671. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  672. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +52 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +51 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +70 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  678. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +65 -0
  679. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  680. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  681. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +75 -0
  683. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  684. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +78 -0
  685. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  686. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +85 -0
  687. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  688. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  689. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  690. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +36 -0
  691. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  692. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  693. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  694. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +54 -0
  695. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  696. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +48 -0
  697. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  698. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  699. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  700. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +44 -0
  701. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  702. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  703. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  704. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  705. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  706. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  707. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  708. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  709. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  710. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +52 -0
  711. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  712. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  713. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  714. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +34 -0
  715. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  716. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -0
  717. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  718. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +35 -0
  719. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  720. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +32 -0
  721. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  722. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +54 -0
  723. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  724. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +35 -0
  725. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  726. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +45 -0
  727. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  728. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +37 -0
  729. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  730. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  731. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  732. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  733. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  734. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +62 -0
  735. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  736. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +47 -0
  737. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  738. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +34 -0
  739. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  740. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +46 -0
  741. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  742. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +39 -0
  743. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +283 -0
  745. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  746. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  747. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  748. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  749. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  750. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  751. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  752. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  753. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  754. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  755. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  756. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  757. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  758. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  759. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  760. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  761. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  762. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  763. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  764. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  765. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  766. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  767. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  768. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  769. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  770. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  771. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  772. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  773. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  774. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  775. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  776. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  777. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  778. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  779. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  780. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  781. data/src/core/ext/xds/certificate_provider_store.cc +95 -0
  782. data/src/core/ext/xds/certificate_provider_store.h +121 -0
  783. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  784. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  785. data/src/core/ext/xds/upb_utils.h +67 -0
  786. data/src/core/ext/xds/xds_api.cc +730 -0
  787. data/src/core/ext/xds/xds_api.h +191 -0
  788. data/src/core/ext/xds/xds_bootstrap.cc +570 -0
  789. data/src/core/ext/xds/xds_bootstrap.h +143 -0
  790. data/src/core/ext/xds/xds_certificate_provider.cc +407 -0
  791. data/src/core/ext/xds/xds_certificate_provider.h +159 -0
  792. data/src/core/ext/xds/xds_channel_args.h +32 -0
  793. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  794. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  795. data/src/core/ext/xds/xds_client.cc +2512 -0
  796. data/src/core/ext/xds/xds_client.h +348 -0
  797. data/src/core/ext/xds/xds_client_stats.cc +160 -0
  798. data/src/core/ext/xds/xds_client_stats.h +241 -0
  799. data/src/core/ext/xds/xds_cluster.cc +453 -0
  800. data/src/core/ext/xds/xds_cluster.h +108 -0
  801. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  802. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  803. data/src/core/ext/xds/xds_common_types.cc +388 -0
  804. data/src/core/ext/xds/xds_common_types.h +95 -0
  805. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  806. data/src/core/ext/xds/xds_endpoint.h +135 -0
  807. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  808. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  809. data/src/core/ext/xds/xds_http_filters.cc +122 -0
  810. data/src/core/ext/xds/xds_http_filters.h +133 -0
  811. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  812. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  813. data/src/core/ext/xds/xds_listener.cc +1039 -0
  814. data/src/core/ext/xds/xds_listener.h +220 -0
  815. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  816. data/src/core/ext/xds/xds_resource_type.h +98 -0
  817. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  818. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  819. data/src/core/ext/xds/xds_route_config.h +218 -0
  820. data/src/core/ext/xds/xds_routing.cc +250 -0
  821. data/src/core/ext/xds/xds_routing.h +101 -0
  822. data/src/core/ext/xds/xds_server_config_fetcher.cc +1314 -0
  823. data/src/core/lib/address_utils/parse_address.cc +340 -0
  824. data/src/core/lib/address_utils/parse_address.h +82 -0
  825. data/src/core/lib/address_utils/sockaddr_utils.cc +409 -0
  826. data/src/core/lib/address_utils/sockaddr_utils.h +95 -0
  827. data/src/core/lib/avl/avl.h +452 -88
  828. data/src/core/lib/backoff/backoff.cc +9 -38
  829. data/src/core/lib/backoff/backoff.h +11 -11
  830. data/src/core/lib/channel/call_finalization.h +86 -0
  831. data/src/core/lib/channel/call_tracer.h +88 -0
  832. data/src/core/lib/channel/channel_args.cc +182 -24
  833. data/src/core/lib/channel/channel_args.h +214 -2
  834. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  835. data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
  836. data/src/core/lib/channel/channel_stack.cc +37 -15
  837. data/src/core/lib/channel/channel_stack.h +57 -16
  838. data/src/core/lib/channel/channel_stack_builder.cc +24 -283
  839. data/src/core/lib/channel/channel_stack_builder.h +118 -157
  840. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  841. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  842. data/src/core/lib/channel/channel_trace.cc +14 -18
  843. data/src/core/lib/channel/channel_trace.h +3 -2
  844. data/src/core/lib/channel/channelz.cc +191 -137
  845. data/src/core/lib/channel/channelz.h +76 -53
  846. data/src/core/lib/channel/channelz_registry.cc +37 -19
  847. data/src/core/lib/channel/channelz_registry.h +4 -2
  848. data/src/core/lib/channel/connected_channel.cc +14 -10
  849. data/src/core/lib/channel/connected_channel.h +2 -2
  850. data/src/core/lib/channel/context.h +14 -0
  851. data/src/core/lib/channel/handshaker.cc +14 -54
  852. data/src/core/lib/channel/handshaker.h +10 -28
  853. data/src/core/lib/channel/handshaker_factory.h +10 -2
  854. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  855. data/src/core/lib/channel/handshaker_registry.h +29 -12
  856. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  857. data/src/core/lib/channel/promise_based_filter.h +437 -0
  858. data/src/core/lib/channel/status_util.cc +12 -2
  859. data/src/core/lib/channel/status_util.h +11 -2
  860. data/src/core/lib/compression/compression.cc +22 -110
  861. data/src/core/lib/compression/compression_internal.cc +139 -202
  862. data/src/core/lib/compression/compression_internal.h +67 -71
  863. data/src/core/lib/compression/message_compress.cc +13 -13
  864. data/src/core/lib/compression/message_compress.h +2 -2
  865. data/src/core/lib/config/core_configuration.cc +104 -0
  866. data/src/core/lib/config/core_configuration.h +196 -0
  867. data/src/core/lib/debug/stats.cc +1 -1
  868. data/src/core/lib/debug/stats.h +4 -3
  869. data/src/core/lib/debug/stats_data.cc +17 -19
  870. data/src/core/lib/debug/stats_data.h +6 -8
  871. data/src/core/lib/debug/trace.cc +1 -0
  872. data/src/core/lib/debug/trace.h +4 -3
  873. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +46 -0
  874. data/src/core/lib/event_engine/channel_args_endpoint_config.h +42 -0
  875. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  876. data/src/core/lib/event_engine/event_engine.cc +52 -0
  877. data/src/core/lib/event_engine/event_engine_factory.h +36 -0
  878. data/src/core/lib/event_engine/memory_allocator.cc +66 -0
  879. data/src/core/lib/event_engine/resolved_address.cc +39 -0
  880. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  881. data/src/core/lib/event_engine/sockaddr.h +44 -0
  882. data/src/core/lib/gpr/alloc.cc +7 -5
  883. data/src/core/lib/gpr/atm.cc +1 -1
  884. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  885. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  886. data/src/core/lib/gpr/env_linux.cc +1 -2
  887. data/src/core/lib/gpr/env_posix.cc +2 -3
  888. data/src/core/lib/gpr/log.cc +61 -19
  889. data/src/core/lib/gpr/log_android.cc +3 -2
  890. data/src/core/lib/gpr/log_linux.cc +30 -13
  891. data/src/core/lib/gpr/log_posix.cc +25 -10
  892. data/src/core/lib/gpr/log_windows.cc +18 -4
  893. data/src/core/lib/gpr/murmur_hash.cc +5 -3
  894. data/src/core/lib/gpr/spinlock.h +10 -2
  895. data/src/core/lib/gpr/string.cc +35 -33
  896. data/src/core/lib/gpr/string.h +11 -10
  897. data/src/core/lib/gpr/sync.cc +6 -6
  898. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  899. data/src/core/lib/gpr/sync_posix.cc +6 -11
  900. data/src/core/lib/gpr/sync_windows.cc +2 -2
  901. data/src/core/lib/gpr/time.cc +17 -15
  902. data/src/core/lib/gpr/time_precise.cc +5 -2
  903. data/src/core/lib/gpr/time_precise.h +6 -2
  904. data/src/core/lib/gpr/time_windows.cc +3 -2
  905. data/src/core/lib/gpr/tls.h +126 -36
  906. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  907. data/src/core/lib/gpr/useful.h +97 -31
  908. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  909. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  910. data/src/core/lib/gprpp/bitset.h +207 -0
  911. data/src/core/lib/gprpp/capture.h +76 -0
  912. data/src/core/lib/gprpp/chunked_vector.h +253 -0
  913. data/src/core/lib/gprpp/construct_destruct.h +39 -0
  914. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  915. data/src/core/lib/gprpp/debug_location.h +2 -0
  916. data/src/core/lib/gprpp/dual_ref_counted.h +330 -0
  917. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  918. data/src/core/lib/gprpp/examine_stack.h +46 -0
  919. data/src/core/lib/gprpp/fork.cc +16 -14
  920. data/src/core/lib/gprpp/fork.h +4 -4
  921. data/src/core/lib/gprpp/global_config.h +1 -2
  922. data/src/core/lib/gprpp/global_config_env.cc +18 -16
  923. data/src/core/lib/gprpp/global_config_env.h +2 -2
  924. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  925. data/src/core/lib/gprpp/manual_constructor.h +12 -10
  926. data/src/core/lib/gprpp/match.h +73 -0
  927. data/src/core/lib/gprpp/memory.h +9 -3
  928. data/src/core/lib/gprpp/mpscq.cc +9 -9
  929. data/src/core/lib/gprpp/mpscq.h +6 -5
  930. data/src/core/lib/gprpp/orphanable.h +11 -15
  931. data/src/core/lib/gprpp/overload.h +59 -0
  932. data/src/core/lib/gprpp/ref_counted.h +125 -86
  933. data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
  934. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  935. data/src/core/lib/gprpp/stat.h +38 -0
  936. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  937. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  938. data/src/core/lib/gprpp/status_helper.cc +435 -0
  939. data/src/core/lib/gprpp/status_helper.h +181 -0
  940. data/src/core/lib/gprpp/sync.h +106 -43
  941. data/src/core/lib/gprpp/table.h +434 -0
  942. data/src/core/lib/gprpp/thd.h +3 -3
  943. data/src/core/lib/gprpp/thd_posix.cc +47 -42
  944. data/src/core/lib/gprpp/thd_windows.cc +7 -12
  945. data/src/core/lib/gprpp/time.cc +198 -0
  946. data/src/core/lib/gprpp/time.h +292 -0
  947. data/src/core/lib/gprpp/time_util.cc +77 -0
  948. data/src/core/lib/gprpp/time_util.h +42 -0
  949. data/src/core/lib/http/format_request.cc +29 -25
  950. data/src/core/lib/http/format_request.h +8 -6
  951. data/src/core/lib/http/httpcli.cc +304 -211
  952. data/src/core/lib/http/httpcli.h +183 -86
  953. data/src/core/lib/http/httpcli_security_connector.cc +75 -85
  954. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  955. data/src/core/lib/http/parser.cc +145 -54
  956. data/src/core/lib/http/parser.h +20 -6
  957. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  958. data/src/core/lib/iomgr/buffer_list.h +23 -25
  959. data/src/core/lib/iomgr/call_combiner.cc +60 -25
  960. data/src/core/lib/iomgr/call_combiner.h +12 -14
  961. data/src/core/lib/iomgr/cfstream_handle.cc +7 -6
  962. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  963. data/src/core/lib/iomgr/closure.h +33 -12
  964. data/src/core/lib/iomgr/combiner.cc +48 -37
  965. data/src/core/lib/iomgr/combiner.h +3 -2
  966. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  967. data/src/core/lib/iomgr/endpoint.cc +6 -6
  968. data/src/core/lib/iomgr/endpoint.h +10 -9
  969. data/src/core/lib/iomgr/endpoint_cfstream.cc +56 -60
  970. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  971. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  972. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
  973. data/src/core/lib/iomgr/endpoint_pair_posix.cc +19 -17
  974. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  975. data/src/core/lib/iomgr/error.cc +287 -111
  976. data/src/core/lib/iomgr/error.h +278 -114
  977. data/src/core/lib/iomgr/error_cfstream.cc +17 -10
  978. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  979. data/src/core/lib/iomgr/error_internal.h +7 -2
  980. data/src/core/lib/iomgr/ev_apple.cc +19 -15
  981. data/src/core/lib/iomgr/ev_apple.h +1 -1
  982. data/src/core/lib/iomgr/ev_epoll1_linux.cc +64 -64
  983. data/src/core/lib/iomgr/ev_poll_posix.cc +82 -79
  984. data/src/core/lib/iomgr/ev_posix.cc +21 -22
  985. data/src/core/lib/iomgr/ev_posix.h +9 -9
  986. data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
  987. data/src/core/lib/iomgr/event_engine/closure.h +42 -0
  988. data/src/core/lib/iomgr/event_engine/endpoint.cc +172 -0
  989. data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
  990. data/src/core/lib/iomgr/event_engine/iomgr.cc +85 -0
  991. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  992. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  993. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  994. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +47 -0
  995. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +37 -0
  996. data/src/core/lib/iomgr/event_engine/resolver.cc +133 -0
  997. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  998. data/src/core/lib/iomgr/event_engine/tcp.cc +296 -0
  999. data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
  1000. data/src/core/lib/iomgr/exec_ctx.cc +30 -99
  1001. data/src/core/lib/iomgr/exec_ctx.h +42 -63
  1002. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  1003. data/src/core/lib/iomgr/executor/mpmcqueue.h +11 -15
  1004. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  1005. data/src/core/lib/iomgr/executor/threadpool.h +8 -7
  1006. data/src/core/lib/iomgr/executor.cc +37 -45
  1007. data/src/core/lib/iomgr/executor.h +4 -4
  1008. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  1009. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  1010. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  1011. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  1012. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  1013. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  1014. data/src/core/lib/iomgr/iomgr.cc +6 -4
  1015. data/src/core/lib/iomgr/iomgr.h +3 -3
  1016. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  1017. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  1018. data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
  1019. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
  1020. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1021. data/src/core/lib/iomgr/load_file.cc +6 -6
  1022. data/src/core/lib/iomgr/load_file.h +2 -2
  1023. data/src/core/lib/iomgr/lockfree_event.cc +38 -15
  1024. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  1025. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  1026. data/src/core/lib/iomgr/polling_entity.h +6 -0
  1027. data/src/core/lib/iomgr/pollset.cc +5 -5
  1028. data/src/core/lib/iomgr/pollset.h +9 -9
  1029. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  1030. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  1031. data/src/core/lib/iomgr/port.h +9 -37
  1032. data/src/core/lib/iomgr/python_util.h +6 -5
  1033. data/src/core/lib/iomgr/resolve_address.cc +10 -24
  1034. data/src/core/lib/iomgr/resolve_address.h +48 -43
  1035. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1036. data/src/core/lib/iomgr/resolve_address_posix.cc +91 -83
  1037. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  1038. data/src/core/lib/iomgr/resolve_address_windows.cc +106 -89
  1039. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  1040. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1041. data/src/core/lib/iomgr/sockaddr.h +2 -1
  1042. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  1043. data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
  1044. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1045. data/src/core/lib/iomgr/socket_mutator.cc +20 -6
  1046. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1047. data/src/core/lib/iomgr/socket_utils_common_posix.cc +124 -99
  1048. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1049. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1050. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1051. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1052. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  1053. data/src/core/lib/iomgr/tcp_client.cc +4 -4
  1054. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1055. data/src/core/lib/iomgr/tcp_client_cfstream.cc +19 -37
  1056. data/src/core/lib/iomgr/tcp_client_posix.cc +51 -67
  1057. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1058. data/src/core/lib/iomgr/tcp_client_windows.cc +21 -21
  1059. data/src/core/lib/iomgr/tcp_posix.cc +256 -209
  1060. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1061. data/src/core/lib/iomgr/tcp_server.cc +9 -10
  1062. data/src/core/lib/iomgr/tcp_server.h +21 -17
  1063. data/src/core/lib/iomgr/tcp_server_posix.cc +98 -86
  1064. data/src/core/lib/iomgr/tcp_server_utils_posix.h +36 -32
  1065. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +28 -27
  1066. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +14 -19
  1067. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1068. data/src/core/lib/iomgr/tcp_server_windows.cc +38 -41
  1069. data/src/core/lib/iomgr/tcp_windows.cc +56 -57
  1070. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1071. data/src/core/lib/iomgr/timer.cc +3 -2
  1072. data/src/core/lib/iomgr/timer.h +17 -8
  1073. data/src/core/lib/iomgr/timer_generic.cc +129 -139
  1074. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1075. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1076. data/src/core/lib/iomgr/timer_manager.cc +19 -18
  1077. data/src/core/lib/iomgr/unix_sockets_posix.cc +33 -41
  1078. data/src/core/lib/iomgr/unix_sockets_posix.h +9 -6
  1079. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +15 -11
  1080. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1081. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  1082. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +8 -9
  1083. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1084. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1085. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1086. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1087. data/src/core/lib/json/json.h +13 -3
  1088. data/src/core/lib/json/json_reader.cc +112 -70
  1089. data/src/core/lib/json/json_util.cc +126 -0
  1090. data/src/core/lib/json/json_util.h +154 -0
  1091. data/src/core/lib/json/json_writer.cc +2 -4
  1092. data/src/core/lib/matchers/matchers.cc +327 -0
  1093. data/src/core/lib/matchers/matchers.h +160 -0
  1094. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1095. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1096. data/src/core/lib/promise/activity.cc +121 -0
  1097. data/src/core/lib/promise/activity.h +540 -0
  1098. data/src/core/lib/promise/arena_promise.h +188 -0
  1099. data/src/core/lib/promise/call_push_pull.h +144 -0
  1100. data/src/core/lib/promise/context.h +86 -0
  1101. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1102. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  1103. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1104. data/src/core/lib/promise/detail/status.h +50 -0
  1105. data/src/core/lib/promise/detail/switch.h +1455 -0
  1106. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1107. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1108. data/src/core/lib/promise/latch.h +104 -0
  1109. data/src/core/lib/promise/loop.h +134 -0
  1110. data/src/core/lib/promise/map.h +88 -0
  1111. data/src/core/lib/promise/poll.h +66 -0
  1112. data/src/core/lib/promise/promise.h +95 -0
  1113. data/src/core/lib/promise/race.h +84 -0
  1114. data/src/core/lib/promise/seq.h +89 -0
  1115. data/src/core/lib/promise/sleep.cc +74 -0
  1116. data/src/core/lib/promise/sleep.h +66 -0
  1117. data/src/core/lib/promise/try_seq.h +157 -0
  1118. data/src/core/lib/resolver/resolver.cc +79 -0
  1119. data/src/core/lib/resolver/resolver.h +135 -0
  1120. data/src/core/lib/resolver/resolver_factory.h +76 -0
  1121. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1122. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1123. data/src/core/lib/resolver/server_address.cc +170 -0
  1124. data/src/core/lib/resolver/server_address.h +144 -0
  1125. data/src/core/lib/resource_quota/api.cc +83 -0
  1126. data/src/core/lib/resource_quota/api.h +40 -0
  1127. data/src/core/lib/resource_quota/arena.cc +107 -0
  1128. data/src/core/lib/resource_quota/arena.h +142 -0
  1129. data/src/core/lib/resource_quota/memory_quota.cc +478 -0
  1130. data/src/core/lib/resource_quota/memory_quota.h +457 -0
  1131. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1132. data/src/core/lib/resource_quota/resource_quota.h +66 -0
  1133. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  1134. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  1135. data/src/core/lib/resource_quota/trace.cc +19 -0
  1136. data/src/core/lib/resource_quota/trace.h +24 -0
  1137. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  1138. data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
  1139. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1140. data/src/core/lib/security/authorization/evaluate_args.cc +212 -0
  1141. data/src/core/lib/security/authorization/evaluate_args.h +92 -0
  1142. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1143. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1144. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  1145. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  1146. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1147. data/src/core/lib/security/authorization/matchers.h +211 -0
  1148. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1149. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1150. data/src/core/lib/security/context/security_context.cc +19 -13
  1151. data/src/core/lib/security/context/security_context.h +12 -3
  1152. data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -6
  1153. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
  1154. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  1155. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1156. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1157. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1158. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  1159. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1160. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  1161. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1162. data/src/core/lib/security/credentials/composite/composite_credentials.cc +28 -86
  1163. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
  1164. data/src/core/lib/security/credentials/credentials.cc +18 -17
  1165. data/src/core/lib/security/credentials/credentials.h +92 -90
  1166. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +419 -0
  1167. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
  1168. data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
  1169. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  1170. data/src/core/lib/security/credentials/external/external_account_credentials.cc +544 -0
  1171. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  1172. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  1173. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  1174. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +230 -0
  1175. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +61 -0
  1176. data/src/core/lib/security/credentials/fake/fake_credentials.cc +26 -29
  1177. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  1178. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -7
  1179. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +169 -82
  1180. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  1181. data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
  1182. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  1183. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +63 -0
  1184. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  1185. data/src/core/lib/security/credentials/jwt/json_token.cc +10 -12
  1186. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1187. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +61 -53
  1188. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +31 -18
  1189. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -62
  1190. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1191. data/src/core/lib/security/credentials/local/local_credentials.cc +8 -7
  1192. data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
  1193. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +216 -251
  1194. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +67 -38
  1195. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -158
  1196. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  1197. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +36 -22
  1198. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +26 -6
  1199. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +348 -0
  1200. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +217 -0
  1201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +454 -0
  1202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +195 -0
  1203. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
  1204. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
  1205. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +62 -184
  1206. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +98 -294
  1207. data/src/core/lib/security/credentials/tls/tls_credentials.cc +40 -21
  1208. data/src/core/lib/security/credentials/tls/tls_credentials.h +9 -3
  1209. data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
  1210. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  1211. data/src/core/lib/security/credentials/xds/xds_credentials.cc +237 -0
  1212. data/src/core/lib/security/credentials/xds/xds_credentials.h +100 -0
  1213. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +23 -19
  1214. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1215. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +37 -43
  1216. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  1217. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +111 -0
  1218. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +92 -0
  1219. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  1220. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1221. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1222. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  1223. data/src/core/lib/security/security_connector/local/local_security_connector.cc +35 -27
  1224. data/src/core/lib/security/security_connector/security_connector.cc +14 -18
  1225. data/src/core/lib/security/security_connector/security_connector.h +38 -27
  1226. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +43 -32
  1227. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +6 -2
  1228. data/src/core/lib/security/security_connector/ssl_utils.cc +119 -65
  1229. data/src/core/lib/security/security_connector/ssl_utils.h +40 -40
  1230. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +646 -423
  1231. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +187 -104
  1232. data/src/core/lib/security/transport/auth_filters.h +37 -8
  1233. data/src/core/lib/security/transport/client_auth_filter.cc +102 -358
  1234. data/src/core/lib/security/transport/secure_endpoint.cc +214 -149
  1235. data/src/core/lib/security/transport/secure_endpoint.h +2 -1
  1236. data/src/core/lib/security/transport/security_handshaker.cc +172 -94
  1237. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  1238. data/src/core/lib/security/transport/server_auth_filter.cc +58 -47
  1239. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1240. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1241. data/src/core/lib/security/util/json_util.cc +10 -13
  1242. data/src/core/lib/security/util/json_util.h +2 -1
  1243. data/src/core/lib/service_config/service_config.h +82 -0
  1244. data/src/core/lib/service_config/service_config_call_data.h +72 -0
  1245. data/src/core/lib/service_config/service_config_impl.cc +230 -0
  1246. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1247. data/src/core/lib/service_config/service_config_parser.cc +93 -0
  1248. data/src/core/lib/service_config/service_config_parser.h +106 -0
  1249. data/src/core/lib/slice/percent_encoding.cc +84 -97
  1250. data/src/core/lib/slice/percent_encoding.h +23 -28
  1251. data/src/core/lib/slice/slice.cc +111 -181
  1252. data/src/core/lib/slice/slice.h +384 -0
  1253. data/src/core/lib/slice/slice_api.cc +39 -0
  1254. data/src/core/lib/slice/slice_buffer.cc +12 -8
  1255. data/src/core/lib/slice/slice_internal.h +17 -277
  1256. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1257. data/src/core/lib/slice/slice_refcount.h +46 -0
  1258. data/src/core/lib/slice/slice_refcount_base.h +61 -0
  1259. data/src/core/lib/slice/slice_split.cc +100 -0
  1260. data/src/core/lib/slice/slice_split.h +40 -0
  1261. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  1262. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  1263. data/src/core/lib/surface/api_trace.cc +2 -1
  1264. data/src/core/lib/surface/api_trace.h +1 -0
  1265. data/src/core/lib/surface/builtins.cc +49 -0
  1266. data/src/core/lib/surface/builtins.h +26 -0
  1267. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  1268. data/src/core/lib/surface/call.cc +1171 -1248
  1269. data/src/core/lib/surface/call.h +16 -24
  1270. data/src/core/lib/surface/call_details.cc +10 -10
  1271. data/src/core/lib/surface/call_log_batch.cc +2 -2
  1272. data/src/core/lib/surface/channel.cc +96 -135
  1273. data/src/core/lib/surface/channel.h +31 -22
  1274. data/src/core/lib/surface/channel_init.cc +22 -76
  1275. data/src/core/lib/surface/channel_init.h +44 -40
  1276. data/src/core/lib/surface/channel_ping.cc +2 -3
  1277. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  1278. data/src/core/lib/surface/completion_queue.cc +154 -162
  1279. data/src/core/lib/surface/completion_queue.h +18 -17
  1280. data/src/core/lib/surface/completion_queue_factory.cc +3 -3
  1281. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  1282. data/src/core/lib/surface/event_string.cc +1 -0
  1283. data/src/core/lib/surface/init.cc +121 -83
  1284. data/src/core/lib/surface/init.h +10 -4
  1285. data/src/core/lib/surface/lame_client.cc +80 -72
  1286. data/src/core/lib/surface/lame_client.h +5 -0
  1287. data/src/core/lib/surface/metadata_array.cc +2 -2
  1288. data/src/core/lib/surface/server.cc +1142 -1373
  1289. data/src/core/lib/surface/server.h +467 -71
  1290. data/src/core/lib/surface/validate_metadata.cc +55 -24
  1291. data/src/core/lib/surface/validate_metadata.h +6 -2
  1292. data/src/core/lib/surface/version.cc +2 -2
  1293. data/src/core/lib/transport/bdp_estimator.cc +11 -12
  1294. data/src/core/lib/transport/bdp_estimator.h +4 -3
  1295. data/src/core/lib/transport/byte_stream.cc +11 -5
  1296. data/src/core/lib/transport/byte_stream.h +12 -11
  1297. data/src/core/lib/transport/connectivity_state.cc +27 -19
  1298. data/src/core/lib/transport/connectivity_state.h +28 -14
  1299. data/src/core/lib/transport/error_utils.cc +73 -21
  1300. data/src/core/lib/transport/error_utils.h +17 -4
  1301. data/src/core/lib/transport/metadata_batch.h +1355 -152
  1302. data/src/core/lib/transport/parsed_metadata.cc +37 -0
  1303. data/src/core/lib/transport/parsed_metadata.h +401 -0
  1304. data/src/core/lib/transport/pid_controller.cc +4 -4
  1305. data/src/core/lib/transport/status_conversion.cc +2 -2
  1306. data/src/core/lib/transport/status_conversion.h +1 -1
  1307. data/src/core/lib/transport/timeout_encoding.cc +208 -71
  1308. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1309. data/src/core/lib/transport/transport.cc +18 -36
  1310. data/src/core/lib/transport/transport.h +129 -15
  1311. data/src/core/lib/transport/transport_impl.h +14 -0
  1312. data/src/core/lib/transport/transport_op_string.cc +13 -35
  1313. data/src/core/lib/uri/uri_parser.cc +305 -254
  1314. data/src/core/lib/uri/uri_parser.h +92 -38
  1315. data/src/core/plugin_registry/grpc_plugin_registry.cc +76 -68
  1316. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1317. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1318. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  1319. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1320. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1321. data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
  1322. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +77 -68
  1323. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1324. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1325. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +103 -64
  1326. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  1327. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1328. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1329. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1330. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +5 -5
  1331. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1332. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  1335. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
  1336. data/src/core/tsi/fake_transport_security.cc +32 -12
  1337. data/src/core/tsi/local_transport_security.cc +46 -87
  1338. data/src/core/tsi/local_transport_security.h +6 -10
  1339. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1340. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1341. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1342. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  1343. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  1344. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +9 -9
  1345. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  1346. data/src/core/tsi/ssl_transport_security.cc +422 -129
  1347. data/src/core/tsi/ssl_transport_security.h +68 -16
  1348. data/src/core/tsi/transport_security.cc +25 -11
  1349. data/src/core/tsi/transport_security.h +16 -1
  1350. data/src/core/tsi/transport_security_grpc.h +1 -0
  1351. data/src/core/tsi/transport_security_interface.h +34 -1
  1352. data/src/ruby/bin/math_services_pb.rb +5 -5
  1353. data/src/ruby/ext/grpc/extconf.rb +34 -11
  1354. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1355. data/src/ruby/ext/grpc/rb_call.c +8 -7
  1356. data/src/ruby/ext/grpc/rb_call.h +4 -0
  1357. data/src/ruby/ext/grpc/rb_call_credentials.c +62 -17
  1358. data/src/ruby/ext/grpc/rb_channel.c +24 -10
  1359. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1360. data/src/ruby/ext/grpc/rb_channel_credentials.c +24 -5
  1361. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1362. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1363. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1364. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1365. data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
  1366. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1367. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1368. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +76 -48
  1369. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +130 -88
  1370. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1371. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1372. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1373. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1374. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1375. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1376. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1377. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1378. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  1379. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  1380. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1381. data/src/ruby/lib/grpc/version.rb +1 -1
  1382. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1383. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
  1384. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
  1385. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1386. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
  1387. data/src/ruby/pb/test/client.rb +769 -0
  1388. data/src/ruby/pb/test/server.rb +252 -0
  1389. data/src/ruby/pb/test/xds_client.rb +415 -0
  1390. data/src/ruby/spec/call_spec.rb +1 -1
  1391. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  1392. data/src/ruby/spec/channel_spec.rb +17 -6
  1393. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1394. data/src/ruby/spec/client_server_spec.rb +1 -1
  1395. data/src/ruby/spec/errors_spec.rb +1 -1
  1396. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  1397. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1398. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1399. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  1400. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  1401. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  1402. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  1403. data/src/ruby/spec/pb/codegen/package_option_spec.rb +27 -7
  1404. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1405. data/src/ruby/spec/server_spec.rb +22 -0
  1406. data/src/ruby/spec/support/services.rb +10 -4
  1407. data/src/ruby/spec/user_agent_spec.rb +74 -0
  1408. data/third_party/abseil-cpp/absl/algorithm/container.h +1774 -0
  1409. data/third_party/abseil-cpp/absl/base/attributes.h +169 -55
  1410. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1411. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  1412. data/third_party/abseil-cpp/absl/base/config.h +150 -49
  1413. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +417 -335
  1414. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
  1415. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1416. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1417. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1418. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  1419. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  1420. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  1421. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1422. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
  1423. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
  1424. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
  1425. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +36 -31
  1426. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1427. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
  1428. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1429. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1430. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1431. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +97 -5
  1432. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1433. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1434. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1435. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1436. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1437. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1438. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1439. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +7 -7
  1440. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1441. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1442. data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
  1443. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1444. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1445. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1446. data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
  1447. data/third_party/abseil-cpp/absl/container/fixed_array.h +527 -0
  1448. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  1449. data/third_party/abseil-cpp/absl/container/inlined_vector.h +141 -134
  1450. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  1451. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1452. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  1453. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +163 -0
  1454. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  1455. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  1456. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +190 -0
  1457. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +281 -0
  1458. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  1459. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  1460. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1461. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  1462. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  1463. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +67 -0
  1464. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +2034 -0
  1465. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  1466. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  1467. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1959 -0
  1468. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  1469. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +383 -0
  1470. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +138 -0
  1471. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
  1472. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1473. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +87 -0
  1474. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1475. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1476. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
  1477. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1478. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1479. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1480. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +364 -0
  1481. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +153 -0
  1482. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +191 -0
  1483. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1484. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +142 -0
  1485. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1486. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +38 -0
  1487. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1488. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1489. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1574 -0
  1490. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1491. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1492. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1493. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1494. data/third_party/abseil-cpp/absl/functional/function_ref.h +142 -0
  1495. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1496. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1497. data/third_party/abseil-cpp/absl/hash/hash.h +347 -0
  1498. data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
  1499. data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  1500. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +69 -0
  1501. data/third_party/abseil-cpp/absl/hash/internal/hash.h +1096 -0
  1502. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1503. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1504. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1505. data/third_party/abseil-cpp/absl/meta/type_traits.h +49 -11
  1506. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1507. data/third_party/abseil-cpp/absl/numeric/int128.cc +16 -37
  1508. data/third_party/abseil-cpp/absl/numeric/int128.h +159 -85
  1509. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1510. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1511. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1512. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1513. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1514. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1515. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1516. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1517. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1518. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1519. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1520. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1521. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1522. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1523. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1524. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1525. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1526. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1527. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1528. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1529. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1530. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1531. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1532. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1533. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1534. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1535. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1536. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1537. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1538. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1539. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1540. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1541. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1542. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1543. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1544. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1545. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1546. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1547. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1548. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1549. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1550. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1551. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1552. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1553. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1554. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1555. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1556. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1557. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1558. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1559. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1560. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1561. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
  1562. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1563. data/third_party/abseil-cpp/absl/status/status.cc +444 -0
  1564. data/third_party/abseil-cpp/absl/status/status.h +882 -0
  1565. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1566. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1567. data/third_party/abseil-cpp/absl/status/statusor.cc +103 -0
  1568. data/third_party/abseil-cpp/absl/status/statusor.h +770 -0
  1569. data/third_party/abseil-cpp/absl/strings/charconv.cc +10 -10
  1570. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1571. data/third_party/abseil-cpp/absl/strings/cord.cc +2047 -0
  1572. data/third_party/abseil-cpp/absl/strings/cord.h +1521 -0
  1573. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1574. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1575. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1576. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1577. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +9 -9
  1578. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1579. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +620 -0
  1580. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1581. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1582. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1583. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1584. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1585. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1586. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1587. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1588. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1589. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1590. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1591. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1592. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1593. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1594. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1595. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1596. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1597. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1598. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1599. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1600. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1601. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1602. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1603. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +158 -64
  1604. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +19 -6
  1605. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +30 -22
  1606. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
  1607. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +37 -13
  1608. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +183 -153
  1609. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1610. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1611. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1612. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +82 -77
  1613. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +51 -27
  1614. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1615. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1616. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1617. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1618. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1619. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1620. data/third_party/abseil-cpp/absl/strings/str_cat.cc +8 -8
  1621. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1622. data/third_party/abseil-cpp/absl/strings/str_format.h +290 -15
  1623. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1624. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1625. data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
  1626. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1627. data/third_party/abseil-cpp/absl/strings/string_view.h +143 -55
  1628. data/third_party/abseil-cpp/absl/strings/substitute.cc +7 -6
  1629. data/third_party/abseil-cpp/absl/strings/substitute.h +109 -81
  1630. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1631. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1632. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +67 -0
  1633. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +101 -0
  1634. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1635. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1636. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1637. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1638. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1639. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
  1640. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1641. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1642. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
  1643. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
  1644. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
  1645. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
  1646. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1647. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1648. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -11
  1649. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1650. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1651. data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
  1652. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1653. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +33 -27
  1654. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +97 -22
  1655. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1656. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1657. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1658. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1659. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1660. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1661. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +219 -150
  1662. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1663. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1664. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1665. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1666. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +1 -1
  1667. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1668. data/third_party/abseil-cpp/absl/time/time.h +107 -75
  1669. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1670. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1671. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1672. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1673. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1674. data/third_party/abseil-cpp/absl/types/span.h +51 -38
  1675. data/third_party/abseil-cpp/absl/types/variant.h +866 -0
  1676. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1677. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1678. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1679. data/third_party/boringssl-with-bazel/err_data.c +775 -721
  1680. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +72 -59
  1681. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1682. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1683. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1684. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1685. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1686. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1687. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +70 -57
  1688. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1689. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1690. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1691. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1692. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +6 -6
  1693. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
  1694. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1695. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1696. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +74 -68
  1697. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1698. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +25 -29
  1699. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1700. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +6 -1
  1701. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1702. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1703. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1704. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1705. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1706. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1707. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1708. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1709. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1710. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1711. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1712. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1713. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1714. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1715. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1716. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1717. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1718. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1719. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1720. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1721. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1722. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1723. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1724. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1725. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1726. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1727. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1728. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1729. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
  1730. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1731. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1732. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1733. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1734. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1735. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1736. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1737. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  1738. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1739. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +30 -43
  1740. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1741. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  1742. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1743. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  1744. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  1745. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1746. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  1747. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +161 -2
  1748. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1749. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1750. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1751. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1752. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1753. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1754. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1755. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +26 -5
  1756. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1757. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1758. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  1759. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
  1760. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1761. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1762. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1763. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  1764. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
  1765. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1766. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1767. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1768. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1769. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
  1770. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  1771. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  1772. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  1773. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  1774. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1775. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1776. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1777. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1778. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1779. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1780. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1781. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1782. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1783. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1784. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1785. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1786. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1787. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1788. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1789. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  1790. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +80 -43
  1791. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +120 -62
  1792. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1793. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +238 -18
  1794. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1795. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1796. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1797. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +618 -0
  1798. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1799. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1800. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1801. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1802. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1803. data/third_party/boringssl-with-bazel/src/crypto/mem.c +75 -24
  1804. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1805. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1806. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1807. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1808. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1809. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1810. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1811. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1812. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1813. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -1
  1814. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1815. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +132 -54
  1816. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1817. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1818. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1819. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1820. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1821. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1822. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1823. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1824. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1825. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1826. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1827. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1828. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1829. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1830. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
  1831. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
  1832. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
  1833. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1834. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1835. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +11 -1
  1836. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +5 -21
  1837. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1838. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1839. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1840. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1841. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1842. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
  1843. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1844. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -180
  1845. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1846. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1847. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1848. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
  1849. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
  1850. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1851. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -1
  1852. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
  1853. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
  1854. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
  1855. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1856. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
  1857. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +82 -113
  1858. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1859. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +99 -25
  1860. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -12
  1861. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1862. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1863. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
  1864. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1865. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +52 -28
  1866. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1867. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
  1868. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1869. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
  1870. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1871. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
  1872. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1873. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +75 -15
  1874. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1875. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1876. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +244 -11
  1877. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1878. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +7 -5
  1879. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1880. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1881. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1882. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1883. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1884. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +43 -32
  1885. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1886. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
  1887. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  1888. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1889. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1890. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1891. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1892. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1893. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  1894. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1895. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1896. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
  1897. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +128 -42
  1898. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  1899. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1900. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  1901. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1902. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
  1903. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1801 -673
  1904. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  1905. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +67 -15
  1906. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1907. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
  1908. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1909. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1910. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1911. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1912. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +42 -7
  1913. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1914. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1915. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  1916. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1917. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +66 -32
  1918. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -2
  1919. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1920. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1921. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1922. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1923. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1924. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +108 -75
  1925. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  1926. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1927. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1928. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1929. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1930. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1931. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1932. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1933. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
  1934. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1935. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1936. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1937. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1938. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1939. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1940. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +570 -144
  1941. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +53 -38
  1942. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
  1943. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2041 -829
  1944. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1945. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +642 -452
  1946. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1947. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1948. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1949. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1950. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  1951. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
  1952. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +108 -53
  1953. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +317 -221
  1954. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +187 -36
  1955. data/third_party/boringssl-with-bazel/src/ssl/internal.h +554 -173
  1956. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1957. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1958. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1959. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
  1960. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
  1961. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
  1962. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1963. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +167 -110
  1964. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1965. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +147 -138
  1966. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1967. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1968. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +16 -8
  1969. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1970. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
  1971. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +80 -36
  1972. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +316 -211
  1973. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1974. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +398 -145
  1975. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1976. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1977. data/third_party/cares/cares/include/ares.h +742 -0
  1978. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1979. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1980. data/third_party/cares/cares/include/ares_version.h +24 -0
  1981. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1982. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1983. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1984. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1985. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1986. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1987. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1988. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1989. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1990. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1991. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1992. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1993. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1994. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1995. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1996. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1997. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1998. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1999. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2000. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  2001. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  2002. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  2003. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2004. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  2005. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  2006. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  2007. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2008. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2009. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  2010. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2011. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  2012. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  2013. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  2014. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2015. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2016. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2017. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  2018. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2019. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2020. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2021. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  2022. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  2023. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  2024. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  2025. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  2026. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  2027. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  2028. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  2029. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  2030. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  2031. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2032. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2033. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  2034. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  2035. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  2036. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  2037. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  2038. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  2039. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2040. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2041. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2042. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2043. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2044. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2045. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2046. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2047. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2048. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2049. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2050. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2051. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2052. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2053. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2054. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2055. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2056. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2057. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  2058. data/third_party/re2/re2/bitmap256.h +117 -0
  2059. data/third_party/re2/re2/bitstate.cc +385 -0
  2060. data/third_party/re2/re2/compile.cc +1261 -0
  2061. data/third_party/re2/re2/dfa.cc +2118 -0
  2062. data/third_party/re2/re2/filtered_re2.cc +137 -0
  2063. data/third_party/re2/re2/filtered_re2.h +114 -0
  2064. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  2065. data/third_party/re2/re2/nfa.cc +713 -0
  2066. data/third_party/re2/re2/onepass.cc +623 -0
  2067. data/third_party/re2/re2/parse.cc +2483 -0
  2068. data/third_party/re2/re2/perl_groups.cc +119 -0
  2069. data/third_party/re2/re2/pod_array.h +55 -0
  2070. data/third_party/re2/re2/prefilter.cc +711 -0
  2071. data/third_party/re2/re2/prefilter.h +108 -0
  2072. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  2073. data/third_party/re2/re2/prefilter_tree.h +139 -0
  2074. data/third_party/re2/re2/prog.cc +1166 -0
  2075. data/third_party/re2/re2/prog.h +455 -0
  2076. data/third_party/re2/re2/re2.cc +1331 -0
  2077. data/third_party/re2/re2/re2.h +1017 -0
  2078. data/third_party/re2/re2/regexp.cc +987 -0
  2079. data/third_party/re2/re2/regexp.h +665 -0
  2080. data/third_party/re2/re2/set.cc +176 -0
  2081. data/third_party/re2/re2/set.h +85 -0
  2082. data/third_party/re2/re2/simplify.cc +665 -0
  2083. data/third_party/re2/re2/sparse_array.h +392 -0
  2084. data/third_party/re2/re2/sparse_set.h +264 -0
  2085. data/third_party/re2/re2/stringpiece.cc +65 -0
  2086. data/third_party/re2/re2/stringpiece.h +210 -0
  2087. data/third_party/re2/re2/tostring.cc +351 -0
  2088. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  2089. data/third_party/re2/re2/unicode_casefold.h +78 -0
  2090. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  2091. data/third_party/re2/re2/unicode_groups.h +67 -0
  2092. data/third_party/re2/re2/walker-inl.h +246 -0
  2093. data/third_party/re2/util/benchmark.h +156 -0
  2094. data/third_party/re2/util/flags.h +26 -0
  2095. data/third_party/re2/util/logging.h +109 -0
  2096. data/third_party/re2/util/malloc_counter.h +19 -0
  2097. data/third_party/re2/util/mix.h +41 -0
  2098. data/third_party/re2/util/mutex.h +148 -0
  2099. data/third_party/re2/util/pcre.cc +1025 -0
  2100. data/third_party/re2/util/pcre.h +681 -0
  2101. data/third_party/re2/util/rune.cc +260 -0
  2102. data/third_party/re2/util/strutil.cc +149 -0
  2103. data/third_party/re2/util/strutil.h +21 -0
  2104. data/third_party/re2/util/test.h +50 -0
  2105. data/third_party/re2/util/utf.h +44 -0
  2106. data/third_party/re2/util/util.h +42 -0
  2107. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2108. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2109. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2110. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2111. data/third_party/upb/upb/decode.c +997 -481
  2112. data/third_party/upb/upb/decode.h +79 -6
  2113. data/third_party/upb/upb/decode_fast.c +1055 -0
  2114. data/third_party/upb/upb/decode_fast.h +153 -0
  2115. data/third_party/upb/upb/decode_internal.h +211 -0
  2116. data/third_party/upb/upb/def.c +3261 -0
  2117. data/third_party/upb/upb/def.h +409 -0
  2118. data/third_party/upb/upb/def.hpp +438 -0
  2119. data/third_party/upb/upb/encode.c +459 -233
  2120. data/third_party/upb/upb/encode.h +56 -6
  2121. data/third_party/upb/upb/json_encode.c +776 -0
  2122. data/third_party/upb/upb/json_encode.h +62 -0
  2123. data/third_party/upb/upb/msg.c +387 -70
  2124. data/third_party/upb/upb/msg.h +90 -45
  2125. data/third_party/upb/upb/msg_internal.h +831 -0
  2126. data/third_party/upb/upb/port_def.inc +195 -84
  2127. data/third_party/upb/upb/port_undef.inc +48 -7
  2128. data/third_party/upb/upb/reflection.c +480 -0
  2129. data/third_party/upb/upb/reflection.h +220 -0
  2130. data/third_party/upb/upb/reflection.hpp +37 -0
  2131. data/third_party/upb/upb/table.c +441 -428
  2132. data/third_party/upb/upb/table_internal.h +385 -0
  2133. data/third_party/upb/upb/text_encode.c +472 -0
  2134. data/third_party/upb/upb/text_encode.h +64 -0
  2135. data/third_party/upb/upb/upb.c +255 -154
  2136. data/third_party/upb/upb/upb.h +235 -226
  2137. data/third_party/upb/upb/upb.hpp +115 -0
  2138. data/third_party/upb/upb/upb_internal.h +68 -0
  2139. data/third_party/xxhash/xxhash.h +5580 -0
  2140. data/third_party/zlib/crc32.c +966 -292
  2141. data/third_party/zlib/crc32.h +9441 -436
  2142. data/third_party/zlib/deflate.c +78 -30
  2143. data/third_party/zlib/deflate.h +12 -15
  2144. data/third_party/zlib/gzguts.h +3 -2
  2145. data/third_party/zlib/gzlib.c +5 -3
  2146. data/third_party/zlib/gzread.c +5 -7
  2147. data/third_party/zlib/gzwrite.c +25 -13
  2148. data/third_party/zlib/infback.c +2 -1
  2149. data/third_party/zlib/inffast.c +14 -14
  2150. data/third_party/zlib/inflate.c +39 -8
  2151. data/third_party/zlib/inflate.h +3 -2
  2152. data/third_party/zlib/inftrees.c +3 -3
  2153. data/third_party/zlib/trees.c +27 -48
  2154. data/third_party/zlib/zlib.h +123 -100
  2155. data/third_party/zlib/zutil.c +2 -2
  2156. data/third_party/zlib/zutil.h +12 -9
  2157. metadata +1175 -359
  2158. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2159. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -121
  2160. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  2161. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  2162. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
  2163. data/src/core/ext/filters/client_channel/parse_address.cc +0 -238
  2164. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  2165. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  2166. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -177
  2167. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  2168. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2169. data/src/core/ext/filters/client_channel/resolver.cc +0 -85
  2170. data/src/core/ext/filters/client_channel/resolver.h +0 -144
  2171. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2172. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  2173. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2174. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
  2175. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
  2176. data/src/core/ext/filters/client_channel/server_address.cc +0 -48
  2177. data/src/core/ext/filters/client_channel/server_address.h +0 -90
  2178. data/src/core/ext/filters/client_channel/service_config.cc +0 -221
  2179. data/src/core/ext/filters/client_channel/service_config.h +0 -123
  2180. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -68
  2181. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -87
  2182. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -89
  2183. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  2184. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  2185. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -342
  2186. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
  2187. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  2188. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +0 -26
  2189. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  2190. data/src/core/ext/filters/client_channel/xds/xds_client.cc +0 -2367
  2191. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
  2192. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -115
  2193. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +0 -211
  2194. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2195. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -556
  2196. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2197. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2198. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2199. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2200. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2201. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2202. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2203. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -112
  2204. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -79
  2205. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -225
  2206. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2207. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -75
  2208. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2209. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2210. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -246
  2211. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2212. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2213. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2214. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  2215. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  2216. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  2217. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  2218. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  2219. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  2220. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  2221. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  2222. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +0 -28
  2223. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  2224. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  2225. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  2226. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  2227. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  2228. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  2229. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  2230. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  2231. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  2232. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  2233. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  2234. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  2235. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  2236. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  2237. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  2238. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  2239. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  2240. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  2241. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  2242. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  2243. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  2244. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  2245. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  2246. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  2247. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  2248. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  2249. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  2250. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +0 -34
  2251. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  2252. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  2253. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  2254. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -31
  2255. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  2256. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  2257. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  2258. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  2259. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  2260. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  2261. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  2262. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  2263. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  2264. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -31
  2265. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  2266. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  2267. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  2268. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  2269. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  2270. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  2271. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  2272. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  2273. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  2274. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +0 -30
  2275. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  2276. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  2277. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  2278. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  2279. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  2280. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  2281. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  2282. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  2283. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  2284. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +0 -28
  2285. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  2286. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  2287. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  2288. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  2289. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  2290. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  2291. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  2292. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  2293. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  2294. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -24
  2295. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  2296. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  2297. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  2298. data/src/core/ext/upb-generated/envoy/type/http.upb.c +0 -17
  2299. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -36
  2300. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  2301. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  2302. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  2303. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  2304. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  2305. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  2306. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  2307. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  2308. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  2309. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  2310. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -29
  2311. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  2312. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  2313. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  2314. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  2315. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -30
  2316. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2317. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -144
  2318. data/src/core/lib/avl/avl.cc +0 -306
  2319. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2320. data/src/core/lib/compression/compression_args.cc +0 -134
  2321. data/src/core/lib/compression/compression_args.h +0 -56
  2322. data/src/core/lib/compression/stream_compression.cc +0 -80
  2323. data/src/core/lib/compression/stream_compression.h +0 -116
  2324. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2325. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2326. data/src/core/lib/compression/stream_compression_identity.cc +0 -92
  2327. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2328. data/src/core/lib/gpr/arena.h +0 -47
  2329. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2330. data/src/core/lib/gpr/tls_msvc.h +0 -52
  2331. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2332. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2333. data/src/core/lib/gprpp/arena.cc +0 -103
  2334. data/src/core/lib/gprpp/arena.h +0 -120
  2335. data/src/core/lib/gprpp/atomic.h +0 -104
  2336. data/src/core/lib/gprpp/map.h +0 -53
  2337. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2338. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1656
  2339. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2340. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2341. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2342. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2343. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2344. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -105
  2345. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2346. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  2347. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2348. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2349. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2350. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2351. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2352. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2353. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2354. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -173
  2355. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2356. data/src/core/lib/iomgr/resource_quota.cc +0 -1013
  2357. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2358. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2359. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -293
  2360. data/src/core/lib/iomgr/sockaddr_utils.h +0 -79
  2361. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2362. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2363. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -163
  2364. data/src/core/lib/iomgr/tcp_custom.cc +0 -370
  2365. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2366. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -485
  2367. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2368. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2369. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2370. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2371. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2372. data/src/core/lib/iomgr/udp_server.h +0 -101
  2373. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2374. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  2375. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  2376. data/src/core/lib/slice/slice_hash_table.h +0 -199
  2377. data/src/core/lib/slice/slice_intern.cc +0 -375
  2378. data/src/core/lib/slice/slice_utils.h +0 -200
  2379. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  2380. data/src/core/lib/surface/init_secure.cc +0 -81
  2381. data/src/core/lib/transport/metadata.cc +0 -679
  2382. data/src/core/lib/transport/metadata.h +0 -446
  2383. data/src/core/lib/transport/metadata_batch.cc +0 -392
  2384. data/src/core/lib/transport/static_metadata.cc +0 -1230
  2385. data/src/core/lib/transport/static_metadata.h +0 -597
  2386. data/src/core/lib/transport/status_metadata.cc +0 -61
  2387. data/src/core/lib/transport/status_metadata.h +0 -48
  2388. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  2389. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  2390. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2391. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2392. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2393. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2395. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2396. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2397. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2398. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2399. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  2400. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  2401. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -3870
  2402. data/third_party/cares/cares/ares.h +0 -670
  2403. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2404. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2405. data/third_party/cares/cares/ares_create_query.c +0 -206
  2406. data/third_party/cares/cares/ares_data.c +0 -222
  2407. data/third_party/cares/cares/ares_data.h +0 -72
  2408. data/third_party/cares/cares/ares_dns.h +0 -103
  2409. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2410. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2411. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2412. data/third_party/cares/cares/ares_getenv.c +0 -30
  2413. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2414. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2415. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2416. data/third_party/cares/cares/ares_getopt.c +0 -122
  2417. data/third_party/cares/cares/ares_getopt.h +0 -53
  2418. data/third_party/cares/cares/ares_init.c +0 -2615
  2419. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2420. data/third_party/cares/cares/ares_library_init.c +0 -195
  2421. data/third_party/cares/cares/ares_library_init.h +0 -43
  2422. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2423. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2424. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2425. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2426. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2427. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2428. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2429. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2430. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2431. data/third_party/cares/cares/ares_private.h +0 -382
  2432. data/third_party/cares/cares/ares_process.c +0 -1473
  2433. data/third_party/cares/cares/ares_query.c +0 -186
  2434. data/third_party/cares/cares/ares_search.c +0 -323
  2435. data/third_party/cares/cares/ares_send.c +0 -137
  2436. data/third_party/cares/cares/ares_setup.h +0 -217
  2437. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2438. data/third_party/cares/cares/ares_version.h +0 -24
  2439. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2440. data/third_party/cares/cares/inet_ntop.c +0 -207
  2441. data/third_party/upb/upb/generated_util.h +0 -105
  2442. data/third_party/upb/upb/port.c +0 -26
  2443. data/third_party/upb/upb/table.int.h +0 -507
@@ -19,17 +19,19 @@
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
21
  #include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
22
- #include "src/core/ext/transport/chttp2/transport/internal.h"
23
22
 
24
23
  #include <assert.h>
25
24
  #include <stddef.h>
26
25
  #include <string.h>
27
26
 
27
+ #include "absl/strings/str_cat.h"
28
+ #include "absl/strings/str_format.h"
29
+
28
30
  #include <grpc/support/alloc.h>
29
31
  #include <grpc/support/log.h>
30
- #include <grpc/support/string_util.h>
31
32
 
32
33
  #include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
34
+ #include "src/core/ext/transport/chttp2/transport/internal.h"
33
35
  #include "src/core/lib/debug/stats.h"
34
36
  #include "src/core/lib/gpr/string.h"
35
37
  #include "src/core/lib/profiling/timers.h"
@@ -38,198 +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
-
44
- typedef enum {
45
- NOT_BINARY,
46
- BINARY_BEGIN,
47
- B64_BYTE0,
48
- B64_BYTE1,
49
- B64_BYTE2,
50
- B64_BYTE3
51
- } binary_state;
52
-
53
- /* How parsing works:
54
-
55
- The parser object keeps track of a function pointer which represents the
56
- current parse state.
57
-
58
- Each time new bytes are presented, we call into the current state, which
59
- recursively parses until all bytes in the given chunk are exhausted.
60
-
61
- The parse state that terminates then saves its function pointer to be the
62
- current state so that it can resume when more bytes are available.
63
-
64
- It's expected that most optimizing compilers will turn this code into
65
- a set of indirect jumps, and so not waste stack space. */
66
-
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
- };
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 {
52
+
53
+ TraceFlag grpc_trace_chttp2_hpack_parser(false, "chttp2_hpack_parser");
233
54
 
234
55
  /* state table for huffman decoding: given a state, gives an index/16 into
235
56
  next_sub_tbl. Taking that index and adding the value of the nibble being
@@ -604,1064 +425,893 @@ static const int16_t emit_sub_tbl[249 * 16] = {
604
425
  13, 22, 22, 22, 22, 256, 256, 256, 256,
605
426
  };
606
427
 
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,
428
+ namespace {
429
+ // The alphabet used for base64 encoding binary metadata.
430
+ constexpr char kBase64Alphabet[] =
431
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
432
+
433
+ // An inverted table: for each value in kBase64Alphabet, table contains the
434
+ // index with which it's stored, so we can quickly invert the encoding without
435
+ // any complicated runtime logic.
436
+ struct Base64InverseTable {
437
+ uint8_t table[256]{};
438
+ GRPC_HPACK_CONSTEXPR_FN Base64InverseTable() {
439
+ for (int i = 0; i < 256; i++) {
440
+ table[i] = 255;
441
+ }
442
+ for (const char* p = kBase64Alphabet; *p; p++) {
443
+ uint8_t idx = *p;
444
+ uint8_t ofs = p - kBase64Alphabet;
445
+ table[idx] = ofs;
446
+ }
447
+ }
626
448
  };
627
449
 
628
- static void GPR_ATTRIBUTE_NOINLINE on_hdr_log(grpc_mdelem md) {
629
- char* k = grpc_slice_to_c_string(GRPC_MDKEY(md));
630
- char* v = nullptr;
631
- if (grpc_is_binary_header_internal(GRPC_MDKEY(md))) {
632
- v = grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX);
633
- } else {
634
- v = grpc_slice_to_c_string(GRPC_MDVALUE(md));
450
+ GRPC_HPACK_CONSTEXPR_VALUE Base64InverseTable kBase64InverseTable;
451
+ } // namespace
452
+
453
+ // Input tracks the current byte through the input data and provides it
454
+ // via a simple stream interface.
455
+ class HPackParser::Input {
456
+ public:
457
+ Input(grpc_slice_refcount* current_slice_refcount, const uint8_t* begin,
458
+ const uint8_t* end)
459
+ : current_slice_refcount_(current_slice_refcount),
460
+ begin_(begin),
461
+ end_(end),
462
+ frontier_(begin) {}
463
+
464
+ // If input is backed by a slice, retrieve its refcount. If not, return
465
+ // nullptr.
466
+ grpc_slice_refcount* slice_refcount() { return current_slice_refcount_; }
467
+
468
+ // Have we reached the end of input?
469
+ bool end_of_stream() const { return begin_ == end_; }
470
+ // How many bytes until end of input
471
+ size_t remaining() const { return end_ - begin_; }
472
+ // Current position, as a pointer
473
+ const uint8_t* cur_ptr() const { return begin_; }
474
+ // End position, as a pointer
475
+ const uint8_t* end_ptr() const { return end_; }
476
+ // Move read position forward by n, unchecked
477
+ void Advance(size_t n) { begin_ += n; }
478
+
479
+ // Retrieve the current character, or nullopt if end of stream
480
+ // Do not advance
481
+ absl::optional<uint8_t> peek() const {
482
+ if (end_of_stream()) {
483
+ return {};
484
+ }
485
+ return *begin_;
635
486
  }
636
- gpr_log(
637
- GPR_INFO,
638
- "Decode: '%s: %s', elem_interned=%d [%d], k_interned=%d, v_interned=%d",
639
- k, v, GRPC_MDELEM_IS_INTERNED(md), GRPC_MDELEM_STORAGE(md),
640
- grpc_slice_is_interned(GRPC_MDKEY(md)),
641
- grpc_slice_is_interned(GRPC_MDVALUE(md)));
642
- gpr_free(k);
643
- gpr_free(v);
644
- }
645
487
 
646
- /* emission helpers */
647
- template <bool do_add>
648
- static grpc_error* on_hdr(grpc_chttp2_hpack_parser* p, grpc_mdelem md) {
649
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
650
- on_hdr_log(md);
651
- }
652
- if (do_add) {
653
- GPR_DEBUG_ASSERT(GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_INTERNED ||
654
- GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_STATIC);
655
- grpc_error* err = grpc_chttp2_hptbl_add(&p->table, md);
656
- if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err;
488
+ // Retrieve and advance past the current character, or return nullopt if end
489
+ // of stream
490
+ absl::optional<uint8_t> Next() {
491
+ if (end_of_stream()) {
492
+ return UnexpectedEOF(absl::optional<uint8_t>());
493
+ }
494
+ return *begin_++;
657
495
  }
658
- return p->on_header(p->on_header_user_data, md);
659
- }
660
496
 
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();
669
- } else {
670
- s = grpc_core::UnmanagedMemorySlice(str->data.copied.str,
671
- str->data.copied.length);
497
+ // Helper to parse a varint delta on top of value, return nullopt on failure
498
+ // (setting error)
499
+ absl::optional<uint32_t> ParseVarint(uint32_t value) {
500
+ // TODO(ctiller): break out a variant of this when we know there are at
501
+ // least 5 bytes in input_
502
+ auto cur = Next();
503
+ if (!cur) return {};
504
+ value += *cur & 0x7f;
505
+ if ((*cur & 0x80) == 0) return value;
506
+
507
+ cur = Next();
508
+ if (!cur) return {};
509
+ value += (*cur & 0x7f) << 7;
510
+ if ((*cur & 0x80) == 0) return value;
511
+
512
+ cur = Next();
513
+ if (!cur) return {};
514
+ value += (*cur & 0x7f) << 14;
515
+ if ((*cur & 0x80) == 0) return value;
516
+
517
+ cur = Next();
518
+ if (!cur) return {};
519
+ value += (*cur & 0x7f) << 21;
520
+ if ((*cur & 0x80) == 0) return value;
521
+
522
+ cur = Next();
523
+ if (!cur) return {};
524
+ uint32_t c = (*cur) & 0x7f;
525
+ // We might overflow here, so we need to be a little careful about the
526
+ // addition
527
+ if (c > 0xf) return ParseVarintOutOfRange(value, *cur);
528
+ const uint32_t add = c << 28;
529
+ if (add > 0xffffffffu - value) {
530
+ return ParseVarintOutOfRange(value, *cur);
531
+ }
532
+ value += add;
533
+ if ((*cur & 0x80) == 0) return value;
534
+
535
+ // Spec weirdness: we can add an infinite stream of 0x80 at the end of a
536
+ // varint and still end up with a correctly encoded varint.
537
+ do {
538
+ cur = Next();
539
+ if (!cur.has_value()) return {};
540
+ } while (*cur == 0x80);
541
+
542
+ // BUT... the last byte needs to be 0x00 or we'll overflow dramatically!
543
+ if (*cur == 0) return value;
544
+ return ParseVarintOutOfRange(value, *cur);
672
545
  }
673
- str->data.copied.length = 0;
674
- return s;
675
- }
676
546
 
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();
685
- } else {
686
- s = grpc_core::ManagedMemorySlice(str->data.copied.str,
687
- str->data.copied.length);
547
+ // Prefix for a string
548
+ struct StringPrefix {
549
+ // Number of bytes in input for string
550
+ uint32_t length;
551
+ // Is it huffman compressed
552
+ bool huff;
553
+ };
554
+
555
+ // Parse a string prefix
556
+ absl::optional<StringPrefix> ParseStringPrefix() {
557
+ auto cur = Next();
558
+ if (!cur.has_value()) return {};
559
+ // Huffman if the top bit is 1
560
+ const bool huff = (*cur & 0x80) != 0;
561
+ // String length
562
+ uint32_t strlen = (*cur & 0x7f);
563
+ if (strlen == 0x7f) {
564
+ // all ones ==> varint string length
565
+ auto v = ParseVarint(0x7f);
566
+ if (!v.has_value()) return {};
567
+ strlen = *v;
568
+ }
569
+ return StringPrefix{strlen, huff};
688
570
  }
689
- str->data.copied.length = 0;
690
- return s;
691
- }
692
571
 
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);
698
- }
572
+ // Check if we saw an EOF.. must be verified before looking at TakeError
573
+ bool eof_error() const { return eof_error_; }
699
574
 
700
- /* begin parsing a header: all functionality is encoded into lookup tables
701
- above */
702
- static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
703
- const uint8_t* end) {
704
- if (cur == end) {
705
- p->state = parse_begin;
706
- return GRPC_ERROR_NONE;
575
+ // Extract the parse error, leaving the current error as NONE.
576
+ grpc_error_handle TakeError() {
577
+ grpc_error_handle out = error_;
578
+ error_ = GRPC_ERROR_NONE;
579
+ return out;
707
580
  }
708
581
 
709
- return first_byte_action[first_byte_lut[*cur]](p, cur, end);
710
- }
711
-
712
- /* 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) {
715
- if (cur == end) {
716
- p->state = parse_stream_weight;
717
- return GRPC_ERROR_NONE;
582
+ // Set the current error - allows the rest of the code not to need to pass
583
+ // around StatusOr<> which would be prohibitive here.
584
+ GPR_ATTRIBUTE_NOINLINE void SetError(grpc_error_handle error) {
585
+ if (error_ != GRPC_ERROR_NONE || eof_error_) {
586
+ GRPC_ERROR_UNREF(error);
587
+ return;
588
+ }
589
+ error_ = error;
590
+ begin_ = end_;
718
591
  }
719
592
 
720
- return p->after_prioritization(p, cur + 1, end);
721
- }
722
-
723
- static grpc_error* parse_stream_dep3(grpc_chttp2_hpack_parser* p,
724
- const uint8_t* cur, const uint8_t* end) {
725
- if (cur == end) {
726
- p->state = parse_stream_dep3;
727
- return GRPC_ERROR_NONE;
593
+ // If no error is set, set it to the value produced by error_factory.
594
+ // Return return_value unchanged.
595
+ template <typename F, typename T>
596
+ GPR_ATTRIBUTE_NOINLINE T MaybeSetErrorAndReturn(F error_factory,
597
+ T return_value) {
598
+ if (error_ != GRPC_ERROR_NONE || eof_error_) return return_value;
599
+ error_ = error_factory();
600
+ begin_ = end_;
601
+ return return_value;
728
602
  }
729
603
 
730
- return parse_stream_weight(p, cur + 1, end);
731
- }
732
-
733
- static grpc_error* parse_stream_dep2(grpc_chttp2_hpack_parser* p,
734
- const uint8_t* cur, const uint8_t* end) {
735
- if (cur == end) {
736
- p->state = parse_stream_dep2;
737
- return GRPC_ERROR_NONE;
604
+ // Set the error to an unexpected eof, and return result (code golfed as this
605
+ // is a common case)
606
+ template <typename T>
607
+ T UnexpectedEOF(T return_value) {
608
+ if (error_ != GRPC_ERROR_NONE) return return_value;
609
+ eof_error_ = true;
610
+ return return_value;
738
611
  }
739
612
 
740
- return parse_stream_dep3(p, cur + 1, end);
741
- }
742
-
743
- static grpc_error* parse_stream_dep1(grpc_chttp2_hpack_parser* p,
744
- const uint8_t* cur, const uint8_t* end) {
745
- if (cur == end) {
746
- p->state = parse_stream_dep1;
747
- return GRPC_ERROR_NONE;
613
+ // Update the frontier - signifies we've successfully parsed another element
614
+ void UpdateFrontier() { frontier_ = begin_; }
615
+
616
+ // Get the frontier - for buffering should we fail due to eof
617
+ const uint8_t* frontier() const { return frontier_; }
618
+
619
+ private:
620
+ // Helper to set the error to out of range for ParseVarint
621
+ absl::optional<uint32_t> ParseVarintOutOfRange(uint32_t value,
622
+ uint8_t last_byte) {
623
+ return MaybeSetErrorAndReturn(
624
+ [value, last_byte] {
625
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
626
+ "integer overflow in hpack integer decoding: have 0x%08x, "
627
+ "got byte 0x%02x on byte 5",
628
+ value, last_byte));
629
+ },
630
+ absl::optional<uint32_t>());
748
631
  }
749
632
 
750
- return parse_stream_dep2(p, cur + 1, end);
751
- }
633
+ // Refcount if we are backed by a slice
634
+ grpc_slice_refcount* current_slice_refcount_;
635
+ // Current input point
636
+ const uint8_t* begin_;
637
+ // End of stream point
638
+ const uint8_t* const end_;
639
+ // Frontier denotes the first byte past successfully processed input
640
+ const uint8_t* frontier_;
641
+ // Current error
642
+ grpc_error_handle error_ = GRPC_ERROR_NONE;
643
+ // If the error was EOF, we flag it here..
644
+ bool eof_error_ = false;
645
+ };
752
646
 
753
- static grpc_error* parse_stream_dep0(grpc_chttp2_hpack_parser* p,
754
- const uint8_t* cur, const uint8_t* end) {
755
- if (cur == end) {
756
- p->state = parse_stream_dep0;
757
- return GRPC_ERROR_NONE;
647
+ // Helper to parse a string and turn it into a slice with appropriate memory
648
+ // management characteristics
649
+ class HPackParser::String {
650
+ public:
651
+ String(const String&) = delete;
652
+ String& operator=(const String&) = delete;
653
+ String(String&& other) noexcept : value_(std::move(other.value_)) {
654
+ other.value_ = absl::Span<const uint8_t>();
758
655
  }
759
-
760
- return parse_stream_dep1(p, cur + 1, end);
761
- }
762
-
763
- static grpc_error* GPR_ATTRIBUTE_NOINLINE
764
- on_invalid_hpack_idx(grpc_chttp2_hpack_parser* p) {
765
- return grpc_error_set_int(
766
- grpc_error_set_int(
767
- 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));
770
- }
771
-
772
- /* 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);
777
- if (GPR_UNLIKELY(GRPC_MDISNULL(md))) {
778
- return on_invalid_hpack_idx(p);
656
+ String& operator=(String&& other) noexcept {
657
+ value_ = std::move(other.value_);
658
+ other.value_ = absl::Span<const uint8_t>();
659
+ return *this;
779
660
  }
780
- GRPC_STATS_INC_HPACK_RECV_INDEXED();
781
- grpc_error* err = on_hdr<false>(p, md);
782
- if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err;
783
- return parse_begin(p, cur, end);
784
- }
785
661
 
786
- /* 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);
793
- }
794
-
795
- /* 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);
807
- }
662
+ // Take the value and leave this empty
663
+ Slice Take();
664
+
665
+ // Return a reference to the value as a string view
666
+ absl::string_view string_view() const {
667
+ if (auto* p = absl::get_if<Slice>(&value_)) {
668
+ return p->as_string_view();
669
+ } else if (auto* p = absl::get_if<absl::Span<const uint8_t>>(&value_)) {
670
+ return absl::string_view(reinterpret_cast<const char*>(p->data()),
671
+ p->size());
672
+ } else if (auto* p = absl::get_if<std::vector<uint8_t>>(&value_)) {
673
+ return absl::string_view(reinterpret_cast<const char*>(p->data()),
674
+ p->size());
675
+ }
676
+ GPR_UNREACHABLE_CODE(return absl::string_view());
677
+ }
808
678
 
809
- /* When finishing with a header, get the cached md element for this index.
810
- This is set in parse_value_string(). We ensure (in debug mode) that the
811
- 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;
816
- GPR_DEBUG_ASSERT(!GRPC_MDISNULL(md)); /* handled in string parsing */
817
- p->md_for_index.payload = 0; /* Invalidate cached md when index changes. */
818
- #ifndef NDEBUG
819
- p->precomputed_md_index = -1;
820
- #endif
821
- return md;
822
- }
679
+ // Parse a non-binary string
680
+ static absl::optional<String> Parse(Input* input) {
681
+ auto pfx = input->ParseStringPrefix();
682
+ if (!pfx.has_value()) return {};
683
+ if (pfx->huff) {
684
+ // Huffman coded
685
+ std::vector<uint8_t> output;
686
+ auto v = ParseHuff(input, pfx->length,
687
+ [&output](uint8_t c) { output.push_back(c); });
688
+ if (!v) return {};
689
+ return String(std::move(output));
690
+ }
691
+ return ParseUncompressed(input, pfx->length);
692
+ }
823
693
 
824
- static const grpc_core::ManagedMemorySlice& get_indexed_key(grpc_mdelem md) {
825
- GPR_DEBUG_ASSERT(GRPC_MDELEM_IS_INTERNED(md));
826
- return static_cast<const grpc_core::ManagedMemorySlice&>(
827
- grpc_slice_ref_internal(GRPC_MDKEY(md)));
828
- }
694
+ // Parse a binary string
695
+ static absl::optional<String> ParseBinary(Input* input) {
696
+ auto pfx = input->ParseStringPrefix();
697
+ if (!pfx.has_value()) return {};
698
+ if (!pfx->huff) {
699
+ if (pfx->length > 0 && input->peek() == 0) {
700
+ // 'true-binary'
701
+ input->Advance(1);
702
+ return ParseUncompressed(input, pfx->length - 1);
703
+ }
704
+ // Base64 encoded... pull out the string, then unbase64 it
705
+ auto base64 = ParseUncompressed(input, pfx->length);
706
+ if (!base64.has_value()) return {};
707
+ return Unbase64(input, std::move(*base64));
708
+ } else {
709
+ // Huffman encoded...
710
+ std::vector<uint8_t> decompressed;
711
+ // State here says either we don't know if it's base64 or binary, or we do
712
+ // and what is it.
713
+ enum class State { kUnsure, kBinary, kBase64 };
714
+ State state = State::kUnsure;
715
+ auto decompressed_ok =
716
+ ParseHuff(input, pfx->length, [&state, &decompressed](uint8_t c) {
717
+ if (state == State::kUnsure) {
718
+ // First byte... if it's zero it's binary
719
+ if (c == 0) {
720
+ // Save the type, and skip the zero
721
+ state = State::kBinary;
722
+ return;
723
+ } else {
724
+ // Flag base64, store this value
725
+ state = State::kBase64;
726
+ }
727
+ }
728
+ // Non-first byte, or base64 first byte
729
+ decompressed.push_back(c);
730
+ });
731
+ if (!decompressed_ok) return {};
732
+ switch (state) {
733
+ case State::kUnsure:
734
+ // No bytes, empty span
735
+ return String(absl::Span<const uint8_t>());
736
+ case State::kBinary:
737
+ // Binary, we're done
738
+ return String(std::move(decompressed));
739
+ case State::kBase64:
740
+ // Base64 - unpack it
741
+ return Unbase64(input, String(std::move(decompressed)));
742
+ }
743
+ GPR_UNREACHABLE_CODE(abort(););
744
+ }
745
+ }
829
746
 
830
- /* 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) {
834
- 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);
841
- }
747
+ private:
748
+ void AppendBytes(const uint8_t* data, size_t length);
749
+ explicit String(std::vector<uint8_t> v) : value_(std::move(v)) {}
750
+ explicit String(absl::Span<const uint8_t> v) : value_(v) {}
751
+ String(grpc_slice_refcount* r, const uint8_t* begin, const uint8_t* end)
752
+ : value_(Slice::FromRefcountAndBytes(r, begin, end)) {}
753
+
754
+ // Parse some huffman encoded bytes, using output(uint8_t b) to emit each
755
+ // decoded byte.
756
+ template <typename Out>
757
+ static bool ParseHuff(Input* input, uint32_t length, Out output) {
758
+ GRPC_STATS_INC_HPACK_RECV_HUFFMAN();
759
+ int16_t state = 0;
760
+ // Parse one half byte... we leverage some lookup tables to keep the logic
761
+ // here really simple.
762
+ auto nibble = [&output, &state](uint8_t nibble) {
763
+ int16_t emit = emit_sub_tbl[16 * emit_tbl[state] + nibble];
764
+ int16_t next = next_sub_tbl[16 * next_tbl[state] + nibble];
765
+ if (emit != -1) {
766
+ if (emit >= 0 && emit < 256) {
767
+ output(static_cast<uint8_t>(emit));
768
+ } else {
769
+ assert(emit == 256);
770
+ }
771
+ }
772
+ state = next;
773
+ };
774
+ // If there's insufficient bytes remaining, return now.
775
+ if (input->remaining() < length) {
776
+ return input->UnexpectedEOF(false);
777
+ }
778
+ // Grab the byte range, and iterate through it.
779
+ const uint8_t* p = input->cur_ptr();
780
+ input->Advance(length);
781
+ for (uint32_t i = 0; i < length; i++) {
782
+ nibble(p[i] >> 4);
783
+ nibble(p[i] & 0xf);
784
+ }
785
+ return true;
786
+ }
842
787
 
843
- /* 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) {
847
- 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);
853
- }
788
+ // Parse some uncompressed string bytes.
789
+ static absl::optional<String> ParseUncompressed(Input* input,
790
+ uint32_t length) {
791
+ GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
792
+ // Check there's enough bytes
793
+ if (input->remaining() < length) {
794
+ return input->UnexpectedEOF(absl::optional<String>());
795
+ }
796
+ auto* refcount = input->slice_refcount();
797
+ auto* p = input->cur_ptr();
798
+ input->Advance(length);
799
+ if (refcount != nullptr) {
800
+ return String(refcount, p, p + length);
801
+ } else {
802
+ return String(absl::Span<const uint8_t>(p, length));
803
+ }
804
+ }
854
805
 
855
- /* 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);
865
- }
806
+ // Turn base64 encoded bytes into not base64 encoded bytes.
807
+ // Only takes input to set an error on failure.
808
+ static absl::optional<String> Unbase64(Input* input, String s) {
809
+ absl::optional<std::vector<uint8_t>> result;
810
+ if (auto* p = absl::get_if<Slice>(&s.value_)) {
811
+ result = Unbase64Loop(p->begin(), p->end());
812
+ }
813
+ if (auto* p = absl::get_if<absl::Span<const uint8_t>>(&s.value_)) {
814
+ result = Unbase64Loop(p->begin(), p->end());
815
+ }
816
+ if (auto* p = absl::get_if<std::vector<uint8_t>>(&s.value_)) {
817
+ result = Unbase64Loop(p->data(), p->data() + p->size());
818
+ }
819
+ if (!result.has_value()) {
820
+ return input->MaybeSetErrorAndReturn(
821
+ [] {
822
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
823
+ "illegal base64 encoding");
824
+ },
825
+ absl::optional<String>());
826
+ }
827
+ return String(std::move(*result));
828
+ }
866
829
 
867
- /* 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);
880
- }
830
+ // Main loop for Unbase64
831
+ static absl::optional<std::vector<uint8_t>> Unbase64Loop(const uint8_t* cur,
832
+ const uint8_t* end) {
833
+ while (cur != end && end[-1] == '=') {
834
+ --end;
835
+ }
881
836
 
882
- /* 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);
892
- }
837
+ std::vector<uint8_t> out;
838
+ out.reserve(3 * (end - cur) / 4 + 3);
893
839
 
894
- /* 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) {
898
- 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);
905
- }
840
+ // Decode 4 bytes at a time while we can
841
+ while (end - cur >= 4) {
842
+ uint32_t bits = kBase64InverseTable.table[*cur];
843
+ if (bits > 63) return {};
844
+ uint32_t buffer = bits << 18;
845
+ ++cur;
906
846
 
907
- /* 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) {
911
- 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);
917
- }
847
+ bits = kBase64InverseTable.table[*cur];
848
+ if (bits > 63) return {};
849
+ buffer |= bits << 12;
850
+ ++cur;
918
851
 
919
- /* 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);
929
- }
852
+ bits = kBase64InverseTable.table[*cur];
853
+ if (bits > 63) return {};
854
+ buffer |= bits << 6;
855
+ ++cur;
930
856
 
931
- /* 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);
944
- }
857
+ bits = kBase64InverseTable.table[*cur];
858
+ if (bits > 63) return {};
859
+ buffer |= bits;
860
+ ++cur;
945
861
 
946
- /* 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);
956
- }
862
+ out.insert(out.end(), {static_cast<uint8_t>(buffer >> 16),
863
+ static_cast<uint8_t>(buffer >> 8),
864
+ static_cast<uint8_t>(buffer)});
865
+ }
866
+ // Deal with the last 0, 1, 2, or 3 bytes.
867
+ switch (end - cur) {
868
+ case 0:
869
+ return out;
870
+ case 1:
871
+ return {};
872
+ case 2: {
873
+ uint32_t bits = kBase64InverseTable.table[*cur];
874
+ if (bits > 63) return {};
875
+ uint32_t buffer = bits << 18;
957
876
 
958
- /* 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) {
962
- 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);
969
- }
877
+ ++cur;
878
+ bits = kBase64InverseTable.table[*cur];
879
+ if (bits > 63) return {};
880
+ buffer |= bits << 12;
970
881
 
971
- /* 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) {
975
- 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);
981
- }
882
+ if (buffer & 0xffff) return {};
883
+ out.push_back(static_cast<uint8_t>(buffer >> 16));
884
+ return out;
885
+ }
886
+ case 3: {
887
+ uint32_t bits = kBase64InverseTable.table[*cur];
888
+ if (bits > 63) return {};
889
+ uint32_t buffer = bits << 18;
982
890
 
983
- /* 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);
993
- }
891
+ ++cur;
892
+ bits = kBase64InverseTable.table[*cur];
893
+ if (bits > 63) return {};
894
+ buffer |= bits << 12;
994
895
 
995
- /* 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);
1008
- }
896
+ ++cur;
897
+ bits = kBase64InverseTable.table[*cur];
898
+ if (bits > 63) return {};
899
+ buffer |= bits << 6;
1009
900
 
1010
- /* 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);
1020
- }
901
+ ++cur;
902
+ if (buffer & 0xff) return {};
903
+ out.push_back(static_cast<uint8_t>(buffer >> 16));
904
+ out.push_back(static_cast<uint8_t>(buffer >> 8));
905
+ return out;
906
+ }
907
+ }
1021
908
 
1022
- /* 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) {
1025
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
1026
- gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", p->index);
909
+ GPR_UNREACHABLE_CODE(return out;);
1027
910
  }
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);
1032
- }
1033
911
 
1034
- /* 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) {
1038
- return parse_error(
1039
- p, cur, end,
1040
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1041
- "More than two max table size changes in a single frame"));
1042
- }
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);
1047
- }
912
+ absl::variant<Slice, absl::Span<const uint8_t>, std::vector<uint8_t>> value_;
913
+ };
1048
914
 
1049
- /* 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) {
1056
- return parse_error(
1057
- p, cur, end,
1058
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1059
- "More than two max table size changes in a single frame"));
915
+ // Parser parses one key/value pair from a byte stream.
916
+ class HPackParser::Parser {
917
+ public:
918
+ Parser(Input* input, grpc_metadata_batch* metadata_buffer,
919
+ uint32_t metadata_size_limit, HPackTable* table,
920
+ uint8_t* dynamic_table_updates_allowed, uint32_t* frame_length,
921
+ LogInfo log_info)
922
+ : input_(input),
923
+ metadata_buffer_(metadata_buffer),
924
+ table_(table),
925
+ dynamic_table_updates_allowed_(dynamic_table_updates_allowed),
926
+ frame_length_(frame_length),
927
+ metadata_size_limit_(metadata_size_limit),
928
+ log_info_(log_info) {}
929
+
930
+ // Skip any priority bits, or return false on failure
931
+ bool SkipPriority() {
932
+ if (input_->remaining() < 5) return input_->UnexpectedEOF(false);
933
+ input_->Advance(5);
934
+ return true;
1060
935
  }
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);
1067
- }
1068
936
 
1069
- /* 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) {
1073
- GPR_ASSERT(err != GRPC_ERROR_NONE);
1074
- if (p->last_error == GRPC_ERROR_NONE) {
1075
- p->last_error = GRPC_ERROR_REF(err);
937
+ bool Parse() {
938
+ auto cur = *input_->Next();
939
+ switch (cur >> 4) {
940
+ // Literal header not indexed - First byte format: 0000xxxx
941
+ // Literal header never indexed - First byte format: 0001xxxx
942
+ // Where xxxx:
943
+ // 0000 - literal key
944
+ // 1111 - indexed key, varint encoded index
945
+ // other - indexed key, inline encoded index
946
+ case 0:
947
+ case 1:
948
+ switch (cur & 0xf) {
949
+ case 0: // literal key
950
+ return FinishHeaderOmitFromTable(ParseLiteralKey());
951
+ case 0xf: // varint encoded key index
952
+ return FinishHeaderOmitFromTable(ParseVarIdxKey(0xf));
953
+ default: // inline encoded key index
954
+ return FinishHeaderOmitFromTable(ParseIdxKey(cur & 0xf));
955
+ }
956
+ // Update max table size.
957
+ // First byte format: 001xxxxx
958
+ // Where xxxxx:
959
+ // 11111 - max size is varint encoded
960
+ // other - max size is stored inline
961
+ case 2:
962
+ // inline encoded max table size
963
+ return FinishMaxTableSize(cur & 0x1f);
964
+ case 3:
965
+ if (cur == 0x3f) {
966
+ // varint encoded max table size
967
+ return FinishMaxTableSize(input_->ParseVarint(0x1f));
968
+ } else {
969
+ // inline encoded max table size
970
+ return FinishMaxTableSize(cur & 0x1f);
971
+ }
972
+ // Literal header with incremental indexing.
973
+ // First byte format: 01xxxxxx
974
+ // Where xxxxxx:
975
+ // 000000 - literal key
976
+ // 111111 - indexed key, varint encoded index
977
+ // other - indexed key, inline encoded index
978
+ case 4:
979
+ if (cur == 0x40) {
980
+ // literal key
981
+ return FinishHeaderAndAddToTable(ParseLiteralKey());
982
+ }
983
+ ABSL_FALLTHROUGH_INTENDED;
984
+ case 5:
985
+ case 6:
986
+ // inline encoded key index
987
+ return FinishHeaderAndAddToTable(ParseIdxKey(cur & 0x3f));
988
+ case 7:
989
+ if (cur == 0x7f) {
990
+ // varint encoded key index
991
+ return FinishHeaderAndAddToTable(ParseVarIdxKey(0x3f));
992
+ } else {
993
+ // inline encoded key index
994
+ return FinishHeaderAndAddToTable(ParseIdxKey(cur & 0x3f));
995
+ }
996
+ // Indexed Header Field Representation
997
+ // First byte format: 1xxxxxxx
998
+ // Where xxxxxxx:
999
+ // 0000000 - illegal
1000
+ // 1111111 - varint encoded field index
1001
+ // other - inline encoded field index
1002
+ case 8:
1003
+ if (cur == 0x80) {
1004
+ // illegal value.
1005
+ return input_->MaybeSetErrorAndReturn(
1006
+ [] {
1007
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1008
+ "Illegal hpack op code");
1009
+ },
1010
+ false);
1011
+ }
1012
+ ABSL_FALLTHROUGH_INTENDED;
1013
+ case 9:
1014
+ case 10:
1015
+ case 11:
1016
+ case 12:
1017
+ case 13:
1018
+ case 14:
1019
+ // inline encoded field index
1020
+ return FinishIndexed(cur & 0x7f);
1021
+ case 15:
1022
+ if (cur == 0xff) {
1023
+ // varint encoded field index
1024
+ return FinishIndexed(input_->ParseVarint(0x7f));
1025
+ } else {
1026
+ // inline encoded field index
1027
+ return FinishIndexed(cur & 0x7f);
1028
+ }
1029
+ }
1030
+ GPR_UNREACHABLE_CODE(abort());
1076
1031
  }
1077
- p->state = still_parse_error;
1078
- return err;
1079
- }
1080
-
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);
1085
- }
1086
1032
 
1087
- static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p,
1088
- const uint8_t* cur, const uint8_t* end) {
1089
- 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);
1095
- }
1096
-
1097
- /* parse the 1st byte of a varint into p->parsing.value
1098
- no overflow is possible */
1099
- static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1100
- const uint8_t* end) {
1101
- if (cur == end) {
1102
- p->state = parse_value0;
1103
- return GRPC_ERROR_NONE;
1033
+ private:
1034
+ void GPR_ATTRIBUTE_NOINLINE LogHeader(const HPackTable::Memento& memento) {
1035
+ const char* type;
1036
+ switch (log_info_.type) {
1037
+ case LogInfo::kHeaders:
1038
+ type = "HDR";
1039
+ break;
1040
+ case LogInfo::kTrailers:
1041
+ type = "TRL";
1042
+ break;
1043
+ case LogInfo::kDontKnow:
1044
+ type = "???";
1045
+ break;
1046
+ }
1047
+ gpr_log(GPR_DEBUG, "HTTP:%d:%s:%s: %s", log_info_.stream_id, type,
1048
+ log_info_.is_client ? "CLI" : "SVR", memento.DebugString().c_str());
1104
1049
  }
1105
1050
 
1106
- *p->parsing.value += (*cur) & 0x7f;
1051
+ bool EmitHeader(const HPackTable::Memento& md) {
1052
+ // Pass up to the transport
1053
+ if (GPR_UNLIKELY(metadata_buffer_ == nullptr)) return true;
1054
+ *frame_length_ += md.transport_size();
1055
+ if (GPR_UNLIKELY(*frame_length_ > metadata_size_limit_)) {
1056
+ return HandleMetadataSizeLimitExceeded(md);
1057
+ }
1107
1058
 
1108
- if ((*cur) & 0x80) {
1109
- return parse_value1(p, cur + 1, end);
1110
- } else {
1111
- return parse_next(p, cur + 1, end);
1059
+ metadata_buffer_->Set(md);
1060
+ return true;
1112
1061
  }
1113
- }
1114
1062
 
1115
- /* parse the 2nd byte of a varint into p->parsing.value
1116
- no overflow is possible */
1117
- static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1118
- const uint8_t* end) {
1119
- if (cur == end) {
1120
- p->state = parse_value1;
1121
- return GRPC_ERROR_NONE;
1063
+ bool FinishHeaderAndAddToTable(absl::optional<HPackTable::Memento> md) {
1064
+ // Allow higher code to just pass in failures ... simplifies things a bit.
1065
+ if (!md.has_value()) return false;
1066
+ // Log if desired
1067
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
1068
+ LogHeader(*md);
1069
+ }
1070
+ // Emit whilst we own the metadata.
1071
+ auto r = EmitHeader(*md);
1072
+ // Add to the hpack table
1073
+ grpc_error_handle err = table_->Add(std::move(*md));
1074
+ if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) {
1075
+ input_->SetError(err);
1076
+ return false;
1077
+ };
1078
+ return r;
1122
1079
  }
1123
1080
 
1124
- *p->parsing.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 7;
1125
-
1126
- if ((*cur) & 0x80) {
1127
- return parse_value2(p, cur + 1, end);
1128
- } else {
1129
- return parse_next(p, cur + 1, end);
1081
+ bool FinishHeaderOmitFromTable(absl::optional<HPackTable::Memento> md) {
1082
+ // Allow higher code to just pass in failures ... simplifies things a bit.
1083
+ if (!md.has_value()) return false;
1084
+ return FinishHeaderOmitFromTable(*md);
1130
1085
  }
1131
- }
1132
1086
 
1133
- /* parse the 3rd byte of a varint into p->parsing.value
1134
- no overflow is possible */
1135
- static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1136
- const uint8_t* end) {
1137
- if (cur == end) {
1138
- p->state = parse_value2;
1139
- return GRPC_ERROR_NONE;
1087
+ bool FinishHeaderOmitFromTable(const HPackTable::Memento& md) {
1088
+ // Log if desired
1089
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
1090
+ LogHeader(md);
1091
+ }
1092
+ return EmitHeader(md);
1140
1093
  }
1141
1094
 
1142
- *p->parsing.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 14;
1143
-
1144
- if ((*cur) & 0x80) {
1145
- return parse_value3(p, cur + 1, end);
1146
- } else {
1147
- return parse_next(p, cur + 1, end);
1148
- }
1149
- }
1150
-
1151
- /* parse the 4th byte of a varint into p->parsing.value
1152
- no overflow is possible */
1153
- static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1154
- const uint8_t* end) {
1155
- if (cur == end) {
1156
- p->state = parse_value3;
1157
- return GRPC_ERROR_NONE;
1095
+ // Parse a string encoded key and a string encoded value
1096
+ absl::optional<HPackTable::Memento> ParseLiteralKey() {
1097
+ auto key = String::Parse(input_);
1098
+ if (!key.has_value()) return {};
1099
+ auto value = ParseValueString(absl::EndsWith(key->string_view(), "-bin"));
1100
+ if (GPR_UNLIKELY(!value.has_value())) {
1101
+ return {};
1102
+ }
1103
+ auto key_string = key->string_view();
1104
+ auto value_slice = value->Take();
1105
+ const auto transport_size = key_string.size() + value_slice.size() +
1106
+ hpack_constants::kEntryOverhead;
1107
+ return grpc_metadata_batch::Parse(
1108
+ key->string_view(), std::move(value_slice), transport_size,
1109
+ [key_string](absl::string_view error, const Slice& value) {
1110
+ ReportMetadataParseError(key_string, error, value.as_string_view());
1111
+ });
1158
1112
  }
1159
1113
 
1160
- *p->parsing.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 21;
1161
-
1162
- if ((*cur) & 0x80) {
1163
- return parse_value4(p, cur + 1, end);
1164
- } else {
1165
- return parse_next(p, cur + 1, end);
1114
+ // Parse an index encoded key and a string encoded value
1115
+ absl::optional<HPackTable::Memento> ParseIdxKey(uint32_t index) {
1116
+ const auto* elem = table_->Lookup(index);
1117
+ if (GPR_UNLIKELY(elem == nullptr)) {
1118
+ return InvalidHPackIndexError(index,
1119
+ absl::optional<HPackTable::Memento>());
1120
+ }
1121
+ auto value = ParseValueString(elem->is_binary_header());
1122
+ if (GPR_UNLIKELY(!value.has_value())) return {};
1123
+ return elem->WithNewValue(
1124
+ value->Take(), [=](absl::string_view error, const Slice& value) {
1125
+ ReportMetadataParseError(elem->key(), error, value.as_string_view());
1126
+ });
1166
1127
  }
1167
- }
1168
1128
 
1169
- /* parse the 5th byte of a varint into p->parsing.value
1170
- 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) {
1173
- uint8_t c;
1174
- uint32_t cur_value;
1175
- uint32_t add_value;
1176
- char* msg;
1177
-
1178
- if (cur == end) {
1179
- p->state = parse_value4;
1180
- return GRPC_ERROR_NONE;
1129
+ // Parse a varint index encoded key and a string encoded value
1130
+ absl::optional<HPackTable::Memento> ParseVarIdxKey(uint32_t offset) {
1131
+ auto index = input_->ParseVarint(offset);
1132
+ if (GPR_UNLIKELY(!index.has_value())) return {};
1133
+ return ParseIdxKey(*index);
1181
1134
  }
1182
1135
 
1183
- c = (*cur) & 0x7f;
1184
- if (c > 0xf) {
1185
- goto error;
1136
+ // Parse a string, figuring out if it's binary or not by the key name.
1137
+ absl::optional<String> ParseValueString(bool is_binary) {
1138
+ if (is_binary) {
1139
+ return String::ParseBinary(input_);
1140
+ } else {
1141
+ return String::Parse(input_);
1142
+ }
1186
1143
  }
1187
1144
 
1188
- cur_value = *p->parsing.value;
1189
- add_value = (static_cast<uint32_t>(c)) << 28;
1190
- if (add_value > 0xffffffffu - cur_value) {
1191
- goto error;
1145
+ // Emit an indexed field
1146
+ bool FinishIndexed(absl::optional<uint32_t> index) {
1147
+ *dynamic_table_updates_allowed_ = 0;
1148
+ if (!index.has_value()) return false;
1149
+ const auto* elem = table_->Lookup(*index);
1150
+ if (GPR_UNLIKELY(elem == nullptr)) {
1151
+ return InvalidHPackIndexError(*index, false);
1152
+ }
1153
+ GRPC_STATS_INC_HPACK_RECV_INDEXED();
1154
+ return FinishHeaderOmitFromTable(*elem);
1192
1155
  }
1193
1156
 
1194
- *p->parsing.value = cur_value + add_value;
1195
-
1196
- if ((*cur) & 0x80) {
1197
- return parse_value5up(p, cur + 1, end);
1198
- } else {
1199
- return parse_next(p, cur + 1, end);
1157
+ // finish parsing a max table size change
1158
+ bool FinishMaxTableSize(absl::optional<uint32_t> size) {
1159
+ if (!size.has_value()) return false;
1160
+ if (*dynamic_table_updates_allowed_ == 0) {
1161
+ return input_->MaybeSetErrorAndReturn(
1162
+ [] {
1163
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1164
+ "More than two max table size changes in a single frame");
1165
+ },
1166
+ false);
1167
+ }
1168
+ (*dynamic_table_updates_allowed_)--;
1169
+ grpc_error_handle err = table_->SetCurrentTableSize(*size);
1170
+ if (err != GRPC_ERROR_NONE) {
1171
+ input_->SetError(err);
1172
+ return false;
1173
+ }
1174
+ return true;
1200
1175
  }
1201
1176
 
1202
- 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);
1210
- }
1211
-
1212
- /* parse any trailing bytes in a varint: it's possible to append an arbitrary
1213
- number of 0x80's and not affect the value - a zero will terminate - and
1214
- anything else will overflow */
1215
- static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p,
1216
- const uint8_t* cur, const uint8_t* end) {
1217
- while (cur != end && *cur == 0x80) {
1218
- ++cur;
1177
+ // Set an invalid hpack index error if no error has been set. Returns result
1178
+ // unmodified.
1179
+ template <typename R>
1180
+ R InvalidHPackIndexError(uint32_t index, R result) {
1181
+ return input_->MaybeSetErrorAndReturn(
1182
+ [this, index] {
1183
+ return grpc_error_set_int(
1184
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1185
+ "Invalid HPACK index received"),
1186
+ GRPC_ERROR_INT_INDEX,
1187
+ static_cast<intptr_t>(index)),
1188
+ GRPC_ERROR_INT_SIZE,
1189
+ static_cast<intptr_t>(this->table_->num_entries()));
1190
+ },
1191
+ std::move(result));
1219
1192
  }
1220
1193
 
1221
- if (cur == end) {
1222
- p->state = parse_value5up;
1223
- return GRPC_ERROR_NONE;
1194
+ GPR_ATTRIBUTE_NOINLINE
1195
+ bool HandleMetadataSizeLimitExceeded(const HPackTable::Memento&) {
1196
+ gpr_log(GPR_DEBUG,
1197
+ "received initial metadata size exceeds limit (%" PRIu32
1198
+ " vs. %" PRIu32
1199
+ "). GRPC_ARG_MAX_METADATA_SIZE can be set to increase this limit.",
1200
+ *frame_length_, metadata_size_limit_);
1201
+ if (metadata_buffer_ != nullptr) metadata_buffer_->Clear();
1202
+ return input_->MaybeSetErrorAndReturn(
1203
+ [] {
1204
+ return grpc_error_set_int(
1205
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1206
+ "received initial metadata size exceeds limit"),
1207
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED);
1208
+ },
1209
+ false);
1224
1210
  }
1225
1211
 
1226
- if (*cur == 0) {
1227
- return parse_next(p, cur + 1, end);
1212
+ static void ReportMetadataParseError(absl::string_view key,
1213
+ absl::string_view error,
1214
+ absl::string_view value) {
1215
+ gpr_log(
1216
+ GPR_ERROR, "Error parsing metadata: %s",
1217
+ absl::StrCat("error=", error, " key=", key, " value=", value).c_str());
1228
1218
  }
1229
1219
 
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);
1238
- }
1239
-
1240
- /* 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) {
1243
- if (cur == end) {
1244
- p->state = parse_string_prefix;
1245
- return GRPC_ERROR_NONE;
1246
- }
1220
+ Input* const input_;
1221
+ grpc_metadata_batch* const metadata_buffer_;
1222
+ HPackTable* const table_;
1223
+ uint8_t* const dynamic_table_updates_allowed_;
1224
+ uint32_t* const frame_length_;
1225
+ const uint32_t metadata_size_limit_;
1226
+ const LogInfo log_info_;
1227
+ };
1247
1228
 
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);
1253
- } else {
1254
- return parse_next(p, cur + 1, end);
1229
+ Slice HPackParser::String::Take() {
1230
+ if (auto* p = absl::get_if<Slice>(&value_)) {
1231
+ return p->Copy();
1232
+ } else if (auto* p = absl::get_if<absl::Span<const uint8_t>>(&value_)) {
1233
+ return Slice::FromCopiedBuffer(*p);
1234
+ } else if (auto* p = absl::get_if<std::vector<uint8_t>>(&value_)) {
1235
+ return Slice::FromCopiedBuffer(*p);
1255
1236
  }
1237
+ GPR_UNREACHABLE_CODE(return Slice());
1256
1238
  }
1257
1239
 
1258
- /* 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) {
1261
- 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));
1268
- }
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);
1272
- }
1240
+ /* PUBLIC INTERFACE */
1273
1241
 
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;
1277
- uint32_t bits;
1278
- 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));
1282
- return GRPC_ERROR_NONE;
1283
- case BINARY_BEGIN:
1284
- if (cur == end) {
1285
- p->binary = BINARY_BEGIN;
1286
- return GRPC_ERROR_NONE;
1287
- }
1288
- if (*cur == 0) {
1289
- /* 'true-binary' case */
1290
- ++cur;
1291
- p->binary = NOT_BINARY;
1292
- GRPC_STATS_INC_HPACK_RECV_BINARY();
1293
- append_bytes(str, cur, static_cast<size_t>(end - cur));
1294
- return GRPC_ERROR_NONE;
1295
- }
1296
- GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64();
1297
- /* fallthrough */
1298
- b64_byte0:
1299
- case B64_BYTE0:
1300
- if (cur == end) {
1301
- p->binary = B64_BYTE0;
1302
- return GRPC_ERROR_NONE;
1303
- }
1304
- bits = inverse_base64[*cur];
1305
- ++cur;
1306
- if (bits == 255)
1307
- return parse_error(
1308
- p, cur, end,
1309
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1310
- else if (bits == 64)
1311
- goto b64_byte0;
1312
- p->base64_buffer = bits << 18;
1313
- /* fallthrough */
1314
- b64_byte1:
1315
- case B64_BYTE1:
1316
- if (cur == end) {
1317
- p->binary = B64_BYTE1;
1318
- return GRPC_ERROR_NONE;
1319
- }
1320
- bits = inverse_base64[*cur];
1321
- ++cur;
1322
- if (bits == 255)
1323
- return parse_error(
1324
- p, cur, end,
1325
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1326
- else if (bits == 64)
1327
- goto b64_byte1;
1328
- p->base64_buffer |= bits << 12;
1329
- /* fallthrough */
1330
- b64_byte2:
1331
- case B64_BYTE2:
1332
- if (cur == end) {
1333
- p->binary = B64_BYTE2;
1334
- return GRPC_ERROR_NONE;
1335
- }
1336
- bits = inverse_base64[*cur];
1337
- ++cur;
1338
- if (bits == 255)
1339
- return parse_error(
1340
- p, cur, end,
1341
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1342
- else if (bits == 64)
1343
- goto b64_byte2;
1344
- p->base64_buffer |= bits << 6;
1345
- /* fallthrough */
1346
- b64_byte3:
1347
- case B64_BYTE3:
1348
- if (cur == end) {
1349
- p->binary = B64_BYTE3;
1350
- return GRPC_ERROR_NONE;
1351
- }
1352
- bits = inverse_base64[*cur];
1353
- ++cur;
1354
- if (bits == 255)
1355
- return parse_error(
1356
- p, cur, end,
1357
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
1358
- else if (bits == 64)
1359
- goto b64_byte3;
1360
- p->base64_buffer |= bits;
1361
- bits = p->base64_buffer;
1362
- decoded[0] = static_cast<uint8_t>(bits >> 16);
1363
- decoded[1] = static_cast<uint8_t>(bits >> 8);
1364
- decoded[2] = static_cast<uint8_t>(bits);
1365
- append_bytes(str, decoded, 3);
1366
- goto b64_byte0;
1242
+ HPackParser::HPackParser() = default;
1243
+
1244
+ HPackParser::~HPackParser() = default;
1245
+
1246
+ void HPackParser::BeginFrame(grpc_metadata_batch* metadata_buffer,
1247
+ uint32_t metadata_size_limit, Boundary boundary,
1248
+ Priority priority, LogInfo log_info) {
1249
+ metadata_buffer_ = metadata_buffer;
1250
+ boundary_ = boundary;
1251
+ priority_ = priority;
1252
+ dynamic_table_updates_allowed_ = 2;
1253
+ frame_length_ = 0;
1254
+ metadata_size_limit_ = metadata_size_limit;
1255
+ log_info_ = log_info;
1256
+ }
1257
+
1258
+ grpc_error_handle HPackParser::Parse(const grpc_slice& slice, bool is_last) {
1259
+ if (GPR_UNLIKELY(!unparsed_bytes_.empty())) {
1260
+ std::vector<uint8_t> buffer = std::move(unparsed_bytes_);
1261
+ buffer.insert(buffer.end(), GRPC_SLICE_START_PTR(slice),
1262
+ GRPC_SLICE_END_PTR(slice));
1263
+ return ParseInput(
1264
+ Input(nullptr, buffer.data(), buffer.data() + buffer.size()), is_last);
1367
1265
  }
1368
- GPR_UNREACHABLE_CODE(return parse_error(
1369
- p, cur, end,
1370
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here")));
1266
+ return ParseInput(Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1267
+ GRPC_SLICE_END_PTR(slice)),
1268
+ is_last);
1371
1269
  }
1372
1270
 
1373
- static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1374
- const uint8_t* end) {
1375
- uint8_t decoded[2];
1376
- 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:
1380
- break;
1381
- case BINARY_BEGIN:
1382
- break;
1383
- case B64_BYTE0:
1384
- break;
1385
- case B64_BYTE1:
1386
- return parse_error(p, cur, end,
1387
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1388
- "illegal base64 encoding")); /* illegal encoding */
1389
- case B64_BYTE2:
1390
- bits = p->base64_buffer;
1391
- 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);
1398
- }
1399
- decoded[0] = static_cast<uint8_t>(bits >> 16);
1400
- append_bytes(str, decoded, 1);
1401
- break;
1402
- case B64_BYTE3:
1403
- bits = p->base64_buffer;
1404
- 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);
1411
- }
1412
- decoded[0] = static_cast<uint8_t>(bits >> 16);
1413
- decoded[1] = static_cast<uint8_t>(bits >> 8);
1414
- append_bytes(str, decoded, 2);
1415
- break;
1271
+ grpc_error_handle HPackParser::ParseInput(Input input, bool is_last) {
1272
+ if (ParseInputInner(&input)) {
1273
+ return GRPC_ERROR_NONE;
1416
1274
  }
1417
- return GRPC_ERROR_NONE;
1418
- }
1419
-
1420
- /* 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];
1424
- if (emit != -1) {
1425
- if (emit >= 0 && emit < 256) {
1426
- uint8_t c = static_cast<uint8_t>(emit);
1427
- grpc_error* err = append_string(p, &c, (&c) + 1);
1428
- if (err != GRPC_ERROR_NONE) return err;
1429
- } else {
1430
- assert(emit == 256);
1275
+ if (input.eof_error()) {
1276
+ if (GPR_UNLIKELY(is_last && is_boundary())) {
1277
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1278
+ "Incomplete header at the end of a header/continuation sequence");
1431
1279
  }
1432
- }
1433
- p->huff_state = next;
1434
- return GRPC_ERROR_NONE;
1435
- }
1436
-
1437
- /* 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) {
1440
- 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);
1445
- }
1446
- return GRPC_ERROR_NONE;
1447
- }
1448
-
1449
- /* decode some string bytes based on the current decoding mode
1450
- (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);
1455
- } else {
1456
- return append_string(p, cur, end);
1457
- }
1458
- }
1459
-
1460
- /* 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;
1464
- size_t given = static_cast<size_t>(end - cur);
1465
- 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);
1471
- } 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;
1280
+ unparsed_bytes_ = std::vector<uint8_t>(input.frontier(), input.end_ptr());
1477
1281
  return GRPC_ERROR_NONE;
1478
1282
  }
1283
+ return input.TakeError();
1479
1284
  }
1480
1285
 
1481
- /* 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) {
1489
- 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);
1496
- }
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) {
1506
- GRPC_STATS_INC_HPACK_RECV_HUFFMAN();
1507
- } else {
1508
- GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
1509
- }
1286
+ bool HPackParser::ParseInputInner(Input* input) {
1287
+ switch (priority_) {
1288
+ case Priority::None:
1510
1289
  break;
1511
- case BINARY_BEGIN:
1512
- /* stats incremented later: don't know true binary or not */
1513
- break;
1514
- default:
1515
- abort();
1290
+ case Priority::Included: {
1291
+ if (input->remaining() < 5) return input->UnexpectedEOF(false);
1292
+ input->Advance(5);
1293
+ input->UpdateFrontier();
1294
+ priority_ = Priority::None;
1295
+ }
1516
1296
  }
1517
- return parse_string(p, cur, end);
1518
- }
1519
-
1520
- /* 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);
1524
- }
1525
-
1526
- /* check if a key represents a binary header or not */
1527
-
1528
- static bool is_binary_literal_header(grpc_chttp2_hpack_parser* p) {
1529
- /* We know that either argument here is a reference counter slice.
1530
- * 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,
1532
- * which occurs in begin_parse_string() - where the refcount is set to
1533
- * p->current_slice_refcount, which is not null. */
1534
- 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);
1538
- }
1539
-
1540
- /* Cache the metadata for the given index during initial parsing. This avoids a
1541
- pointless recomputation of the metadata when finishing a header. We read the
1542
- 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;
1548
- #ifndef NDEBUG
1549
- p->precomputed_md_index = p->index;
1550
- #endif
1551
- }
1552
-
1553
- /* Determines if a metadata element key associated with the current parser index
1554
- is a binary indexed header during string parsing. We'll need to revisit this
1555
- metadata when we're done parsing, so we cache the metadata for this index
1556
- 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);
1560
- if (GPR_UNLIKELY(GRPC_MDISNULL(elem))) {
1561
- return on_invalid_hpack_idx(p);
1297
+ while (!input->end_of_stream()) {
1298
+ if (GPR_UNLIKELY(!Parser(input, metadata_buffer_, metadata_size_limit_,
1299
+ &table_, &dynamic_table_updates_allowed_,
1300
+ &frame_length_, log_info_)
1301
+ .Parse())) {
1302
+ return false;
1303
+ }
1304
+ input->UpdateFrontier();
1562
1305
  }
1563
- /* We know that GRPC_MDKEY(elem) points to a reference counted slice since:
1564
- * 1. elem was a result of grpc_chttp2_hptbl_lookup
1565
- * 2. An item in this table is either static (see entries with
1566
- * index < GRPC_CHTTP2_LAST_STATIC_ENTRY or added via
1567
- * grpc_chttp2_hptbl_add).
1568
- * 3. If added via grpc_chttp2_hptbl_add, the entry is either static or
1569
- * interned.
1570
- * 4. Both static and interned element slices have non-null refcounts. */
1571
- *is = grpc_is_refcounted_slice_binary_header(GRPC_MDKEY(elem));
1572
- set_precomputed_md_idx(p, elem);
1573
- return GRPC_ERROR_NONE;
1574
- }
1575
-
1576
- /* 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);
1582
- }
1583
-
1584
- static grpc_error* parse_value_string_with_indexed_key(
1585
- grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end) {
1586
- 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);
1590
- }
1591
-
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");
1602
- }
1603
-
1604
- /* PUBLIC INTERFACE */
1605
-
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;
1618
- /* Cached metadata for the current index the parser is handling. This is set
1619
- to 0 initially, invalidated when the index changes, and invalidated when it
1620
- is read (by get_precomputed_md_for_idx()). It is set during string parsing,
1621
- by set_precomputed_md_idx() - which is called by parse_value_string().
1622
- The goal here is to avoid recomputing the metadata for the index when
1623
- finishing with a header as well as the initial parse. */
1624
- p->md_for_index.payload = 0;
1625
- #ifndef NDEBUG
1626
- /* In debug mode, this ensures that the cached metadata we're reading is in
1627
- * fact correct for the index we are examining. */
1628
- p->precomputed_md_index = -1;
1629
- #endif
1630
- p->dynamic_table_update_allowed = 2;
1631
- p->last_error = GRPC_ERROR_NONE;
1306
+ return true;
1632
1307
  }
1633
1308
 
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;
1637
- }
1309
+ void HPackParser::FinishFrame() { metadata_buffer_ = nullptr; }
1638
1310
 
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);
1646
- }
1311
+ } // namespace grpc_core
1647
1312
 
1648
- grpc_error* grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser* p,
1649
- const grpc_slice& slice) {
1650
- /* max number of bytes to parse at a time... limits call stack depth on
1651
- * compilers without TCO */
1652
- #define MAX_PARSE_LENGTH 1024
1653
- p->current_slice_refcount = slice.refcount;
1654
- const uint8_t* start = GRPC_SLICE_START_PTR(slice);
1655
- const uint8_t* end = GRPC_SLICE_END_PTR(slice);
1656
- grpc_error* error = GRPC_ERROR_NONE;
1657
- while (start != end && error == GRPC_ERROR_NONE) {
1658
- const uint8_t* target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start);
1659
- error = p->state(p, start, target);
1660
- start = target;
1661
- }
1662
- p->current_slice_refcount = nullptr;
1663
- return error;
1664
- }
1313
+ // TODO(ctiller): this serves as an eviction notice for the remainder of this
1314
+ // file... it belongs elsewhere!
1665
1315
 
1666
1316
  typedef void (*maybe_complete_func_type)(grpc_chttp2_transport* t,
1667
1317
  grpc_chttp2_stream* s);
@@ -1669,7 +1319,7 @@ static const maybe_complete_func_type maybe_complete_funcs[] = {
1669
1319
  grpc_chttp2_maybe_complete_recv_initial_metadata,
1670
1320
  grpc_chttp2_maybe_complete_recv_trailing_metadata};
1671
1321
 
1672
- static void force_client_rst_stream(void* sp, grpc_error* /*error*/) {
1322
+ static void force_client_rst_stream(void* sp, grpc_error_handle /*error*/) {
1673
1323
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
1674
1324
  grpc_chttp2_transport* t = s->t;
1675
1325
  if (!s->write_closed) {
@@ -1681,63 +1331,35 @@ static void force_client_rst_stream(void* sp, grpc_error* /*error*/) {
1681
1331
  GRPC_CHTTP2_STREAM_UNREF(s, "final_rst");
1682
1332
  }
1683
1333
 
1684
- static void parse_stream_compression_md(grpc_chttp2_transport* /*t*/,
1685
- grpc_chttp2_stream* s,
1686
- grpc_metadata_batch* initial_metadata) {
1687
- if (initial_metadata->idx.named.content_encoding == nullptr ||
1688
- grpc_stream_compression_method_parse(
1689
- GRPC_MDVALUE(initial_metadata->idx.named.content_encoding->md), false,
1690
- &s->stream_decompression_method) == 0) {
1691
- s->stream_decompression_method =
1692
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS;
1693
- }
1694
-
1695
- if (s->stream_decompression_method !=
1696
- GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
1697
- s->stream_decompression_ctx = nullptr;
1698
- grpc_slice_buffer_init(&s->decompressed_data_buffer);
1699
- }
1700
- }
1701
-
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) {
1334
+ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
1335
+ grpc_chttp2_transport* t,
1336
+ grpc_chttp2_stream* s,
1337
+ const grpc_slice& slice,
1338
+ int is_last) {
1707
1339
  GPR_TIMER_SCOPE("grpc_chttp2_header_parser_parse", 0);
1708
- grpc_chttp2_hpack_parser* parser =
1709
- static_cast<grpc_chttp2_hpack_parser*>(hpack_parser);
1340
+ auto* parser = static_cast<grpc_core::HPackParser*>(hpack_parser);
1710
1341
  if (s != nullptr) {
1711
1342
  s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice);
1712
1343
  }
1713
- grpc_error* error = grpc_chttp2_hpack_parser_parse(parser, slice);
1344
+ grpc_error_handle error = parser->Parse(slice, is_last != 0);
1714
1345
  if (error != GRPC_ERROR_NONE) {
1715
1346
  return error;
1716
1347
  }
1717
1348
  if (is_last) {
1718
- if (parser->is_boundary && parser->state != parse_begin) {
1719
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1720
- "end of header frame not aligned with a hpack record boundary");
1721
- }
1722
1349
  /* need to check for null stream: this can occur if we receive an invalid
1723
1350
  stream id on a header */
1724
1351
  if (s != nullptr) {
1725
- if (parser->is_boundary) {
1726
- if (s->header_frames_received == GPR_ARRAY_SIZE(s->metadata_buffer)) {
1352
+ if (parser->is_boundary()) {
1353
+ if (s->header_frames_received == 2) {
1727
1354
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1728
1355
  "Too many trailer frames");
1729
1356
  }
1730
- /* Process stream compression md element if it exists */
1731
- if (s->header_frames_received ==
1732
- 0) { /* Only acts on initial metadata */
1733
- parse_stream_compression_md(t, s, &s->metadata_buffer[0].batch);
1734
- }
1735
1357
  s->published_metadata[s->header_frames_received] =
1736
1358
  GRPC_METADATA_PUBLISHED_FROM_WIRE;
1737
1359
  maybe_complete_funcs[s->header_frames_received](t, s);
1738
1360
  s->header_frames_received++;
1739
1361
  }
1740
- if (parser->is_eof) {
1362
+ if (parser->is_eof()) {
1741
1363
  if (t->is_client && !s->write_closed) {
1742
1364
  /* server eof ==> complete closure; we may need to forcefully close
1743
1365
  the stream. Wait until the combiner lock is ready to be released
@@ -1751,11 +1373,7 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
1751
1373
  grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE);
1752
1374
  }
1753
1375
  }
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;
1376
+ parser->FinishFrame();
1759
1377
  }
1760
1378
  return GRPC_ERROR_NONE;
1761
1379
  }