grpc 1.40.0 → 1.43.1

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 (1362) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +137 -82
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +6 -11
  7. data/include/grpc/event_engine/event_engine.h +164 -95
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  9. data/include/grpc/event_engine/memory_allocator.h +226 -0
  10. data/include/grpc/event_engine/memory_request.h +57 -0
  11. data/include/grpc/event_engine/port.h +1 -3
  12. data/include/grpc/fork.h +1 -1
  13. data/include/grpc/grpc.h +14 -4
  14. data/include/grpc/grpc_posix.h +5 -2
  15. data/include/grpc/grpc_security.h +294 -145
  16. data/include/grpc/grpc_security_constants.h +2 -14
  17. data/include/grpc/impl/codegen/atm.h +5 -3
  18. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  19. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  20. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  21. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  22. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  23. data/include/grpc/impl/codegen/compression_types.h +2 -0
  24. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  25. data/include/grpc/impl/codegen/fork.h +2 -0
  26. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  27. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  28. data/include/grpc/impl/codegen/grpc_types.h +4 -5
  29. data/include/grpc/impl/codegen/log.h +2 -0
  30. data/include/grpc/impl/codegen/port_platform.h +37 -22
  31. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  32. data/include/grpc/impl/codegen/slice.h +2 -0
  33. data/include/grpc/impl/codegen/status.h +2 -0
  34. data/include/grpc/impl/codegen/sync.h +8 -5
  35. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  36. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  37. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  38. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  39. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  40. data/include/grpc/slice.h +1 -1
  41. data/include/grpc/status.h +1 -1
  42. data/include/grpc/support/atm.h +1 -1
  43. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  44. data/include/grpc/support/atm_gcc_sync.h +1 -1
  45. data/include/grpc/support/atm_windows.h +1 -1
  46. data/include/grpc/support/log.h +1 -1
  47. data/include/grpc/support/port_platform.h +1 -1
  48. data/include/grpc/support/sync.h +1 -1
  49. data/include/grpc/support/sync_abseil.h +1 -1
  50. data/include/grpc/support/sync_custom.h +1 -1
  51. data/include/grpc/support/sync_generic.h +1 -1
  52. data/include/grpc/support/sync_posix.h +1 -1
  53. data/include/grpc/support/sync_windows.h +1 -1
  54. data/include/grpc/support/time.h +2 -2
  55. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  56. data/src/core/ext/filters/client_channel/backend_metric.cc +21 -24
  57. data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
  58. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  59. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  60. data/src/core/ext/filters/client_channel/channel_connectivity.cc +72 -91
  61. data/src/core/ext/filters/client_channel/client_channel.cc +256 -308
  62. data/src/core/ext/filters/client_channel/client_channel.h +80 -32
  63. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  64. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  65. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
  66. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  67. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +15 -15
  68. data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
  69. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  70. data/src/core/ext/filters/client_channel/connector.h +18 -18
  71. data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -5
  72. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  73. data/src/core/ext/filters/client_channel/health/health_check_client.cc +19 -17
  74. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -4
  75. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +20 -21
  76. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  77. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
  78. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  79. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +169 -92
  80. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  81. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  82. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
  83. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
  84. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +4 -4
  85. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -3
  86. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  87. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -33
  88. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +5 -6
  89. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  91. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +2 -2
  92. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +9 -9
  93. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +47 -99
  94. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  95. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +97 -41
  96. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +10 -9
  97. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +55 -109
  98. data/src/core/ext/filters/client_channel/lb_policy.h +96 -103
  99. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  100. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -7
  101. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  102. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +16 -18
  103. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -2
  104. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
  105. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -20
  106. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -58
  107. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  108. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +10 -5
  109. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -3
  110. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +11 -17
  111. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +283 -349
  112. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  113. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  114. data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
  115. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
  116. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +3 -4
  117. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  118. data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
  119. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  120. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  121. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  122. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  123. data/src/core/ext/filters/client_channel/subchannel.cc +89 -147
  124. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  125. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  126. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  127. data/src/core/ext/filters/client_idle/client_idle_filter.cc +29 -206
  128. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  129. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  130. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  131. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +28 -26
  132. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -14
  133. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  134. data/src/core/ext/filters/http/client/http_client_filter.cc +50 -68
  135. data/src/core/ext/filters/http/client_authority_filter.cc +16 -16
  136. data/src/core/ext/filters/http/http_filters_plugin.cc +51 -71
  137. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +19 -13
  138. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +8 -9
  139. data/src/core/ext/filters/http/server/http_server_filter.cc +72 -84
  140. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  141. data/src/core/ext/filters/message_size/message_size_filter.cc +28 -29
  142. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  143. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
  144. data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
  145. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
  146. data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → server_config_selector/server_config_selector_filter.h} +11 -6
  147. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  148. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  149. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  150. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  151. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  152. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  153. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -12
  154. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +26 -29
  155. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +9 -8
  156. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +33 -54
  157. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +66 -70
  158. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -4
  159. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -5
  160. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +11 -15
  161. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
  162. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  163. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  164. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +120 -134
  165. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -2
  166. data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
  167. data/src/core/ext/transport/chttp2/transport/context_list.h +3 -5
  168. data/src/core/ext/transport/chttp2/transport/flow_control.cc +62 -43
  169. data/src/core/ext/transport/chttp2/transport/flow_control.h +15 -9
  170. data/src/core/ext/transport/chttp2/transport/frame_data.cc +11 -11
  171. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -0
  172. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -4
  173. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
  174. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -5
  175. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -0
  176. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -8
  177. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -0
  178. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +38 -7
  179. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -0
  180. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +12 -7
  181. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -0
  182. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  183. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +378 -668
  184. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +272 -70
  185. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
  186. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  187. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
  188. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +792 -1041
  189. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +75 -177
  190. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -0
  191. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
  192. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
  193. data/src/core/ext/transport/chttp2/transport/hpack_utils.h +30 -0
  194. data/src/core/ext/transport/chttp2/transport/internal.h +14 -9
  195. data/src/core/ext/transport/chttp2/transport/parsing.cc +50 -203
  196. data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
  197. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  198. data/src/core/ext/transport/chttp2/transport/varint.cc +7 -3
  199. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  200. data/src/core/ext/transport/chttp2/transport/writing.cc +61 -50
  201. data/src/core/ext/transport/inproc/inproc_transport.cc +126 -119
  202. data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
  203. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +198 -166
  204. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +223 -89
  205. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +42 -1
  206. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +19 -1
  207. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -3
  208. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +18 -5
  209. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +108 -83
  210. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +153 -61
  211. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +189 -161
  212. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +173 -69
  213. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +36 -23
  214. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +33 -13
  215. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +279 -211
  216. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +370 -102
  217. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +17 -6
  218. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
  219. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +37 -26
  220. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +13 -5
  221. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +57 -40
  222. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +73 -29
  223. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +17 -6
  224. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +13 -5
  225. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +172 -126
  226. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +256 -85
  227. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +52 -37
  228. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +53 -21
  229. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +16 -5
  230. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +13 -5
  231. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +26 -14
  232. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +23 -9
  233. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +115 -91
  234. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +133 -53
  235. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +91 -72
  236. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +98 -33
  237. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +18 -7
  238. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +13 -5
  239. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +122 -93
  240. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +166 -57
  241. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +14 -3
  242. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +13 -5
  243. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +22 -10
  244. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +23 -9
  245. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +19 -8
  246. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +13 -5
  247. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +23 -12
  248. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +13 -5
  249. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +18 -7
  250. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +13 -5
  251. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +42 -28
  252. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +33 -13
  253. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +82 -32
  254. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +176 -17
  255. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +59 -44
  256. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +53 -21
  257. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +16 -5
  258. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +13 -5
  259. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +74 -58
  260. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +63 -25
  261. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +82 -65
  262. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +73 -29
  263. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +26 -15
  264. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +13 -5
  265. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +20 -8
  266. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +23 -9
  267. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +64 -46
  268. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +83 -33
  269. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +76 -45
  270. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +143 -43
  271. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +101 -77
  272. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +107 -29
  273. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +42 -29
  274. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +33 -13
  275. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +516 -446
  276. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +620 -267
  277. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +27 -14
  278. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +33 -13
  279. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +22 -10
  280. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +23 -9
  281. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +14 -3
  282. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +13 -5
  283. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +36 -21
  284. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +53 -21
  285. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +45 -32
  286. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +33 -13
  287. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +23 -12
  288. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +13 -5
  289. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +211 -183
  290. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +193 -77
  291. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +8 -1
  292. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +6 -4
  293. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +75 -45
  294. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +120 -34
  295. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +34 -21
  296. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -13
  297. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +88 -70
  298. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +110 -55
  299. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +13 -2
  300. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +13 -5
  301. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +13 -2
  302. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +13 -5
  303. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +76 -59
  304. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +63 -25
  305. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +13 -2
  306. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +13 -5
  307. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +13 -2
  308. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +13 -5
  309. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +26 -14
  310. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +23 -9
  311. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +13 -2
  312. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +13 -5
  313. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +13 -2
  314. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +13 -5
  315. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +62 -47
  316. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +53 -21
  317. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +27 -13
  318. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +43 -17
  319. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +24 -11
  320. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +27 -9
  321. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +18 -7
  322. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +13 -5
  323. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +17 -6
  324. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +13 -5
  325. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +16 -5
  326. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +13 -5
  327. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +28 -15
  328. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +33 -13
  329. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +26 -14
  330. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +23 -9
  331. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +21 -9
  332. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +23 -9
  333. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +31 -18
  334. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +33 -13
  335. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +39 -22
  336. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +73 -29
  337. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +42 -27
  338. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +53 -21
  339. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +8 -1
  340. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +3 -1
  341. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +18 -6
  342. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +23 -9
  343. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +23 -10
  344. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +33 -13
  345. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +16 -5
  346. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +13 -5
  347. data/src/core/ext/upb-generated/google/api/annotations.upb.c +21 -1
  348. data/src/core/ext/upb-generated/google/api/annotations.upb.h +8 -1
  349. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +117 -94
  350. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +113 -45
  351. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
  352. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
  353. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
  354. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
  355. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +123 -99
  356. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +123 -49
  357. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
  358. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
  359. data/src/core/ext/upb-generated/google/api/http.upb.c +36 -23
  360. data/src/core/ext/upb-generated/google/api/http.upb.h +33 -13
  361. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +15 -4
  362. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +13 -5
  363. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +248 -211
  364. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +273 -109
  365. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +15 -4
  366. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +13 -5
  367. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +13 -2
  368. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +13 -5
  369. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +38 -24
  370. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -13
  371. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +15 -4
  372. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +13 -5
  373. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +38 -19
  374. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +93 -37
  375. data/src/core/ext/upb-generated/google/rpc/status.upb.c +18 -7
  376. data/src/core/ext/upb-generated/google/rpc/status.upb.h +13 -5
  377. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +27 -15
  378. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +13 -5
  379. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +106 -84
  380. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +103 -41
  381. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +21 -9
  382. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +23 -9
  383. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +17 -5
  384. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +23 -9
  385. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +66 -48
  386. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +115 -63
  387. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +68 -0
  388. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +156 -0
  389. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -8
  390. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +58 -13
  391. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +28 -6
  392. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +18 -5
  393. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +20 -1
  394. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +8 -1
  395. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -4
  396. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +18 -5
  397. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -3
  398. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +18 -5
  399. data/src/core/ext/upb-generated/validate/validate.upb.c +321 -252
  400. data/src/core/ext/upb-generated/validate/validate.upb.h +251 -93
  401. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +103 -0
  402. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +199 -0
  403. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +15 -4
  404. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +13 -5
  405. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +26 -14
  406. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +23 -9
  407. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +21 -9
  408. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +13 -5
  409. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +20 -9
  410. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +13 -5
  411. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +29 -17
  412. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +23 -9
  413. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +20 -9
  414. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +13 -5
  415. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +71 -0
  416. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +132 -0
  417. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +44 -0
  418. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +85 -0
  419. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
  420. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
  421. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
  422. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
  423. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
  424. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
  425. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +407 -434
  426. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
  428. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +100 -138
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
  435. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
  436. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
  437. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +61 -77
  438. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
  439. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +61 -79
  440. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
  441. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
  442. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
  443. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
  444. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
  445. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
  446. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +87 -75
  447. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +10 -0
  448. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
  449. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
  450. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
  451. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
  452. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
  453. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
  454. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
  455. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +29 -39
  456. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
  457. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
  458. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +803 -894
  459. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
  460. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
  461. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
  462. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
  463. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
  464. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
  465. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +98 -143
  466. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
  467. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +132 -129
  468. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -0
  469. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
  470. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +180 -190
  471. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
  472. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
  473. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
  474. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
  475. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
  476. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
  477. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
  478. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
  479. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
  480. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
  481. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +16 -22
  482. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
  483. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
  484. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
  485. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
  486. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
  487. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
  488. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
  489. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
  490. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
  491. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
  492. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
  493. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
  494. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
  495. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
  496. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
  497. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
  498. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +105 -162
  499. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
  500. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
  501. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
  502. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
  503. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
  504. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
  505. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +7 -15
  506. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +21 -30
  507. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -5
  508. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +7 -10
  509. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +7 -11
  510. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
  511. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  512. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  513. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +15 -19
  514. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +27 -33
  515. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +18 -24
  516. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +19 -23
  517. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +35 -41
  518. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +21 -25
  519. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  520. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  521. data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
  522. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  523. data/src/core/ext/xds/xds_api.cc +1386 -1440
  524. data/src/core/ext/xds/xds_api.h +152 -115
  525. data/src/core/ext/xds/xds_bootstrap.cc +33 -55
  526. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  527. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  528. data/src/core/ext/xds/xds_certificate_provider.h +1 -2
  529. data/src/core/ext/xds/xds_channel_stack_modifier.cc +112 -0
  530. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  531. data/src/core/ext/xds/xds_client.cc +793 -437
  532. data/src/core/ext/xds/xds_client.h +83 -69
  533. data/src/core/ext/xds/xds_client_stats.cc +16 -15
  534. data/src/core/ext/xds/xds_client_stats.h +7 -7
  535. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -3
  536. data/src/core/ext/xds/xds_http_fault_filter.h +3 -2
  537. data/src/core/ext/xds/xds_http_filters.cc +1 -0
  538. data/src/core/ext/xds/xds_routing.cc +247 -0
  539. data/src/core/ext/xds/xds_routing.h +98 -0
  540. data/src/core/ext/xds/xds_server_config_fetcher.cc +976 -264
  541. data/src/core/lib/address_utils/parse_address.cc +6 -8
  542. data/src/core/lib/address_utils/sockaddr_utils.cc +2 -2
  543. data/src/core/lib/avl/avl.h +389 -88
  544. data/src/core/lib/backoff/backoff.cc +3 -3
  545. data/src/core/lib/channel/channel_args.cc +27 -8
  546. data/src/core/lib/channel/channel_args.h +11 -1
  547. data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
  548. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  549. data/src/core/lib/channel/channel_stack.cc +5 -3
  550. data/src/core/lib/channel/channel_stack_builder.cc +3 -15
  551. data/src/core/lib/channel/channel_stack_builder.h +0 -8
  552. data/src/core/lib/channel/channel_trace.cc +11 -10
  553. data/src/core/lib/channel/channel_trace.h +2 -1
  554. data/src/core/lib/channel/channelz.cc +43 -39
  555. data/src/core/lib/channel/channelz.h +29 -29
  556. data/src/core/lib/channel/channelz_registry.cc +8 -7
  557. data/src/core/lib/channel/channelz_registry.h +1 -1
  558. data/src/core/lib/channel/connected_channel.cc +2 -3
  559. data/src/core/lib/channel/connected_channel.h +1 -2
  560. data/src/core/lib/channel/handshaker.cc +2 -1
  561. data/src/core/lib/channel/handshaker.h +1 -2
  562. data/src/core/lib/channel/handshaker_factory.h +10 -2
  563. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  564. data/src/core/lib/channel/handshaker_registry.h +29 -12
  565. data/src/core/lib/channel/status_util.h +2 -2
  566. data/src/core/lib/compression/algorithm_metadata.h +1 -0
  567. data/src/core/lib/compression/compression.cc +2 -2
  568. data/src/core/lib/compression/compression_args.cc +15 -10
  569. data/src/core/lib/compression/compression_args.h +6 -4
  570. data/src/core/lib/compression/compression_internal.cc +4 -6
  571. data/src/core/lib/compression/compression_internal.h +1 -1
  572. data/src/core/lib/compression/message_compress.cc +2 -2
  573. data/src/core/lib/compression/stream_compression.cc +2 -1
  574. data/src/core/lib/compression/stream_compression.h +2 -1
  575. data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
  576. data/src/core/lib/compression/stream_compression_identity.cc +2 -1
  577. data/src/core/lib/config/core_configuration.cc +98 -0
  578. data/src/core/lib/config/core_configuration.h +157 -0
  579. data/src/core/lib/debug/stats.cc +1 -1
  580. data/src/core/lib/debug/stats.h +1 -0
  581. data/src/core/lib/debug/stats_data.cc +15 -14
  582. data/src/core/lib/debug/stats_data.h +1 -0
  583. data/src/core/lib/debug/trace.cc +1 -0
  584. data/src/core/lib/debug/trace.h +4 -3
  585. data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -2
  586. data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
  587. data/src/core/lib/event_engine/event_engine.cc +0 -13
  588. data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
  589. data/src/core/lib/event_engine/event_engine_factory.h +33 -0
  590. data/src/core/lib/event_engine/memory_allocator.cc +70 -0
  591. data/src/core/lib/event_engine/sockaddr.cc +3 -3
  592. data/src/core/lib/gpr/alloc.cc +4 -3
  593. data/src/core/lib/gpr/atm.cc +1 -1
  594. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  595. data/src/core/lib/gpr/env_linux.cc +1 -2
  596. data/src/core/lib/gpr/env_posix.cc +2 -3
  597. data/src/core/lib/gpr/log.cc +3 -3
  598. data/src/core/lib/gpr/log_android.cc +3 -2
  599. data/src/core/lib/gpr/log_linux.cc +7 -4
  600. data/src/core/lib/gpr/log_posix.cc +6 -3
  601. data/src/core/lib/gpr/string.cc +2 -2
  602. data/src/core/lib/gpr/string.h +2 -2
  603. data/src/core/lib/gpr/sync.cc +2 -2
  604. data/src/core/lib/gpr/sync_abseil.cc +7 -6
  605. data/src/core/lib/gpr/sync_posix.cc +3 -3
  606. data/src/core/lib/gpr/time.cc +3 -2
  607. data/src/core/lib/gpr/time_windows.cc +3 -2
  608. data/src/core/lib/gpr/tls.h +125 -40
  609. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  610. data/src/core/lib/gpr/useful.h +79 -32
  611. data/src/core/lib/gprpp/arena.cc +2 -1
  612. data/src/core/lib/gprpp/arena.h +15 -5
  613. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  614. data/src/core/lib/gprpp/bitset.h +188 -0
  615. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  616. data/src/core/lib/{transport/authority_override.cc → gprpp/construct_destruct.h} +16 -17
  617. data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
  618. data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
  619. data/src/core/lib/gprpp/fork.cc +14 -12
  620. data/src/core/lib/gprpp/fork.h +4 -4
  621. data/src/core/lib/gprpp/global_config.h +1 -2
  622. data/src/core/lib/gprpp/global_config_env.cc +14 -14
  623. data/src/core/lib/gprpp/global_config_env.h +2 -2
  624. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  625. data/src/core/lib/gprpp/manual_constructor.h +10 -8
  626. data/src/core/lib/gprpp/memory.h +9 -3
  627. data/src/core/lib/gprpp/mpscq.cc +7 -7
  628. data/src/core/lib/gprpp/mpscq.h +6 -5
  629. data/src/core/lib/gprpp/orphanable.h +4 -4
  630. data/src/core/lib/gprpp/ref_counted.h +19 -19
  631. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
  632. data/src/core/lib/gprpp/status_helper.cc +27 -7
  633. data/src/core/lib/gprpp/status_helper.h +13 -2
  634. data/src/core/lib/gprpp/sync.h +3 -1
  635. data/src/core/lib/gprpp/table.h +423 -0
  636. data/src/core/lib/gprpp/thd_posix.cc +5 -5
  637. data/src/core/lib/gprpp/thd_windows.cc +4 -11
  638. data/src/core/lib/gprpp/time_util.cc +2 -2
  639. data/src/core/lib/gprpp/time_util.h +2 -2
  640. data/src/core/lib/http/format_request.cc +1 -0
  641. data/src/core/lib/http/format_request.h +1 -0
  642. data/src/core/lib/http/httpcli.cc +219 -197
  643. data/src/core/lib/http/httpcli.h +14 -9
  644. data/src/core/lib/http/httpcli_security_connector.cc +5 -8
  645. data/src/core/lib/http/parser.cc +2 -2
  646. data/src/core/lib/http/parser.h +1 -0
  647. data/src/core/lib/iomgr/buffer_list.cc +11 -10
  648. data/src/core/lib/iomgr/buffer_list.h +14 -15
  649. data/src/core/lib/iomgr/call_combiner.cc +30 -12
  650. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  651. data/src/core/lib/iomgr/combiner.cc +9 -23
  652. data/src/core/lib/iomgr/combiner.h +1 -0
  653. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  654. data/src/core/lib/iomgr/endpoint.cc +0 -4
  655. data/src/core/lib/iomgr/endpoint.h +1 -4
  656. data/src/core/lib/iomgr/endpoint_cfstream.cc +15 -42
  657. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  658. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  659. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +1 -2
  660. data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -9
  661. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  662. data/src/core/lib/iomgr/error.cc +113 -52
  663. data/src/core/lib/iomgr/error.h +73 -18
  664. data/src/core/lib/iomgr/error_cfstream.cc +7 -2
  665. data/src/core/lib/iomgr/error_internal.h +1 -0
  666. data/src/core/lib/iomgr/ev_epoll1_linux.cc +17 -24
  667. data/src/core/lib/iomgr/ev_epollex_linux.cc +22 -29
  668. data/src/core/lib/iomgr/ev_poll_posix.cc +42 -45
  669. data/src/core/lib/iomgr/ev_posix.cc +1 -2
  670. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  671. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  672. data/src/core/lib/iomgr/event_engine/endpoint.cc +7 -27
  673. data/src/core/lib/iomgr/event_engine/endpoint.h +1 -2
  674. data/src/core/lib/iomgr/event_engine/iomgr.cc +7 -28
  675. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  676. data/src/core/lib/iomgr/event_engine/resolver.cc +14 -9
  677. data/src/core/lib/iomgr/event_engine/tcp.cc +66 -34
  678. data/src/core/lib/iomgr/event_engine/timer.cc +10 -4
  679. data/src/core/lib/iomgr/exec_ctx.cc +4 -13
  680. data/src/core/lib/iomgr/exec_ctx.h +22 -30
  681. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  682. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  683. data/src/core/lib/iomgr/executor/threadpool.cc +2 -2
  684. data/src/core/lib/iomgr/executor/threadpool.h +2 -1
  685. data/src/core/lib/iomgr/executor.cc +20 -38
  686. data/src/core/lib/iomgr/executor.h +1 -1
  687. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  688. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  689. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  690. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  691. data/src/core/lib/iomgr/iomgr.cc +3 -1
  692. data/src/core/lib/iomgr/iomgr.h +2 -2
  693. data/src/core/lib/iomgr/iomgr_custom.cc +2 -2
  694. data/src/core/lib/iomgr/iomgr_custom.h +2 -2
  695. data/src/core/lib/iomgr/iomgr_internal.cc +6 -10
  696. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  697. data/src/core/lib/iomgr/iomgr_windows.cc +1 -2
  698. data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
  699. data/src/core/lib/iomgr/load_file.cc +2 -2
  700. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  701. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  702. data/src/core/lib/iomgr/pollset_custom.cc +4 -5
  703. data/src/core/lib/iomgr/pollset_custom.h +3 -3
  704. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -2
  705. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  706. data/src/core/lib/iomgr/port.h +0 -5
  707. data/src/core/lib/iomgr/python_util.h +1 -0
  708. data/src/core/lib/iomgr/resolve_address.cc +2 -1
  709. data/src/core/lib/iomgr/resolve_address.h +0 -4
  710. data/src/core/lib/iomgr/resolve_address_custom.cc +4 -4
  711. data/src/core/lib/iomgr/resolve_address_custom.h +0 -1
  712. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -11
  713. data/src/core/lib/iomgr/resolve_address_windows.cc +6 -8
  714. data/src/core/lib/iomgr/sockaddr.h +1 -1
  715. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  716. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  717. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  718. data/src/core/lib/iomgr/socket_mutator.h +2 -2
  719. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -5
  720. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  721. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  722. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  723. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  724. data/src/core/lib/iomgr/tcp_client.h +2 -0
  725. data/src/core/lib/iomgr/tcp_client_cfstream.cc +7 -23
  726. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -20
  727. data/src/core/lib/iomgr/tcp_client_posix.cc +14 -24
  728. data/src/core/lib/iomgr/tcp_client_posix.h +3 -1
  729. data/src/core/lib/iomgr/tcp_client_windows.cc +7 -9
  730. data/src/core/lib/iomgr/tcp_custom.cc +12 -51
  731. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  732. data/src/core/lib/iomgr/tcp_posix.cc +51 -87
  733. data/src/core/lib/iomgr/tcp_posix.h +9 -12
  734. data/src/core/lib/iomgr/tcp_server.h +4 -3
  735. data/src/core/lib/iomgr/tcp_server_custom.cc +7 -34
  736. data/src/core/lib/iomgr/tcp_server_posix.cc +15 -13
  737. data/src/core/lib/iomgr/tcp_server_utils_posix.h +21 -17
  738. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -2
  739. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +3 -4
  740. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  741. data/src/core/lib/iomgr/tcp_server_windows.cc +6 -10
  742. data/src/core/lib/iomgr/tcp_windows.cc +5 -29
  743. data/src/core/lib/iomgr/tcp_windows.h +1 -1
  744. data/src/core/lib/iomgr/timer.cc +1 -0
  745. data/src/core/lib/iomgr/timer.h +1 -2
  746. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  747. data/src/core/lib/iomgr/timer_generic.cc +21 -51
  748. data/src/core/lib/iomgr/timer_generic.h +1 -0
  749. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  750. data/src/core/lib/iomgr/unix_sockets_posix.cc +4 -6
  751. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  752. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
  753. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
  754. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
  755. data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -0
  756. data/src/core/lib/iomgr/work_serializer.cc +115 -44
  757. data/src/core/lib/iomgr/work_serializer.h +17 -5
  758. data/src/core/lib/json/json_reader.cc +92 -52
  759. data/src/core/lib/json/json_util.cc +69 -1
  760. data/src/core/lib/json/json_util.h +65 -115
  761. data/src/core/lib/json/json_writer.cc +0 -3
  762. data/src/core/lib/matchers/matchers.h +0 -1
  763. data/src/core/lib/profiling/basic_timers.cc +8 -6
  764. data/src/core/lib/profiling/stap_timers.cc +2 -2
  765. data/src/core/lib/promise/activity.cc +115 -0
  766. data/src/core/lib/promise/activity.h +499 -0
  767. data/src/core/lib/promise/context.h +86 -0
  768. data/src/core/lib/promise/detail/basic_seq.h +407 -0
  769. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  770. data/src/core/lib/promise/detail/promise_like.h +85 -0
  771. data/src/core/lib/promise/detail/status.h +44 -0
  772. data/src/core/lib/promise/detail/switch.h +1455 -0
  773. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  774. data/src/core/lib/promise/loop.h +108 -0
  775. data/src/core/lib/promise/map.h +88 -0
  776. data/src/core/lib/promise/poll.h +60 -0
  777. data/src/core/lib/promise/race.h +84 -0
  778. data/src/core/lib/promise/seq.h +71 -0
  779. data/src/core/lib/resource_quota/api.cc +108 -0
  780. data/src/core/lib/resource_quota/api.h +41 -0
  781. data/src/core/lib/resource_quota/memory_quota.cc +454 -0
  782. data/src/core/lib/resource_quota/memory_quota.h +421 -0
  783. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  784. data/src/core/lib/resource_quota/resource_quota.h +58 -0
  785. data/src/core/lib/{transport/authority_override.h → resource_quota/thread_quota.cc} +22 -16
  786. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  787. data/src/core/lib/{iomgr/event_engine/iomgr.h → resource_quota/trace.cc} +4 -9
  788. data/src/core/lib/resource_quota/trace.h +24 -0
  789. data/src/core/lib/security/authorization/authorization_policy_provider.h +5 -4
  790. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  791. data/src/core/lib/security/authorization/evaluate_args.cc +22 -24
  792. data/src/core/lib/security/authorization/evaluate_args.h +2 -1
  793. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +173 -0
  794. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
  795. data/src/core/lib/security/context/security_context.cc +11 -8
  796. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  797. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  798. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  799. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -4
  800. data/src/core/lib/security/credentials/credentials.cc +10 -8
  801. data/src/core/lib/security/credentials/credentials.h +7 -2
  802. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
  803. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +24 -38
  804. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -2
  805. data/src/core/lib/security/credentials/external/aws_request_signer.cc +3 -3
  806. data/src/core/lib/security/credentials/external/external_account_credentials.cc +69 -43
  807. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  808. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +5 -8
  809. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  810. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +60 -10
  811. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -1
  812. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  813. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  814. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +31 -14
  815. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
  816. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +9 -17
  817. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
  818. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -29
  819. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -0
  820. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -6
  821. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +4 -4
  822. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -1
  823. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -2
  824. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +10 -6
  825. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -13
  826. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +13 -12
  827. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
  828. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
  829. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
  830. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +21 -84
  831. data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
  832. data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
  833. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
  834. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  835. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -12
  836. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  837. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
  838. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  839. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +4 -5
  840. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
  841. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  842. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  843. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -7
  844. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  845. data/src/core/lib/security/security_connector/ssl_utils.cc +13 -6
  846. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  847. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +345 -200
  848. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -43
  849. data/src/core/lib/security/transport/auth_filters.h +1 -0
  850. data/src/core/lib/security/transport/client_auth_filter.cc +9 -11
  851. data/src/core/lib/security/transport/secure_endpoint.cc +4 -14
  852. data/src/core/lib/security/transport/secure_endpoint.h +1 -0
  853. data/src/core/lib/security/transport/security_handshaker.cc +80 -49
  854. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  855. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  856. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  857. data/src/core/lib/security/util/json_util.cc +6 -8
  858. data/src/core/lib/slice/percent_encoding.cc +84 -97
  859. data/src/core/lib/slice/percent_encoding.h +23 -28
  860. data/src/core/lib/slice/slice.cc +9 -26
  861. data/src/core/lib/slice/slice.h +341 -0
  862. data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
  863. data/src/core/lib/slice/slice_buffer.cc +10 -7
  864. data/src/core/lib/slice/slice_intern.cc +11 -17
  865. data/src/core/lib/slice/slice_internal.h +3 -246
  866. data/src/core/lib/slice/slice_refcount.cc +17 -0
  867. data/src/core/lib/slice/slice_refcount.h +125 -0
  868. data/src/core/lib/slice/slice_refcount_base.h +181 -0
  869. data/src/core/lib/slice/slice_split.cc +100 -0
  870. data/src/core/lib/slice/slice_split.h +40 -0
  871. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  872. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  873. data/src/core/lib/slice/static_slice.cc +377 -0
  874. data/src/core/lib/slice/static_slice.h +300 -0
  875. data/src/core/lib/surface/api_trace.cc +2 -1
  876. data/src/core/lib/surface/api_trace.h +1 -0
  877. data/src/core/lib/surface/builtins.cc +49 -0
  878. data/src/core/lib/surface/builtins.h +26 -0
  879. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  880. data/src/core/lib/surface/call.cc +180 -170
  881. data/src/core/lib/surface/call.h +3 -9
  882. data/src/core/lib/surface/call_details.cc +2 -2
  883. data/src/core/lib/surface/call_log_batch.cc +2 -2
  884. data/src/core/lib/surface/channel.cc +20 -45
  885. data/src/core/lib/surface/channel.h +6 -13
  886. data/src/core/lib/surface/channel_init.cc +23 -76
  887. data/src/core/lib/surface/channel_init.h +52 -44
  888. data/src/core/lib/surface/channel_ping.cc +1 -2
  889. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  890. data/src/core/lib/surface/completion_queue.cc +60 -69
  891. data/src/core/lib/surface/completion_queue_factory.cc +2 -1
  892. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  893. data/src/core/lib/surface/event_string.cc +1 -0
  894. data/src/core/lib/surface/init.cc +4 -49
  895. data/src/core/lib/surface/init.h +0 -1
  896. data/src/core/lib/surface/init_secure.cc +36 -14
  897. data/src/core/lib/surface/lame_client.cc +46 -31
  898. data/src/core/lib/surface/lame_client.h +1 -1
  899. data/src/core/lib/surface/metadata_array.cc +2 -2
  900. data/src/core/lib/surface/server.cc +57 -65
  901. data/src/core/lib/surface/server.h +34 -30
  902. data/src/core/lib/surface/validate_metadata.cc +49 -18
  903. data/src/core/lib/surface/version.cc +2 -2
  904. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  905. data/src/core/lib/transport/byte_stream.cc +4 -0
  906. data/src/core/lib/transport/byte_stream.h +1 -0
  907. data/src/core/lib/transport/connectivity_state.cc +8 -5
  908. data/src/core/lib/transport/connectivity_state.h +2 -2
  909. data/src/core/lib/transport/error_utils.cc +43 -17
  910. data/src/core/lib/transport/error_utils.h +1 -1
  911. data/src/core/lib/transport/metadata.cc +41 -20
  912. data/src/core/lib/transport/metadata.h +19 -16
  913. data/src/core/lib/transport/metadata_batch.cc +40 -371
  914. data/src/core/lib/transport/metadata_batch.h +986 -69
  915. data/src/core/lib/transport/parsed_metadata.cc +35 -0
  916. data/src/core/lib/transport/parsed_metadata.h +382 -0
  917. data/src/core/lib/transport/pid_controller.cc +4 -4
  918. data/src/core/lib/transport/static_metadata.cc +632 -849
  919. data/src/core/lib/transport/static_metadata.h +115 -397
  920. data/src/core/lib/transport/status_metadata.cc +1 -0
  921. data/src/core/lib/transport/transport.cc +8 -31
  922. data/src/core/lib/transport/transport.h +0 -1
  923. data/src/core/lib/transport/transport_op_string.cc +40 -20
  924. data/src/core/lib/uri/uri_parser.cc +19 -19
  925. data/src/core/lib/uri/uri_parser.h +2 -0
  926. data/src/core/plugin_registry/grpc_plugin_registry.cc +78 -41
  927. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  928. data/src/core/tsi/alts/crypt/gsec.h +2 -3
  929. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  930. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  931. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +4 -5
  932. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  933. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  934. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  935. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  936. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  937. data/src/core/tsi/fake_transport_security.cc +15 -7
  938. data/src/core/tsi/local_transport_security.cc +43 -80
  939. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -53
  940. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  941. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  942. data/src/core/tsi/ssl_transport_security.cc +51 -12
  943. data/src/core/tsi/ssl_transport_security.h +4 -1
  944. data/src/core/tsi/transport_security.cc +15 -3
  945. data/src/core/tsi/transport_security.h +16 -1
  946. data/src/core/tsi/transport_security_grpc.h +1 -0
  947. data/src/core/tsi/transport_security_interface.h +26 -0
  948. data/src/ruby/ext/grpc/extconf.rb +12 -9
  949. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  950. data/src/ruby/ext/grpc/rb_call.c +5 -5
  951. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  952. data/src/ruby/ext/grpc/rb_channel.c +10 -8
  953. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  954. data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
  955. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
  956. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  957. data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
  958. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  959. data/src/ruby/ext/grpc/rb_grpc.c +5 -4
  960. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  961. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -10
  962. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +15 -15
  963. data/src/ruby/ext/grpc/rb_server.c +6 -5
  964. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  965. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  966. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
  967. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
  968. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
  969. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
  970. data/src/ruby/lib/grpc/version.rb +1 -1
  971. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  972. data/src/ruby/spec/client_server_spec.rb +1 -1
  973. data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
  974. data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
  975. data/third_party/abseil-cpp/absl/base/config.h +67 -37
  976. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
  977. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
  978. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
  979. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
  980. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  981. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +15 -10
  982. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
  983. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  984. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  985. data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
  986. data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
  987. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  988. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
  989. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
  990. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
  991. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  992. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
  993. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
  994. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
  995. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  996. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  997. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
  998. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  999. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1000. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1001. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
  1002. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1003. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1004. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1005. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
  1006. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1007. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1008. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1009. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
  1010. data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
  1011. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
  1012. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
  1013. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1014. data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
  1015. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
  1016. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1017. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1018. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1019. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
  1020. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
  1021. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1022. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
  1023. data/third_party/abseil-cpp/absl/status/status.cc +9 -17
  1024. data/third_party/abseil-cpp/absl/status/status.h +19 -15
  1025. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1026. data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
  1027. data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
  1028. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1029. data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
  1030. data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
  1031. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
  1032. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
  1033. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
  1034. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1035. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1036. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1037. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1038. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1039. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1040. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1041. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1042. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
  1043. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
  1044. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
  1045. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
  1046. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1047. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1048. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1049. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1050. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1051. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1052. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1053. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1054. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1055. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1056. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
  1057. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
  1058. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
  1059. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1060. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1061. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
  1062. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
  1063. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
  1064. data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
  1065. data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
  1066. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1067. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1068. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1069. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1070. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1071. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1072. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1073. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1074. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
  1075. data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
  1076. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1077. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1078. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1079. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1080. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1081. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1082. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
  1083. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1084. data/third_party/abseil-cpp/absl/time/time.h +67 -36
  1085. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1086. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1087. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1088. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1089. data/third_party/boringssl-with-bazel/err_data.c +685 -673
  1090. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +67 -54
  1091. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
  1092. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1093. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1094. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1095. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +55 -37
  1096. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1097. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
  1098. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1099. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1100. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  1101. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
  1102. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1103. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
  1104. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1105. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1106. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1107. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1108. data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +86 -1
  1109. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +57 -281
  1110. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +290 -199
  1111. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +9 -9
  1112. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
  1113. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
  1114. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
  1115. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1116. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
  1117. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1118. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1119. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1120. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1121. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1122. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1123. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  1124. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
  1125. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1126. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
  1127. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1128. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
  1129. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1130. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
  1131. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1132. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1133. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
  1134. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1135. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
  1136. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1137. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
  1138. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1139. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1140. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  1141. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
  1142. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  1143. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1144. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +5 -9
  1145. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -2
  1146. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +4 -6
  1147. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
  1148. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
  1149. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
  1150. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  1151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  1152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  1153. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +34 -0
  1154. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1155. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1156. data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -2
  1157. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1158. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1159. data/third_party/boringssl-with-bazel/src/crypto/mem.c +32 -9
  1160. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +7 -3
  1161. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1162. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1163. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1164. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1165. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1166. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1167. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
  1168. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
  1169. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1170. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +1 -1
  1171. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1172. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1173. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1174. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1175. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1176. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1177. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1178. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  1179. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1180. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1181. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1182. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +233 -4
  1183. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1184. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
  1185. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  1186. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  1187. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
  1188. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +6 -23
  1189. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
  1190. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1191. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  1192. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
  1193. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -54
  1194. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
  1195. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +1 -0
  1196. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  1197. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +1 -3
  1198. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
  1199. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -11
  1200. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1201. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  1202. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
  1203. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +232 -11
  1204. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1205. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
  1206. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1207. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1208. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1209. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1210. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
  1211. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +18 -8
  1212. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
  1213. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
  1214. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -7
  1215. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1216. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
  1217. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +23 -4
  1218. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1219. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1220. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  1221. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  1222. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +76 -31
  1223. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1504 -561
  1224. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -12
  1225. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -6
  1226. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  1227. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1228. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
  1229. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
  1230. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1231. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
  1232. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +3 -0
  1233. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
  1234. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1235. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
  1236. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +35 -55
  1237. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1238. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +25 -0
  1239. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1240. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1241. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1242. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +5 -4
  1243. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  1244. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +15 -14
  1245. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1246. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +29 -28
  1247. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
  1248. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +87 -24
  1249. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
  1250. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +725 -189
  1251. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
  1252. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -16
  1253. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -16
  1254. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +310 -359
  1255. data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +110 -159
  1256. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -13
  1257. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -142
  1258. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +106 -99
  1259. data/third_party/boringssl-with-bazel/src/ssl/internal.h +90 -51
  1260. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +1 -2
  1261. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  1262. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +11 -5
  1263. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -51
  1264. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +121 -65
  1265. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
  1266. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
  1267. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1268. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
  1269. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +210 -212
  1270. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
  1271. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +48 -34
  1272. data/third_party/re2/re2/compile.cc +91 -109
  1273. data/third_party/re2/re2/dfa.cc +27 -39
  1274. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1275. data/third_party/re2/re2/filtered_re2.h +10 -5
  1276. data/third_party/re2/re2/nfa.cc +1 -1
  1277. data/third_party/re2/re2/parse.cc +42 -23
  1278. data/third_party/re2/re2/perl_groups.cc +34 -34
  1279. data/third_party/re2/re2/prefilter.cc +3 -2
  1280. data/third_party/re2/re2/prog.cc +182 -4
  1281. data/third_party/re2/re2/prog.h +28 -9
  1282. data/third_party/re2/re2/re2.cc +87 -118
  1283. data/third_party/re2/re2/re2.h +156 -141
  1284. data/third_party/re2/re2/regexp.cc +12 -5
  1285. data/third_party/re2/re2/regexp.h +8 -2
  1286. data/third_party/re2/re2/set.cc +31 -9
  1287. data/third_party/re2/re2/set.h +9 -4
  1288. data/third_party/re2/re2/simplify.cc +11 -3
  1289. data/third_party/re2/re2/tostring.cc +1 -1
  1290. data/third_party/re2/re2/walker-inl.h +1 -1
  1291. data/third_party/re2/util/mutex.h +2 -2
  1292. data/third_party/re2/util/pcre.h +3 -3
  1293. data/third_party/upb/upb/decode.c +383 -183
  1294. data/third_party/upb/upb/decode.h +32 -4
  1295. data/third_party/upb/upb/decode_fast.c +513 -500
  1296. data/third_party/upb/upb/decode_fast.h +27 -0
  1297. data/third_party/upb/upb/{decode.int.h → decode_internal.h} +39 -8
  1298. data/third_party/upb/upb/def.c +489 -254
  1299. data/third_party/upb/upb/def.h +86 -33
  1300. data/third_party/upb/upb/def.hpp +46 -4
  1301. data/third_party/upb/upb/encode.c +137 -44
  1302. data/third_party/upb/upb/encode.h +29 -2
  1303. data/third_party/upb/upb/msg.c +182 -28
  1304. data/third_party/upb/upb/msg.h +75 -580
  1305. data/third_party/upb/upb/msg_internal.h +769 -0
  1306. data/third_party/upb/upb/port_def.inc +85 -24
  1307. data/third_party/upb/upb/port_undef.inc +38 -1
  1308. data/third_party/upb/upb/reflection.c +126 -94
  1309. data/third_party/upb/upb/reflection.h +42 -10
  1310. data/third_party/upb/upb/reflection.hpp +37 -0
  1311. data/third_party/upb/upb/table.c +211 -86
  1312. data/third_party/upb/upb/{table.int.h → table_internal.h} +56 -180
  1313. data/third_party/upb/upb/text_encode.c +35 -7
  1314. data/third_party/upb/upb/text_encode.h +26 -0
  1315. data/third_party/upb/upb/upb.c +67 -8
  1316. data/third_party/upb/upb/upb.h +36 -6
  1317. data/third_party/upb/upb/upb.hpp +24 -0
  1318. data/third_party/upb/upb/upb_internal.h +58 -0
  1319. metadata +182 -107
  1320. data/include/grpc/event_engine/slice_allocator.h +0 -66
  1321. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  1322. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  1323. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  1324. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  1325. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  1326. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  1327. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  1328. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  1329. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -66
  1330. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  1331. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -243
  1332. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  1333. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  1334. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  1335. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  1336. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
  1337. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
  1338. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
  1339. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  1340. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  1341. data/src/core/lib/avl/avl.cc +0 -306
  1342. data/src/core/lib/gpr/tls_gcc.h +0 -52
  1343. data/src/core/lib/gpr/tls_msvc.h +0 -54
  1344. data/src/core/lib/gpr/tls_pthread.h +0 -56
  1345. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  1346. data/src/core/lib/gprpp/atomic.h +0 -104
  1347. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  1348. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  1349. data/src/core/lib/iomgr/pollset_uv.cc +0 -95
  1350. data/src/core/lib/iomgr/pollset_uv.h +0 -36
  1351. data/src/core/lib/iomgr/resource_quota.cc +0 -1019
  1352. data/src/core/lib/iomgr/resource_quota.h +0 -177
  1353. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  1354. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  1355. data/src/core/lib/iomgr/tcp_uv.cc +0 -421
  1356. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  1357. data/src/core/lib/iomgr/udp_server.cc +0 -748
  1358. data/src/core/lib/iomgr/udp_server.h +0 -103
  1359. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  1360. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  1361. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  1362. data/third_party/upb/upb/upb.int.h +0 -29
@@ -1,3 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2009-2021, Google LLC
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ * * Neither the name of Google LLC nor the
13
+ * names of its contributors may be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ * DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
20
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
1
27
 
2
28
  #include "upb/def.h"
3
29
 
@@ -8,6 +34,9 @@
8
34
  #include <string.h>
9
35
 
10
36
  #include "google/protobuf/descriptor.upb.h"
37
+ #include "upb/reflection.h"
38
+
39
+ /* Must be last. */
11
40
  #include "upb/port_def.inc"
12
41
 
13
42
  typedef struct {
@@ -37,7 +66,6 @@ struct upb_fielddef {
37
66
  uint32_t number_;
38
67
  uint16_t index_;
39
68
  uint16_t layout_index;
40
- uint32_t selector_base; /* Used to index into a upb::Handlers table. */
41
69
  bool is_extension_;
42
70
  bool lazy_;
43
71
  bool packed_;
@@ -46,28 +74,34 @@ struct upb_fielddef {
46
74
  upb_label_t label_;
47
75
  };
48
76
 
77
+ struct upb_extrange {
78
+ const google_protobuf_ExtensionRangeOptions *opts;
79
+ int32_t start;
80
+ int32_t end;
81
+ };
82
+
49
83
  struct upb_msgdef {
50
84
  const upb_msglayout *layout;
51
85
  const upb_filedef *file;
52
86
  const char *full_name;
53
- uint32_t selector_count;
54
- uint32_t submsg_field_count;
55
87
 
56
88
  /* Tables for looking up fields by number and name. */
57
89
  upb_inttable itof;
58
90
  upb_strtable ntof;
59
91
 
92
+ const upb_extrange *ext_ranges;
60
93
  const upb_fielddef *fields;
61
94
  const upb_oneofdef *oneofs;
62
95
  int field_count;
63
96
  int oneof_count;
64
97
  int real_oneof_count;
98
+ int ext_range_count;
65
99
 
66
100
  /* Is this a map-entry message? */
67
101
  bool map_entry;
102
+ bool is_message_set;
68
103
  upb_wellknowntype_t well_known_type;
69
-
70
- /* TODO(haberman): proper extension ranges (there can be multiple). */
104
+ const upb_fielddef *message_set_ext;
71
105
  };
72
106
 
73
107
  struct upb_enumdef {
@@ -75,9 +109,17 @@ struct upb_enumdef {
75
109
  const char *full_name;
76
110
  upb_strtable ntoi;
77
111
  upb_inttable iton;
112
+ const upb_enumvaldef *values;
113
+ int value_count;
78
114
  int32_t defaultval;
79
115
  };
80
116
 
117
+ struct upb_enumvaldef {
118
+ const upb_enumdef *enum_;
119
+ const char *full_name;
120
+ int32_t number;
121
+ };
122
+
81
123
  struct upb_oneofdef {
82
124
  const upb_msgdef *parent;
83
125
  const char *full_name;
@@ -98,6 +140,7 @@ struct upb_filedef {
98
140
  const upb_msgdef *msgs;
99
141
  const upb_enumdef *enums;
100
142
  const upb_fielddef *exts;
143
+ const upb_msglayout_ext **ext_layouts;
101
144
  const upb_symtab *symtab;
102
145
 
103
146
  int dep_count;
@@ -111,29 +154,43 @@ struct upb_symtab {
111
154
  upb_arena *arena;
112
155
  upb_strtable syms; /* full_name -> packed def ptr */
113
156
  upb_strtable files; /* file_name -> upb_filedef* */
157
+ upb_inttable exts; /* upb_msglayout_ext* -> upb_fielddef* */
158
+ upb_extreg *extreg;
114
159
  size_t bytes_loaded;
115
160
  };
116
161
 
117
162
  /* Inside a symtab we store tagged pointers to specific def types. */
118
163
  typedef enum {
164
+ UPB_DEFTYPE_MASK = 7,
165
+
119
166
  UPB_DEFTYPE_FIELD = 0,
120
167
 
121
168
  /* Only inside symtab table. */
122
169
  UPB_DEFTYPE_MSG = 1,
123
170
  UPB_DEFTYPE_ENUM = 2,
171
+ UPB_DEFTYPE_ENUMVAL = 3,
124
172
 
125
173
  /* Only inside message table. */
126
174
  UPB_DEFTYPE_ONEOF = 1,
127
175
  UPB_DEFTYPE_FIELD_JSONNAME = 2
128
176
  } upb_deftype_t;
129
177
 
178
+ static upb_deftype_t deftype(upb_value v) {
179
+ uintptr_t num = (uintptr_t)upb_value_getconstptr(v);
180
+ return num & UPB_DEFTYPE_MASK;
181
+ }
182
+
130
183
  static const void *unpack_def(upb_value v, upb_deftype_t type) {
131
184
  uintptr_t num = (uintptr_t)upb_value_getconstptr(v);
132
- return (num & 3) == type ? (const void*)(num & ~3) : NULL;
185
+ return (num & UPB_DEFTYPE_MASK) == type
186
+ ? (const void *)(num & ~UPB_DEFTYPE_MASK)
187
+ : NULL;
133
188
  }
134
189
 
135
190
  static upb_value pack_def(const void *ptr, upb_deftype_t type) {
136
- uintptr_t num = (uintptr_t)ptr | type;
191
+ uintptr_t num = (uintptr_t)ptr;
192
+ UPB_ASSERT((num & UPB_DEFTYPE_MASK) == 0);
193
+ num |= type;
137
194
  return upb_value_constptr((const void*)num);
138
195
  }
139
196
 
@@ -181,30 +238,6 @@ int cmp_fields(const void *p1, const void *p2) {
181
238
  return field_rank(f1) - field_rank(f2);
182
239
  }
183
240
 
184
- /* A few implementation details of handlers. We put these here to avoid
185
- * a def -> handlers dependency. */
186
-
187
- #define UPB_STATIC_SELECTOR_COUNT 3 /* Warning: also in upb/handlers.h. */
188
-
189
- static uint32_t upb_handlers_selectorbaseoffset(const upb_fielddef *f) {
190
- return upb_fielddef_isseq(f) ? 2 : 0;
191
- }
192
-
193
- static uint32_t upb_handlers_selectorcount(const upb_fielddef *f) {
194
- uint32_t ret = 1;
195
- if (upb_fielddef_isseq(f)) ret += 2; /* STARTSEQ/ENDSEQ */
196
- if (upb_fielddef_isstring(f)) ret += 2; /* [STRING]/STARTSTR/ENDSTR */
197
- if (upb_fielddef_issubmsg(f)) {
198
- /* ENDSUBMSG (STARTSUBMSG is at table beginning) */
199
- ret += 0;
200
- if (upb_fielddef_lazy(f)) {
201
- /* STARTSTR/ENDSTR/STRING (for lazy) */
202
- ret += 3;
203
- }
204
- }
205
- return ret;
206
- }
207
-
208
241
  static void upb_status_setoom(upb_status *status) {
209
242
  upb_status_seterrmsg(status, "out of memory");
210
243
  }
@@ -268,10 +301,31 @@ const upb_filedef *upb_enumdef_file(const upb_enumdef *e) {
268
301
  }
269
302
 
270
303
  int32_t upb_enumdef_default(const upb_enumdef *e) {
271
- UPB_ASSERT(upb_enumdef_iton(e, e->defaultval));
304
+ UPB_ASSERT(upb_enumdef_lookupnum(e, e->defaultval));
272
305
  return e->defaultval;
273
306
  }
274
307
 
308
+ const upb_enumvaldef *upb_enumdef_lookupname(const upb_enumdef *def,
309
+ const char *name, size_t len) {
310
+ upb_value v;
311
+ return upb_strtable_lookup2(&def->ntoi, name, len, &v)
312
+ ? upb_value_getconstptr(v)
313
+ : NULL;
314
+ }
315
+
316
+ const upb_enumvaldef *upb_enumdef_lookupnum(const upb_enumdef *def, int32_t num) {
317
+ upb_value v;
318
+ return upb_inttable_lookup(&def->iton, num, &v) ? upb_value_getconstptr(v)
319
+ : NULL;
320
+ }
321
+
322
+ const upb_enumvaldef *upb_enumdef_value(const upb_enumdef *e, int i) {
323
+ UPB_ASSERT(0 <= i && i < e->value_count);
324
+ return &e->values[i];
325
+ }
326
+
327
+ // Deprecated functions.
328
+
275
329
  int upb_enumdef_numvals(const upb_enumdef *e) {
276
330
  return (int)upb_strtable_count(&e->ntoi);
277
331
  }
@@ -284,22 +338,6 @@ void upb_enum_begin(upb_enum_iter *i, const upb_enumdef *e) {
284
338
  void upb_enum_next(upb_enum_iter *iter) { upb_strtable_next(iter); }
285
339
  bool upb_enum_done(upb_enum_iter *iter) { return upb_strtable_done(iter); }
286
340
 
287
- bool upb_enumdef_ntoi(const upb_enumdef *def, const char *name,
288
- size_t len, int32_t *num) {
289
- upb_value v;
290
- if (!upb_strtable_lookup2(&def->ntoi, name, len, &v)) {
291
- return false;
292
- }
293
- if (num) *num = upb_value_getint32(v);
294
- return true;
295
- }
296
-
297
- const char *upb_enumdef_iton(const upb_enumdef *def, int32_t num) {
298
- upb_value v;
299
- return upb_inttable_lookup32(&def->iton, num, &v) ?
300
- upb_value_getcstr(v) : NULL;
301
- }
302
-
303
341
  const char *upb_enum_iter_name(upb_enum_iter *iter) {
304
342
  return upb_strtable_iter_key(iter).data;
305
343
  }
@@ -309,6 +347,25 @@ int32_t upb_enum_iter_number(upb_enum_iter *iter) {
309
347
  }
310
348
 
311
349
 
350
+ /* upb_enumvaldef *************************************************************/
351
+
352
+ const upb_enumdef *upb_enumvaldef_enum(const upb_enumvaldef *ev) {
353
+ return ev->enum_;
354
+ }
355
+
356
+ const char *upb_enumvaldef_fullname(const upb_enumvaldef *ev) {
357
+ return ev->full_name;
358
+ }
359
+
360
+ const char *upb_enumvaldef_name(const upb_enumvaldef *ev) {
361
+ return shortdefname(ev->full_name);
362
+ }
363
+
364
+ int32_t upb_enumvaldef_number(const upb_enumvaldef *ev) {
365
+ return ev->number;
366
+ }
367
+
368
+
312
369
  /* upb_fielddef ***************************************************************/
313
370
 
314
371
  const char *upb_fielddef_fullname(const upb_fielddef *f) {
@@ -386,10 +443,6 @@ const char *upb_fielddef_jsonname(const upb_fielddef *f) {
386
443
  return f->json_name;
387
444
  }
388
445
 
389
- uint32_t upb_fielddef_selectorbase(const upb_fielddef *f) {
390
- return f->selector_base;
391
- }
392
-
393
446
  const upb_filedef *upb_fielddef_file(const upb_fielddef *f) {
394
447
  return f->file;
395
448
  }
@@ -407,6 +460,23 @@ const upb_oneofdef *upb_fielddef_realcontainingoneof(const upb_fielddef *f) {
407
460
  return f->oneof;
408
461
  }
409
462
 
463
+ upb_msgval upb_fielddef_default(const upb_fielddef *f) {
464
+ UPB_ASSERT(!upb_fielddef_issubmsg(f));
465
+ upb_msgval ret;
466
+ if (upb_fielddef_isstring(f)) {
467
+ str_t *str = f->defaultval.str;
468
+ if (str) {
469
+ ret.str_val.data = str->str;
470
+ ret.str_val.size = str->len;
471
+ } else {
472
+ ret.str_val.size = 0;
473
+ }
474
+ } else {
475
+ memcpy(&ret, &f->defaultval, 8);
476
+ }
477
+ return ret;
478
+ }
479
+
410
480
  static void chkdefaulttype(const upb_fielddef *f, int ctype) {
411
481
  UPB_UNUSED(f);
412
482
  UPB_UNUSED(ctype);
@@ -470,9 +540,15 @@ const upb_enumdef *upb_fielddef_enumsubdef(const upb_fielddef *f) {
470
540
  }
471
541
 
472
542
  const upb_msglayout_field *upb_fielddef_layout(const upb_fielddef *f) {
543
+ UPB_ASSERT(!upb_fielddef_isextension(f));
473
544
  return &f->msgdef->layout->fields[f->layout_index];
474
545
  }
475
546
 
547
+ const upb_msglayout_ext *_upb_fielddef_extlayout(const upb_fielddef *f) {
548
+ UPB_ASSERT(upb_fielddef_isextension(f));
549
+ return f->file->ext_layouts[f->layout_index];
550
+ }
551
+
476
552
  bool upb_fielddef_issubmsg(const upb_fielddef *f) {
477
553
  return upb_fielddef_type(f) == UPB_TYPE_MESSAGE;
478
554
  }
@@ -535,18 +611,10 @@ upb_syntax_t upb_msgdef_syntax(const upb_msgdef *m) {
535
611
  return m->file->syntax;
536
612
  }
537
613
 
538
- size_t upb_msgdef_selectorcount(const upb_msgdef *m) {
539
- return m->selector_count;
540
- }
541
-
542
- uint32_t upb_msgdef_submsgfieldcount(const upb_msgdef *m) {
543
- return m->submsg_field_count;
544
- }
545
-
546
614
  const upb_fielddef *upb_msgdef_itof(const upb_msgdef *m, uint32_t i) {
547
615
  upb_value val;
548
- return upb_inttable_lookup32(&m->itof, i, &val) ?
549
- upb_value_getconstptr(val) : NULL;
616
+ return upb_inttable_lookup(&m->itof, i, &val) ? upb_value_getconstptr(val)
617
+ : NULL;
550
618
  }
551
619
 
552
620
  const upb_fielddef *upb_msgdef_ntof(const upb_msgdef *m, const char *name,
@@ -611,6 +679,10 @@ int upb_msgdef_numrealoneofs(const upb_msgdef *m) {
611
679
  return m->real_oneof_count;
612
680
  }
613
681
 
682
+ int upb_msgdef_extrangecount(const upb_msgdef *m) {
683
+ return m->ext_range_count;
684
+ }
685
+
614
686
  int upb_msgdef_fieldcount(const upb_msgdef *m) {
615
687
  return m->field_count;
616
688
  }
@@ -627,6 +699,11 @@ const upb_msglayout *upb_msgdef_layout(const upb_msgdef *m) {
627
699
  return m->layout;
628
700
  }
629
701
 
702
+ const upb_extrange *upb_msgdef_extrange(const upb_msgdef *m, int i) {
703
+ UPB_ASSERT(i >= 0 && i < m->ext_range_count);
704
+ return &m->ext_ranges[i];
705
+ }
706
+
630
707
  const upb_fielddef *upb_msgdef_field(const upb_msgdef *m, int i) {
631
708
  UPB_ASSERT(i >= 0 && i < m->field_count);
632
709
  return &m->fields[i];
@@ -754,8 +831,8 @@ const upb_fielddef *upb_oneofdef_ntof(const upb_oneofdef *o,
754
831
 
755
832
  const upb_fielddef *upb_oneofdef_itof(const upb_oneofdef *o, uint32_t num) {
756
833
  upb_value val;
757
- return upb_inttable_lookup32(&o->itof, num, &val) ?
758
- upb_value_getptr(val) : NULL;
834
+ return upb_inttable_lookup(&o->itof, num, &val) ? upb_value_getptr(val)
835
+ : NULL;
759
836
  }
760
837
 
761
838
  void upb_oneof_begin(upb_oneof_iter *iter, const upb_oneofdef *o) {
@@ -835,7 +912,6 @@ void upb_symtab_free(upb_symtab *s) {
835
912
 
836
913
  upb_symtab *upb_symtab_new(void) {
837
914
  upb_symtab *s = upb_gmalloc(sizeof(*s));
838
- upb_alloc *alloc;
839
915
 
840
916
  if (!s) {
841
917
  return NULL;
@@ -843,15 +919,21 @@ upb_symtab *upb_symtab_new(void) {
843
919
 
844
920
  s->arena = upb_arena_new();
845
921
  s->bytes_loaded = 0;
846
- alloc = upb_arena_alloc(s->arena);
847
922
 
848
- if (!upb_strtable_init2(&s->syms, UPB_CTYPE_CONSTPTR, 32, alloc) ||
849
- !upb_strtable_init2(&s->files, UPB_CTYPE_CONSTPTR, 4, alloc)) {
850
- upb_arena_free(s->arena);
851
- upb_gfree(s);
852
- s = NULL;
923
+ if (!upb_strtable_init(&s->syms, 32, s->arena) ||
924
+ !upb_strtable_init(&s->files, 4, s->arena) ||
925
+ !upb_inttable_init(&s->exts, s->arena)) {
926
+ goto err;
853
927
  }
928
+
929
+ s->extreg = upb_extreg_new(s->arena);
930
+ if (!s->extreg) goto err;
854
931
  return s;
932
+
933
+ err:
934
+ upb_arena_free(s->arena);
935
+ upb_gfree(s);
936
+ return NULL;
855
937
  }
856
938
 
857
939
  const upb_msgdef *upb_symtab_lookupmsg(const upb_symtab *s, const char *sym) {
@@ -860,11 +942,16 @@ const upb_msgdef *upb_symtab_lookupmsg(const upb_symtab *s, const char *sym) {
860
942
  unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
861
943
  }
862
944
 
945
+ static const void *symtab_lookup2(const upb_symtab *s, const char *sym,
946
+ size_t size, upb_deftype_t type) {
947
+ upb_value v;
948
+ return upb_strtable_lookup2(&s->syms, sym, size, &v) ? unpack_def(v, type)
949
+ : NULL;
950
+ }
951
+
863
952
  const upb_msgdef *upb_symtab_lookupmsg2(const upb_symtab *s, const char *sym,
864
953
  size_t len) {
865
- upb_value v;
866
- return upb_strtable_lookup2(&s->syms, sym, len, &v) ?
867
- unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
954
+ return symtab_lookup2(s, sym, len, UPB_DEFTYPE_MSG);
868
955
  }
869
956
 
870
957
  const upb_enumdef *upb_symtab_lookupenum(const upb_symtab *s, const char *sym) {
@@ -873,6 +960,37 @@ const upb_enumdef *upb_symtab_lookupenum(const upb_symtab *s, const char *sym) {
873
960
  unpack_def(v, UPB_DEFTYPE_ENUM) : NULL;
874
961
  }
875
962
 
963
+ const upb_enumvaldef *upb_symtab_lookupenumval(const upb_symtab *s,
964
+ const char *sym) {
965
+ upb_value v;
966
+ return upb_strtable_lookup(&s->syms, sym, &v)
967
+ ? unpack_def(v, UPB_DEFTYPE_ENUMVAL)
968
+ : NULL;
969
+ }
970
+
971
+ const upb_fielddef *upb_symtab_lookupext2(const upb_symtab *s, const char *name,
972
+ size_t size) {
973
+ upb_value v;
974
+ if (!upb_strtable_lookup2(&s->syms, name, size, &v)) return NULL;
975
+
976
+ switch (deftype(v)) {
977
+ case UPB_DEFTYPE_FIELD:
978
+ return unpack_def(v, UPB_DEFTYPE_FIELD);
979
+ case UPB_DEFTYPE_MSG: {
980
+ const upb_msgdef *m = unpack_def(v, UPB_DEFTYPE_MSG);
981
+ return m->message_set_ext; /* May be NULL if not in MessageeSet. */
982
+ }
983
+ default:
984
+ break;
985
+ }
986
+
987
+ return NULL;
988
+ }
989
+
990
+ const upb_fielddef *upb_symtab_lookupext(const upb_symtab *s, const char *sym) {
991
+ return upb_symtab_lookupext2(s, sym, strlen(sym));
992
+ }
993
+
876
994
  const upb_filedef *upb_symtab_lookupfile(const upb_symtab *s, const char *name) {
877
995
  upb_value v;
878
996
  return upb_strtable_lookup(&s->files, name, &v) ? upb_value_getconstptr(v)
@@ -902,14 +1020,16 @@ int upb_symtab_filecount(const upb_symtab *s) {
902
1020
  typedef struct {
903
1021
  upb_symtab *symtab;
904
1022
  upb_filedef *file; /* File we are building. */
905
- upb_arena *file_arena; /* Allocate defs here. */
906
- upb_alloc *alloc; /* Alloc of file_arena, for tables. */
907
- const upb_msglayout **layouts; /* NULL if we should build layouts. */
1023
+ upb_arena *arena; /* Allocate defs here. */
1024
+ const upb_msglayout_file *layout; /* NULL if we should build layouts. */
1025
+ int enum_count; /* Count of enums built so far. */
1026
+ int msg_count; /* Count of messages built so far. */
1027
+ int ext_count; /* Count of extensions built so far. */
908
1028
  upb_status *status; /* Record errors here. */
909
1029
  jmp_buf err; /* longjmp() on error. */
910
1030
  } symtab_addctx;
911
1031
 
912
- UPB_NORETURN UPB_NOINLINE
1032
+ UPB_NORETURN UPB_NOINLINE UPB_PRINTF(2, 3)
913
1033
  static void symtab_errf(symtab_addctx *ctx, const char *fmt, ...) {
914
1034
  va_list argp;
915
1035
  va_start(argp, fmt);
@@ -925,7 +1045,7 @@ static void symtab_oomerr(symtab_addctx *ctx) {
925
1045
  }
926
1046
 
927
1047
  void *symtab_alloc(symtab_addctx *ctx, size_t bytes) {
928
- void *ret = upb_arena_malloc(ctx->file_arena, bytes);
1048
+ void *ret = upb_arena_malloc(ctx->arena, bytes);
929
1049
  if (!ret) symtab_oomerr(ctx);
930
1050
  return ret;
931
1051
  }
@@ -1015,13 +1135,71 @@ static int field_number_cmp(const void *p1, const void *p2) {
1015
1135
  return f1->number - f2->number;
1016
1136
  }
1017
1137
 
1018
- static void assign_layout_indices(const upb_msgdef *m, upb_msglayout_field *fields) {
1138
+ static void assign_layout_indices(const upb_msgdef *m, upb_msglayout *l,
1139
+ upb_msglayout_field *fields) {
1019
1140
  int i;
1020
1141
  int n = upb_msgdef_numfields(m);
1142
+ int dense_below = 0;
1021
1143
  for (i = 0; i < n; i++) {
1022
1144
  upb_fielddef *f = (upb_fielddef*)upb_msgdef_itof(m, fields[i].number);
1023
1145
  UPB_ASSERT(f);
1024
1146
  f->layout_index = i;
1147
+ if (i < UINT8_MAX && fields[i].number == i + 1 &&
1148
+ (i == 0 || fields[i-1].number == i)) {
1149
+ dense_below = i + 1;
1150
+ }
1151
+ }
1152
+ l->dense_below = dense_below;
1153
+ }
1154
+
1155
+ static void fill_fieldlayout(upb_msglayout_field *field, const upb_fielddef *f) {
1156
+ field->number = upb_fielddef_number(f);
1157
+ field->descriptortype = upb_fielddef_descriptortype(f);
1158
+
1159
+ if (field->descriptortype == UPB_DTYPE_STRING &&
1160
+ f->file->syntax == UPB_SYNTAX_PROTO2) {
1161
+ /* See TableDescriptorType() in upbc/generator.cc for details and
1162
+ * rationale. */
1163
+ field->descriptortype = UPB_DTYPE_BYTES;
1164
+ }
1165
+
1166
+ if (upb_fielddef_ismap(f)) {
1167
+ field->mode = _UPB_MODE_MAP | (_UPB_REP_PTR << _UPB_REP_SHIFT);
1168
+ } else if (upb_fielddef_isseq(f)) {
1169
+ field->mode = _UPB_MODE_ARRAY | (_UPB_REP_PTR << _UPB_REP_SHIFT);
1170
+ } else {
1171
+ /* Maps descriptor type -> elem_size_lg2. */
1172
+ static const uint8_t sizes[] = {
1173
+ -1, /* invalid descriptor type */
1174
+ _UPB_REP_8BYTE, /* DOUBLE */
1175
+ _UPB_REP_4BYTE, /* FLOAT */
1176
+ _UPB_REP_8BYTE, /* INT64 */
1177
+ _UPB_REP_8BYTE, /* UINT64 */
1178
+ _UPB_REP_4BYTE, /* INT32 */
1179
+ _UPB_REP_8BYTE, /* FIXED64 */
1180
+ _UPB_REP_4BYTE, /* FIXED32 */
1181
+ _UPB_REP_1BYTE, /* BOOL */
1182
+ _UPB_REP_STRVIEW, /* STRING */
1183
+ _UPB_REP_PTR, /* GROUP */
1184
+ _UPB_REP_PTR, /* MESSAGE */
1185
+ _UPB_REP_STRVIEW, /* BYTES */
1186
+ _UPB_REP_4BYTE, /* UINT32 */
1187
+ _UPB_REP_4BYTE, /* ENUM */
1188
+ _UPB_REP_4BYTE, /* SFIXED32 */
1189
+ _UPB_REP_8BYTE, /* SFIXED64 */
1190
+ _UPB_REP_4BYTE, /* SINT32 */
1191
+ _UPB_REP_8BYTE, /* SINT64 */
1192
+ };
1193
+ field->mode =
1194
+ _UPB_MODE_SCALAR | (sizes[field->descriptortype] << _UPB_REP_SHIFT);
1195
+ }
1196
+
1197
+ if (upb_fielddef_packed(f)) {
1198
+ field->mode |= _UPB_MODE_IS_PACKED;
1199
+ }
1200
+
1201
+ if (upb_fielddef_isextension(f)) {
1202
+ field->mode |= _UPB_MODE_IS_EXTENSION;
1025
1203
  }
1026
1204
  }
1027
1205
 
@@ -1032,20 +1210,38 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
1032
1210
  upb_msg_field_iter it;
1033
1211
  upb_msg_oneof_iter oit;
1034
1212
  size_t hasbit;
1035
- size_t submsg_count = m->submsg_field_count;
1036
- const upb_msglayout **submsgs;
1213
+ size_t field_count = upb_msgdef_numfields(m);
1214
+ size_t sublayout_count = 0;
1215
+ upb_msglayout_sub *subs;
1037
1216
  upb_msglayout_field *fields;
1038
1217
 
1039
1218
  memset(l, 0, sizeof(*l) + sizeof(_upb_fasttable_entry));
1040
1219
 
1041
- fields = symtab_alloc(ctx, upb_msgdef_numfields(m) * sizeof(*fields));
1042
- submsgs = symtab_alloc(ctx, submsg_count * sizeof(*submsgs));
1220
+ /* Count sub-messages. */
1221
+ for (size_t i = 0; i < field_count; i++) {
1222
+ if (upb_fielddef_issubmsg(&m->fields[i])) {
1223
+ sublayout_count++;
1224
+ }
1225
+ }
1226
+
1227
+ fields = symtab_alloc(ctx, field_count * sizeof(*fields));
1228
+ subs = symtab_alloc(ctx, sublayout_count * sizeof(*subs));
1043
1229
 
1044
1230
  l->field_count = upb_msgdef_numfields(m);
1045
1231
  l->fields = fields;
1046
- l->submsgs = submsgs;
1232
+ l->subs = subs;
1047
1233
  l->table_mask = 0;
1048
1234
 
1235
+ if (upb_msgdef_extrangecount(m) > 0) {
1236
+ if (m->is_message_set) {
1237
+ l->ext = _UPB_MSGEXT_MSGSET;
1238
+ } else {
1239
+ l->ext = _UPB_MSGEXT_EXTENDABLE;
1240
+ }
1241
+ } else {
1242
+ l->ext = _UPB_MSGEXT_NONE;
1243
+ }
1244
+
1049
1245
  /* TODO(haberman): initialize fast tables so that reflection-based parsing
1050
1246
  * can get the same speeds as linked-in types. */
1051
1247
  l->fasttable[0].field_parser = &fastdecode_generic;
@@ -1058,8 +1254,8 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
1058
1254
  const upb_fielddef *val = upb_msgdef_itof(m, 2);
1059
1255
  fields[0].number = 1;
1060
1256
  fields[1].number = 2;
1061
- fields[0].label = UPB_LABEL_OPTIONAL;
1062
- fields[1].label = UPB_LABEL_OPTIONAL;
1257
+ fields[0].mode = _UPB_MODE_SCALAR;
1258
+ fields[1].mode = _UPB_MODE_SCALAR;
1063
1259
  fields[0].presence = 0;
1064
1260
  fields[1].presence = 0;
1065
1261
  fields[0].descriptortype = upb_fielddef_descriptortype(key);
@@ -1069,7 +1265,7 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
1069
1265
  fields[1].submsg_index = 0;
1070
1266
 
1071
1267
  if (upb_fielddef_type(val) == UPB_TYPE_MESSAGE) {
1072
- submsgs[0] = upb_fielddef_msgsubdef(val)->layout;
1268
+ subs[0].submsg = upb_fielddef_msgsubdef(val)->layout;
1073
1269
  }
1074
1270
 
1075
1271
  l->field_count = 2;
@@ -1088,34 +1284,19 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
1088
1284
  */
1089
1285
 
1090
1286
  /* Allocate hasbits and set basic field attributes. */
1091
- submsg_count = 0;
1287
+ sublayout_count = 0;
1092
1288
  for (upb_msg_field_begin(&it, m), hasbit = 0;
1093
1289
  !upb_msg_field_done(&it);
1094
1290
  upb_msg_field_next(&it)) {
1095
1291
  upb_fielddef* f = upb_msg_iter_field(&it);
1096
1292
  upb_msglayout_field *field = &fields[upb_fielddef_index(f)];
1097
1293
 
1098
- field->number = upb_fielddef_number(f);
1099
- field->descriptortype = upb_fielddef_descriptortype(f);
1100
- field->label = upb_fielddef_label(f);
1101
-
1102
- if (field->descriptortype == UPB_DTYPE_STRING &&
1103
- f->file->syntax == UPB_SYNTAX_PROTO2) {
1104
- /* See TableDescriptorType() in upbc/generator.cc for details and
1105
- * rationale. */
1106
- field->descriptortype = UPB_DTYPE_BYTES;
1107
- }
1108
-
1109
- if (upb_fielddef_ismap(f)) {
1110
- field->label = _UPB_LABEL_MAP;
1111
- } else if (upb_fielddef_packed(f)) {
1112
- field->label = _UPB_LABEL_PACKED;
1113
- }
1294
+ fill_fieldlayout(field, f);
1114
1295
 
1115
1296
  if (upb_fielddef_issubmsg(f)) {
1116
1297
  const upb_msgdef *subm = upb_fielddef_msgsubdef(f);
1117
- field->submsg_index = submsg_count++;
1118
- submsgs[field->submsg_index] = subm->layout;
1298
+ field->submsg_index = sublayout_count++;
1299
+ subs[field->submsg_index].submsg = subm->layout;
1119
1300
  }
1120
1301
 
1121
1302
  if (upb_fielddef_haspresence(f) && !upb_fielddef_realcontainingoneof(f)) {
@@ -1186,54 +1367,13 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
1186
1367
 
1187
1368
  /* Sort fields by number. */
1188
1369
  qsort(fields, upb_msgdef_numfields(m), sizeof(*fields), field_number_cmp);
1189
- assign_layout_indices(m, fields);
1190
- }
1191
-
1192
- static void assign_msg_indices(symtab_addctx *ctx, upb_msgdef *m) {
1193
- /* Sort fields. upb internally relies on UPB_TYPE_MESSAGE fields having the
1194
- * lowest indexes, but we do not publicly guarantee this. */
1195
- upb_msg_field_iter j;
1196
- int i;
1197
- uint32_t selector;
1198
- int n = upb_msgdef_numfields(m);
1199
- upb_fielddef **fields;
1200
-
1201
- if (n == 0) {
1202
- m->selector_count = UPB_STATIC_SELECTOR_COUNT;
1203
- m->submsg_field_count = 0;
1204
- return;
1205
- }
1206
-
1207
- fields = upb_gmalloc(n * sizeof(*fields));
1208
-
1209
- m->submsg_field_count = 0;
1210
- for(i = 0, upb_msg_field_begin(&j, m);
1211
- !upb_msg_field_done(&j);
1212
- upb_msg_field_next(&j), i++) {
1213
- upb_fielddef *f = upb_msg_iter_field(&j);
1214
- UPB_ASSERT(f->msgdef == m);
1215
- if (upb_fielddef_issubmsg(f)) {
1216
- m->submsg_field_count++;
1217
- }
1218
- fields[i] = f;
1219
- }
1220
-
1221
- qsort(fields, n, sizeof(*fields), cmp_fields);
1222
-
1223
- selector = UPB_STATIC_SELECTOR_COUNT + m->submsg_field_count;
1224
- for (i = 0; i < n; i++) {
1225
- upb_fielddef *f = fields[i];
1226
- f->index_ = i;
1227
- f->selector_base = selector + upb_handlers_selectorbaseoffset(f);
1228
- selector += upb_handlers_selectorcount(f);
1229
- }
1230
- m->selector_count = selector;
1231
-
1232
- upb_gfree(fields);
1370
+ assign_layout_indices(m, l, fields);
1233
1371
  }
1234
1372
 
1235
1373
  static char *strviewdup(symtab_addctx *ctx, upb_strview view) {
1236
- return upb_strdup2(view.data, view.size, ctx->alloc);
1374
+ char *ret = upb_strdup2(view.data, view.size, ctx->arena);
1375
+ CHK_OOM(ret);
1376
+ return ret;
1237
1377
  }
1238
1378
 
1239
1379
  static bool streql2(const char *a, size_t n, const char *b) {
@@ -1341,12 +1481,14 @@ static char* makejsonname(symtab_addctx *ctx, const char* name) {
1341
1481
  }
1342
1482
 
1343
1483
  static void symtab_add(symtab_addctx *ctx, const char *name, upb_value v) {
1484
+ // TODO: table should support an operation "tryinsert" to avoid the double
1485
+ // lookup.
1344
1486
  if (upb_strtable_lookup(&ctx->symtab->syms, name, NULL)) {
1345
1487
  symtab_errf(ctx, "duplicate symbol '%s'", name);
1346
1488
  }
1347
- upb_alloc *alloc = upb_arena_alloc(ctx->symtab->arena);
1348
1489
  size_t len = strlen(name);
1349
- CHK_OOM(upb_strtable_insert3(&ctx->symtab->syms, name, len, v, alloc));
1490
+ CHK_OOM(upb_strtable_insert(&ctx->symtab->syms, name, len, v,
1491
+ ctx->symtab->arena));
1350
1492
  }
1351
1493
 
1352
1494
  /* Given a symbol and the base symbol inside which it is defined, find the
@@ -1379,7 +1521,8 @@ static const void *symtab_resolve(symtab_addctx *ctx, const upb_fielddef *f,
1379
1521
  }
1380
1522
 
1381
1523
  notfound:
1382
- symtab_errf(ctx, "couldn't resolve name '%s'", sym.data);
1524
+ symtab_errf(ctx, "couldn't resolve name '" UPB_STRVIEW_FORMAT "'",
1525
+ UPB_STRVIEW_ARGS(sym));
1383
1526
  }
1384
1527
 
1385
1528
  static void create_oneofdef(
@@ -1397,10 +1540,10 @@ static void create_oneofdef(
1397
1540
 
1398
1541
  v = pack_def(o, UPB_DEFTYPE_ONEOF);
1399
1542
  symtab_add(ctx, o->full_name, v);
1400
- CHK_OOM(upb_strtable_insert3(&m->ntof, name.data, name.size, v, ctx->alloc));
1543
+ CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, v, ctx->arena));
1401
1544
 
1402
- CHK_OOM(upb_inttable_init2(&o->itof, UPB_CTYPE_CONSTPTR, ctx->alloc));
1403
- CHK_OOM(upb_strtable_init2(&o->ntof, UPB_CTYPE_CONSTPTR, 4, ctx->alloc));
1545
+ CHK_OOM(upb_inttable_init(&o->itof, ctx->arena));
1546
+ CHK_OOM(upb_strtable_init(&o->ntof, 4, ctx->arena));
1404
1547
  }
1405
1548
 
1406
1549
  static str_t *newstr(symtab_addctx *ctx, const char *data, size_t len) {
@@ -1448,16 +1591,15 @@ static void parse_default(symtab_addctx *ctx, const char *str, size_t len,
1448
1591
  }
1449
1592
  case UPB_TYPE_ENUM: {
1450
1593
  const upb_enumdef *e = f->sub.enumdef;
1451
- int32_t val;
1452
- if (!upb_enumdef_ntoi(e, str, len, &val)) {
1594
+ const upb_enumvaldef *ev = upb_enumdef_lookupname(e, str, len);
1595
+ if (!ev) {
1453
1596
  goto invalid;
1454
1597
  }
1455
- f->defaultval.sint = val;
1598
+ f->defaultval.sint = ev->number;
1456
1599
  break;
1457
1600
  }
1458
1601
  case UPB_TYPE_INT64: {
1459
- /* XXX: Need to write our own strtoll, since it's not available in c89. */
1460
- int64_t val = strtol(str, &end, 0);
1602
+ long long val = strtoll(str, &end, 0);
1461
1603
  if (val > INT64_MAX || val < INT64_MIN || errno == ERANGE || *end) {
1462
1604
  goto invalid;
1463
1605
  }
@@ -1473,8 +1615,7 @@ static void parse_default(symtab_addctx *ctx, const char *str, size_t len,
1473
1615
  break;
1474
1616
  }
1475
1617
  case UPB_TYPE_UINT64: {
1476
- /* XXX: Need to write our own strtoull, since it's not available in c89. */
1477
- uint64_t val = strtoul(str, &end, 0);
1618
+ unsigned long long val = strtoull(str, &end, 0);
1478
1619
  if (val > UINT64_MAX || errno == ERANGE || *end) {
1479
1620
  goto invalid;
1480
1621
  }
@@ -1490,8 +1631,7 @@ static void parse_default(symtab_addctx *ctx, const char *str, size_t len,
1490
1631
  break;
1491
1632
  }
1492
1633
  case UPB_TYPE_FLOAT: {
1493
- /* XXX: Need to write our own strtof, since it's not available in c89. */
1494
- float val = strtod(str, &end);
1634
+ float val = strtof(str, &end);
1495
1635
  if (errno == ERANGE || *end) {
1496
1636
  goto invalid;
1497
1637
  }
@@ -1523,7 +1663,7 @@ static void parse_default(symtab_addctx *ctx, const char *str, size_t len,
1523
1663
  return;
1524
1664
 
1525
1665
  invalid:
1526
- symtab_errf(ctx, "Invalid default '%.*s' for field %f", (int)len, str,
1666
+ symtab_errf(ctx, "Invalid default '%.*s' for field %s", (int)len, str,
1527
1667
  upb_fielddef_fullname(f));
1528
1668
  }
1529
1669
 
@@ -1557,7 +1697,6 @@ static void set_default_default(symtab_addctx *ctx, upb_fielddef *f) {
1557
1697
  static void create_fielddef(
1558
1698
  symtab_addctx *ctx, const char *prefix, upb_msgdef *m,
1559
1699
  const google_protobuf_FieldDescriptorProto *field_proto) {
1560
- upb_alloc *alloc = ctx->alloc;
1561
1700
  upb_fielddef *f;
1562
1701
  const google_protobuf_FieldOptions *options;
1563
1702
  upb_strview name;
@@ -1593,7 +1732,8 @@ static void create_fielddef(
1593
1732
  upb_value v, field_v, json_v;
1594
1733
  size_t json_size;
1595
1734
 
1596
- f = (upb_fielddef*)&m->fields[m->field_count++];
1735
+ f = (upb_fielddef*)&m->fields[m->field_count];
1736
+ f->index_ = m->field_count++;
1597
1737
  f->msgdef = m;
1598
1738
  f->is_extension_ = false;
1599
1739
 
@@ -1614,20 +1754,19 @@ static void create_fielddef(
1614
1754
  v = upb_value_constptr(f);
1615
1755
  json_size = strlen(json_name);
1616
1756
 
1617
- CHK_OOM(
1618
- upb_strtable_insert3(&m->ntof, name.data, name.size, field_v, alloc));
1619
- CHK_OOM(upb_inttable_insert2(&m->itof, field_number, v, alloc));
1757
+ CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, field_v,
1758
+ ctx->arena));
1759
+ CHK_OOM(upb_inttable_insert(&m->itof, field_number, v, ctx->arena));
1620
1760
 
1621
1761
  if (strcmp(shortname, json_name) != 0) {
1622
- upb_strtable_insert3(&m->ntof, json_name, json_size, json_v, alloc);
1762
+ upb_strtable_insert(&m->ntof, json_name, json_size, json_v, ctx->arena);
1623
1763
  }
1624
1764
 
1625
- if (ctx->layouts) {
1765
+ if (ctx->layout) {
1626
1766
  const upb_msglayout_field *fields = m->layout->fields;
1627
1767
  int count = m->layout->field_count;
1628
1768
  bool found = false;
1629
- int i;
1630
- for (i = 0; i < count; i++) {
1769
+ for (int i = 0; i < count; i++) {
1631
1770
  if (fields[i].number == field_number) {
1632
1771
  f->layout_index = i;
1633
1772
  found = true;
@@ -1638,9 +1777,15 @@ static void create_fielddef(
1638
1777
  }
1639
1778
  } else {
1640
1779
  /* extension field. */
1641
- f = (upb_fielddef*)&ctx->file->exts[ctx->file->ext_count++];
1780
+ uint16_t layout_index = ctx->ext_count++;
1781
+ f = (upb_fielddef*)&ctx->file->exts[layout_index];
1782
+ f->layout_index = layout_index;
1642
1783
  f->is_extension_ = true;
1643
1784
  symtab_add(ctx, full_name, pack_def(f, UPB_DEFTYPE_FIELD));
1785
+ if (ctx->layout) {
1786
+ UPB_ASSERT(ctx->file->ext_layouts[f->layout_index]->field.number ==
1787
+ field_number);
1788
+ }
1644
1789
  }
1645
1790
 
1646
1791
  f->full_name = full_name;
@@ -1682,15 +1827,16 @@ static void create_fielddef(
1682
1827
  symtab_errf(ctx, "oneof_index out of range (%s)", f->full_name);
1683
1828
  }
1684
1829
 
1685
- oneof = (upb_oneofdef*)&m->oneofs[oneof_index];
1830
+ oneof = (upb_oneofdef *)&m->oneofs[oneof_index];
1686
1831
  f->oneof = oneof;
1687
1832
 
1688
1833
  oneof->field_count++;
1689
1834
  if (f->proto3_optional_) {
1690
1835
  oneof->synthetic = true;
1691
1836
  }
1692
- CHK_OOM(upb_inttable_insert2(&oneof->itof, f->number_, v, alloc));
1693
- CHK_OOM(upb_strtable_insert3(&oneof->ntof, name.data, name.size, v, alloc));
1837
+ CHK_OOM(upb_inttable_insert(&oneof->itof, f->number_, v, ctx->arena));
1838
+ CHK_OOM(
1839
+ upb_strtable_insert(&oneof->ntof, name.data, name.size, v, ctx->arena));
1694
1840
  } else {
1695
1841
  f->oneof = NULL;
1696
1842
  if (f->proto3_optional_) {
@@ -1728,16 +1874,18 @@ static void create_enumdef(
1728
1874
  name = google_protobuf_EnumDescriptorProto_name(enum_proto);
1729
1875
  check_ident(ctx, name, false);
1730
1876
 
1731
- e = (upb_enumdef*)&ctx->file->enums[ctx->file->enum_count++];
1877
+ e = (upb_enumdef*)&ctx->file->enums[ctx->enum_count++];
1732
1878
  e->full_name = makefullname(ctx, prefix, name);
1733
1879
  symtab_add(ctx, e->full_name, pack_def(e, UPB_DEFTYPE_ENUM));
1734
1880
 
1735
1881
  values = google_protobuf_EnumDescriptorProto_value(enum_proto, &n);
1736
- CHK_OOM(upb_strtable_init2(&e->ntoi, UPB_CTYPE_INT32, n, ctx->alloc));
1737
- CHK_OOM(upb_inttable_init2(&e->iton, UPB_CTYPE_CSTR, ctx->alloc));
1882
+ CHK_OOM(upb_strtable_init(&e->ntoi, n, ctx->arena));
1883
+ CHK_OOM(upb_inttable_init(&e->iton, ctx->arena));
1738
1884
 
1739
1885
  e->file = ctx->file;
1740
1886
  e->defaultval = 0;
1887
+ e->value_count = n;
1888
+ e->values = symtab_alloc(ctx, sizeof(*e->values) * n);
1741
1889
 
1742
1890
  if (n == 0) {
1743
1891
  symtab_errf(ctx, "enums must contain at least one value (%s)",
@@ -1745,32 +1893,30 @@ static void create_enumdef(
1745
1893
  }
1746
1894
 
1747
1895
  for (i = 0; i < n; i++) {
1748
- const google_protobuf_EnumValueDescriptorProto *value = values[i];
1749
- upb_strview name = google_protobuf_EnumValueDescriptorProto_name(value);
1750
- char *name2 = strviewdup(ctx, name);
1751
- int32_t num = google_protobuf_EnumValueDescriptorProto_number(value);
1752
- upb_value v = upb_value_int32(num);
1896
+ const google_protobuf_EnumValueDescriptorProto *val_proto = values[i];
1897
+ upb_enumvaldef *val = (upb_enumvaldef*)&e->values[i];
1898
+ upb_strview name = google_protobuf_EnumValueDescriptorProto_name(val_proto);
1899
+ upb_value v = upb_value_constptr(val);
1900
+
1901
+ val->enum_ = e;
1902
+ val->full_name = makefullname(ctx, prefix, name);
1903
+ val->number = google_protobuf_EnumValueDescriptorProto_number(val_proto);
1904
+ symtab_add(ctx, val->full_name, pack_def(val, UPB_DEFTYPE_ENUMVAL));
1753
1905
 
1754
- if (i == 0 && e->file->syntax == UPB_SYNTAX_PROTO3 && num != 0) {
1906
+ if (i == 0 && e->file->syntax == UPB_SYNTAX_PROTO3 && val->number != 0) {
1755
1907
  symtab_errf(ctx, "for proto3, the first enum value must be zero (%s)",
1756
1908
  e->full_name);
1757
1909
  }
1758
1910
 
1759
- if (upb_strtable_lookup(&e->ntoi, name2, NULL)) {
1760
- symtab_errf(ctx, "duplicate enum label '%s'", name2);
1761
- }
1762
-
1763
- CHK_OOM(name2)
1764
- CHK_OOM(
1765
- upb_strtable_insert3(&e->ntoi, name2, strlen(name2), v, ctx->alloc));
1911
+ CHK_OOM(upb_strtable_insert(&e->ntoi, name.data, name.size, v, ctx->arena));
1766
1912
 
1767
- if (!upb_inttable_lookup(&e->iton, num, NULL)) {
1768
- upb_value v = upb_value_cstr(name2);
1769
- CHK_OOM(upb_inttable_insert2(&e->iton, num, v, ctx->alloc));
1913
+ // Multiple enumerators can have the same number, first one wins.
1914
+ if (!upb_inttable_lookup(&e->iton, val->number, NULL)) {
1915
+ CHK_OOM(upb_inttable_insert(&e->iton, val->number, v, ctx->arena));
1770
1916
  }
1771
1917
  }
1772
1918
 
1773
- upb_inttable_compact2(&e->iton, ctx->alloc);
1919
+ upb_inttable_compact(&e->iton, ctx->arena);
1774
1920
  }
1775
1921
 
1776
1922
  static void create_msgdef(symtab_addctx *ctx, const char *prefix,
@@ -1781,35 +1927,44 @@ static void create_msgdef(symtab_addctx *ctx, const char *prefix,
1781
1927
  const google_protobuf_FieldDescriptorProto *const *fields;
1782
1928
  const google_protobuf_EnumDescriptorProto *const *enums;
1783
1929
  const google_protobuf_DescriptorProto *const *msgs;
1784
- size_t i, n_oneof, n_field, n;
1930
+ const google_protobuf_DescriptorProto_ExtensionRange *const *ext_ranges;
1931
+ size_t i, n_oneof, n_field, n_ext_range, n;
1785
1932
  upb_strview name;
1786
1933
 
1787
1934
  name = google_protobuf_DescriptorProto_name(msg_proto);
1788
1935
  check_ident(ctx, name, false);
1789
1936
 
1790
- m = (upb_msgdef*)&ctx->file->msgs[ctx->file->msg_count++];
1937
+ int msg_index = ctx->msg_count;
1938
+ m = (upb_msgdef*)&ctx->file->msgs[msg_index];
1791
1939
  m->full_name = makefullname(ctx, prefix, name);
1940
+ ctx->msg_count++;
1792
1941
  symtab_add(ctx, m->full_name, pack_def(m, UPB_DEFTYPE_MSG));
1793
1942
 
1794
1943
  oneofs = google_protobuf_DescriptorProto_oneof_decl(msg_proto, &n_oneof);
1795
1944
  fields = google_protobuf_DescriptorProto_field(msg_proto, &n_field);
1945
+ ext_ranges =
1946
+ google_protobuf_DescriptorProto_extension_range(msg_proto, &n_ext_range);
1796
1947
 
1797
- CHK_OOM(upb_inttable_init2(&m->itof, UPB_CTYPE_CONSTPTR, ctx->alloc));
1798
- CHK_OOM(upb_strtable_init2(&m->ntof, UPB_CTYPE_CONSTPTR, n_oneof + n_field,
1799
- ctx->alloc));
1948
+ CHK_OOM(upb_inttable_init(&m->itof, ctx->arena));
1949
+ CHK_OOM(upb_strtable_init(&m->ntof, n_oneof + n_field, ctx->arena));
1800
1950
 
1801
1951
  m->file = ctx->file;
1802
1952
  m->map_entry = false;
1953
+ m->is_message_set = false;
1954
+ m->message_set_ext = NULL;
1803
1955
 
1804
1956
  options = google_protobuf_DescriptorProto_options(msg_proto);
1805
1957
 
1806
1958
  if (options) {
1807
1959
  m->map_entry = google_protobuf_MessageOptions_map_entry(options);
1960
+ m->is_message_set =
1961
+ google_protobuf_MessageOptions_message_set_wire_format(options);
1808
1962
  }
1809
1963
 
1810
- if (ctx->layouts) {
1811
- m->layout = *ctx->layouts;
1812
- ctx->layouts++;
1964
+ if (ctx->layout) {
1965
+ /* create_fielddef() below depends on this being set. */
1966
+ m->layout = ctx->layout->msgs[msg_index];
1967
+ UPB_ASSERT(n_field == m->layout->field_count);
1813
1968
  } else {
1814
1969
  /* Allocate now (to allow cross-linking), populate later. */
1815
1970
  m->layout = symtab_alloc(
@@ -1828,10 +1983,18 @@ static void create_msgdef(symtab_addctx *ctx, const char *prefix,
1828
1983
  create_fielddef(ctx, m->full_name, m, fields[i]);
1829
1984
  }
1830
1985
 
1831
- assign_msg_indices(ctx, m);
1986
+ m->ext_range_count = n_ext_range;
1987
+ m->ext_ranges = symtab_alloc(ctx, sizeof(*m->ext_ranges) * n_ext_range);
1988
+ for (i = 0; i < n_ext_range; i++) {
1989
+ const google_protobuf_DescriptorProto_ExtensionRange *r = ext_ranges[i];
1990
+ upb_extrange *r_def = (upb_extrange*)&m->ext_ranges[i];
1991
+ r_def->start = google_protobuf_DescriptorProto_ExtensionRange_start(r);
1992
+ r_def->end = google_protobuf_DescriptorProto_ExtensionRange_end(r);
1993
+ }
1994
+
1832
1995
  finalize_oneofs(ctx, m);
1833
1996
  assign_msg_wellknowntype(m);
1834
- upb_inttable_compact2(&m->itof, ctx->alloc);
1997
+ upb_inttable_compact(&m->itof, ctx->arena);
1835
1998
 
1836
1999
  /* This message is built. Now build nested messages and enums. */
1837
2000
 
@@ -1840,6 +2003,11 @@ static void create_msgdef(symtab_addctx *ctx, const char *prefix,
1840
2003
  create_enumdef(ctx, m->full_name, enums[i]);
1841
2004
  }
1842
2005
 
2006
+ fields = google_protobuf_DescriptorProto_extension(msg_proto, &n);
2007
+ for (i = 0; i < n; i++) {
2008
+ create_fielddef(ctx, m->full_name, NULL, fields[i]);
2009
+ }
2010
+
1843
2011
  msgs = google_protobuf_DescriptorProto_nested_type(msg_proto, &n);
1844
2012
  for (i = 0; i < n; i++) {
1845
2013
  create_msgdef(ctx, m->full_name, msgs[i]);
@@ -1896,6 +2064,22 @@ static void resolve_fielddef(symtab_addctx *ctx, const char *prefix,
1896
2064
 
1897
2065
  name = google_protobuf_FieldDescriptorProto_extendee(field_proto);
1898
2066
  f->msgdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_MSG);
2067
+
2068
+ const upb_msglayout_ext *ext = ctx->file->ext_layouts[f->layout_index];
2069
+ if (ctx->layout) {
2070
+ UPB_ASSERT(upb_fielddef_number(f) == ext->field.number);
2071
+ } else {
2072
+ upb_msglayout_ext *mut_ext = (upb_msglayout_ext*)ext;
2073
+ fill_fieldlayout(&mut_ext->field, f);
2074
+ mut_ext->field.presence = 0;
2075
+ mut_ext->field.offset = 0;
2076
+ mut_ext->field.submsg_index = 0;
2077
+ mut_ext->extendee = f->msgdef->layout;
2078
+ mut_ext->sub.submsg = f->sub.msgdef->layout;
2079
+ }
2080
+
2081
+ CHK_OOM(upb_inttable_insert(&ctx->symtab->exts, (uintptr_t)ext,
2082
+ upb_value_constptr(f), ctx->arena));
1899
2083
  }
1900
2084
 
1901
2085
  if ((upb_fielddef_issubmsg(f) || f->type_ == UPB_DESCRIPTOR_TYPE_ENUM) &&
@@ -1907,6 +2091,13 @@ static void resolve_fielddef(symtab_addctx *ctx, const char *prefix,
1907
2091
 
1908
2092
  if (upb_fielddef_issubmsg(f)) {
1909
2093
  f->sub.msgdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_MSG);
2094
+ if (f->is_extension_ && f->msgdef->is_message_set &&
2095
+ f->file == f->msgdef->file) {
2096
+ // TODO: When defs are restructured to follow message nesting, we can make
2097
+ // this check more robust. The actual rules for what make something
2098
+ // qualify as a MessageSet item are more strict.
2099
+ ((upb_msgdef*)f->sub.msgdef)->message_set_ext = f;
2100
+ }
1910
2101
  } else if (f->type_ == UPB_DESCRIPTOR_TYPE_ENUM) {
1911
2102
  f->sub.enumdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_ENUM);
1912
2103
  }
@@ -1943,16 +2134,37 @@ static void build_filedef(
1943
2134
  const upb_strview* strs;
1944
2135
  size_t i, n;
1945
2136
 
1946
- count_types_in_file(file_proto, file);
2137
+ file->symtab = ctx->symtab;
1947
2138
 
2139
+ /* One pass to count and allocate. */
2140
+ file->msg_count = 0;
2141
+ file->enum_count = 0;
2142
+ file->ext_count = 0;
2143
+ count_types_in_file(file_proto, file);
1948
2144
  file->msgs = symtab_alloc(ctx, sizeof(*file->msgs) * file->msg_count);
1949
2145
  file->enums = symtab_alloc(ctx, sizeof(*file->enums) * file->enum_count);
1950
2146
  file->exts = symtab_alloc(ctx, sizeof(*file->exts) * file->ext_count);
1951
2147
 
1952
- /* We increment these as defs are added. */
1953
- file->msg_count = 0;
1954
- file->enum_count = 0;
1955
- file->ext_count = 0;
2148
+ ctx->msg_count = 0;
2149
+ ctx->enum_count = 0;
2150
+ ctx->ext_count = 0;
2151
+
2152
+ if (ctx->layout) {
2153
+ /* We are using the ext layouts that were passed in. */
2154
+ file->ext_layouts = ctx->layout->exts;
2155
+ if (ctx->layout->ext_count != file->ext_count) {
2156
+ symtab_errf(ctx, "Extension count did not match layout (%d vs %d)",
2157
+ ctx->layout->ext_count, file->ext_count);
2158
+ }
2159
+ } else {
2160
+ /* We are building ext layouts from scratch. */
2161
+ file->ext_layouts =
2162
+ symtab_alloc(ctx, sizeof(*file->ext_layouts) * file->ext_count);
2163
+ upb_msglayout_ext *ext = symtab_alloc(ctx, sizeof(*ext) * file->ext_count);
2164
+ for (int i = 0; i < file->ext_count; i++) {
2165
+ file->ext_layouts[i] = &ext[i];
2166
+ }
2167
+ }
1956
2168
 
1957
2169
  if (!google_protobuf_FileDescriptorProto_has_name(file_proto)) {
1958
2170
  symtab_errf(ctx, "File has no name");
@@ -2033,11 +2245,12 @@ static void build_filedef(
2033
2245
 
2034
2246
  /* Create extensions. */
2035
2247
  exts = google_protobuf_FileDescriptorProto_extension(file_proto, &n);
2036
- file->exts = symtab_alloc(ctx, sizeof(*file->exts) * n);
2037
2248
  for (i = 0; i < n; i++) {
2038
2249
  create_fielddef(ctx, file->package, NULL, exts[i]);
2039
2250
  }
2040
2251
 
2252
+ UPB_ASSERT(ctx->ext_count == file->ext_count);
2253
+
2041
2254
  /* Now that all names are in the table, build layouts and resolve refs. */
2042
2255
  for (i = 0; i < (size_t)file->ext_count; i++) {
2043
2256
  resolve_fielddef(ctx, file->package, (upb_fielddef*)&file->exts[i]);
@@ -2051,70 +2264,73 @@ static void build_filedef(
2051
2264
  }
2052
2265
  }
2053
2266
 
2054
- if (!ctx->layouts) {
2267
+ if (!ctx->layout) {
2055
2268
  for (i = 0; i < (size_t)file->msg_count; i++) {
2056
2269
  const upb_msgdef *m = &file->msgs[i];
2057
2270
  make_layout(ctx, m);
2058
2271
  }
2059
2272
  }
2273
+
2274
+ CHK_OOM(
2275
+ _upb_extreg_add(ctx->symtab->extreg, file->ext_layouts, file->ext_count));
2060
2276
  }
2061
2277
 
2062
- static void remove_filedef(upb_symtab *s, upb_filedef *file) {
2063
- upb_alloc *alloc = upb_arena_alloc(s->arena);
2278
+ static void remove_filedef(symtab_addctx *ctx, upb_symtab *s, upb_filedef *file) {
2064
2279
  int i;
2065
- for (i = 0; i < file->msg_count; i++) {
2280
+ for (i = 0; i < ctx->msg_count; i++) {
2066
2281
  const char *name = file->msgs[i].full_name;
2067
- upb_strtable_remove3(&s->syms, name, strlen(name), NULL, alloc);
2282
+ upb_strtable_remove(&s->syms, name, strlen(name), NULL);
2068
2283
  }
2069
- for (i = 0; i < file->enum_count; i++) {
2284
+ for (i = 0; i < ctx->enum_count; i++) {
2070
2285
  const char *name = file->enums[i].full_name;
2071
- upb_strtable_remove3(&s->syms, name, strlen(name), NULL, alloc);
2286
+ upb_strtable_remove(&s->syms, name, strlen(name), NULL);
2072
2287
  }
2073
- for (i = 0; i < file->ext_count; i++) {
2288
+ for (i = 0; i < ctx->ext_count; i++) {
2074
2289
  const char *name = file->exts[i].full_name;
2075
- upb_strtable_remove3(&s->syms, name, strlen(name), NULL, alloc);
2290
+ upb_strtable_remove(&s->syms, name, strlen(name), NULL);
2076
2291
  }
2077
2292
  }
2078
2293
 
2079
2294
  static const upb_filedef *_upb_symtab_addfile(
2080
2295
  upb_symtab *s, const google_protobuf_FileDescriptorProto *file_proto,
2081
- const upb_msglayout **layouts, upb_status *status) {
2082
- upb_arena *file_arena = upb_arena_new();
2083
- upb_filedef *file;
2296
+ const upb_msglayout_file *layout, upb_status *status) {
2084
2297
  symtab_addctx ctx;
2298
+ upb_strview name = google_protobuf_FileDescriptorProto_name(file_proto);
2085
2299
 
2086
- if (!file_arena) return NULL;
2087
-
2088
- file = upb_arena_malloc(file_arena, sizeof(*file));
2089
- if (!file) goto done;
2300
+ if (upb_strtable_lookup2(&s->files, name.data, name.size, NULL)) {
2301
+ upb_status_seterrf(status, "duplicate file name (%.*s)",
2302
+ UPB_STRVIEW_ARGS(name));
2303
+ return NULL;
2304
+ }
2090
2305
 
2091
- ctx.file = file;
2092
2306
  ctx.symtab = s;
2093
- ctx.file_arena = file_arena;
2094
- ctx.alloc = upb_arena_alloc(file_arena);
2095
- ctx.layouts = layouts;
2307
+ ctx.layout = layout;
2096
2308
  ctx.status = status;
2309
+ ctx.file = NULL;
2310
+ ctx.arena = upb_arena_new();
2097
2311
 
2098
- file->msg_count = 0;
2099
- file->enum_count = 0;
2100
- file->ext_count = 0;
2101
- file->symtab = s;
2312
+ if (!ctx.arena) {
2313
+ upb_status_setoom(status);
2314
+ return NULL;
2315
+ }
2102
2316
 
2103
2317
  if (UPB_UNLIKELY(UPB_SETJMP(ctx.err))) {
2104
2318
  UPB_ASSERT(!upb_ok(status));
2105
- remove_filedef(s, file);
2106
- file = NULL;
2319
+ if (ctx.file) {
2320
+ remove_filedef(&ctx, s, ctx.file);
2321
+ ctx.file = NULL;
2322
+ }
2107
2323
  } else {
2108
- build_filedef(&ctx, file, file_proto);
2109
- upb_strtable_insert3(&s->files, file->name, strlen(file->name),
2110
- upb_value_constptr(file), ctx.alloc);
2324
+ ctx.file = symtab_alloc(&ctx, sizeof(*ctx.file));
2325
+ build_filedef(&ctx, ctx.file, file_proto);
2326
+ upb_strtable_insert(&s->files, name.data, name.size,
2327
+ upb_value_constptr(ctx.file), ctx.arena);
2111
2328
  UPB_ASSERT(upb_ok(status));
2112
- upb_arena_fuse(s->arena, file_arena);
2329
+ upb_arena_fuse(s->arena, ctx.arena);
2113
2330
  }
2114
2331
 
2115
- done:
2116
- upb_arena_free(file_arena);
2117
- return file;
2332
+ upb_arena_free(ctx.arena);
2333
+ return ctx.file;
2118
2334
  }
2119
2335
 
2120
2336
  const upb_filedef *upb_symtab_addfile(
@@ -2147,7 +2363,8 @@ bool _upb_symtab_loaddefinit(upb_symtab *s, const upb_def_init *init) {
2147
2363
  }
2148
2364
 
2149
2365
  file = google_protobuf_FileDescriptorProto_parse_ex(
2150
- init->descriptor.data, init->descriptor.size, arena, UPB_DECODE_ALIAS);
2366
+ init->descriptor.data, init->descriptor.size, NULL, UPB_DECODE_ALIAS,
2367
+ arena);
2151
2368
  s->bytes_loaded += init->descriptor.size;
2152
2369
 
2153
2370
  if (!file) {
@@ -2159,14 +2376,16 @@ bool _upb_symtab_loaddefinit(upb_symtab *s, const upb_def_init *init) {
2159
2376
  goto err;
2160
2377
  }
2161
2378
 
2162
- if (!_upb_symtab_addfile(s, file, init->layouts, &status)) goto err;
2379
+ if (!_upb_symtab_addfile(s, file, init->layout, &status)) goto err;
2163
2380
 
2164
2381
  upb_arena_free(arena);
2165
2382
  return true;
2166
2383
 
2167
2384
  err:
2168
- fprintf(stderr, "Error loading compiled-in descriptor: %s\n",
2169
- upb_status_errmsg(&status));
2385
+ fprintf(stderr,
2386
+ "Error loading compiled-in descriptor for file '%s' (this should "
2387
+ "never happen): %s\n",
2388
+ init->filename, upb_status_errmsg(&status));
2170
2389
  upb_arena_free(arena);
2171
2390
  return false;
2172
2391
  }
@@ -2175,4 +2394,20 @@ size_t _upb_symtab_bytesloaded(const upb_symtab *s) {
2175
2394
  return s->bytes_loaded;
2176
2395
  }
2177
2396
 
2397
+ upb_arena *_upb_symtab_arena(const upb_symtab *s) {
2398
+ return s->arena;
2399
+ }
2400
+
2401
+ const upb_fielddef *_upb_symtab_lookupextfield(const upb_symtab *s,
2402
+ const upb_msglayout_ext *ext) {
2403
+ upb_value v;
2404
+ bool ok = upb_inttable_lookup(&s->exts, (uintptr_t)ext, &v);
2405
+ UPB_ASSERT(ok);
2406
+ return upb_value_getconstptr(v);
2407
+ }
2408
+
2409
+ const upb_extreg *upb_symtab_extreg(const upb_symtab *s) {
2410
+ return s->extreg;
2411
+ }
2412
+
2178
2413
  #undef CHK_OOM