grpc 1.41.1 → 1.42.0.pre1

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

Potentially problematic release.


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

Files changed (416) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +55 -43
  3. data/include/grpc/event_engine/event_engine.h +82 -42
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  5. data/include/grpc/event_engine/memory_allocator.h +210 -0
  6. data/include/grpc/grpc.h +4 -0
  7. data/include/grpc/grpc_security.h +18 -0
  8. data/include/grpc/grpc_security_constants.h +1 -0
  9. data/include/grpc/impl/codegen/port_platform.h +7 -0
  10. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
  11. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  12. data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
  13. data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
  14. data/src/core/ext/filters/client_channel/client_channel.h +74 -27
  15. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  17. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
  18. data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  20. data/src/core/ext/filters/client_channel/connector.h +18 -18
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
  22. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  32. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
  34. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
  42. data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
  43. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  44. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  49. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  50. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
  51. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
  52. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  53. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  54. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  57. data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  59. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  60. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  62. data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
  63. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  64. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  65. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  66. data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
  67. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  68. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  69. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  70. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
  71. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
  72. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  73. data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
  74. data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
  75. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
  76. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
  77. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
  78. data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
  79. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  80. data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
  81. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  82. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  83. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  84. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  85. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  86. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  87. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
  88. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
  89. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
  90. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
  91. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
  92. data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
  93. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
  94. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  95. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  96. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
  97. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  98. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  99. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
  103. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
  107. data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
  108. data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
  109. data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
  110. data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
  111. data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
  112. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
  113. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
  120. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
  121. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
  122. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
  123. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
  124. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
  125. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  126. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  127. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
  128. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  129. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  130. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  131. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
  132. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  133. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  134. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  135. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  136. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  137. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  138. data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
  139. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  140. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
  141. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  142. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
  143. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  144. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
  145. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
  146. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
  147. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
  148. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  149. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  150. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  151. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  152. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  153. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  154. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  155. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
  156. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
  157. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
  158. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
  159. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
  160. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
  161. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  162. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  163. data/src/core/ext/xds/xds_api.cc +325 -362
  164. data/src/core/ext/xds/xds_api.h +134 -82
  165. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  166. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  167. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  168. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  169. data/src/core/ext/xds/xds_client.cc +527 -314
  170. data/src/core/ext/xds/xds_client.h +42 -37
  171. data/src/core/ext/xds/xds_client_stats.h +1 -1
  172. data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
  173. data/src/core/lib/address_utils/parse_address.cc +2 -0
  174. data/src/core/lib/avl/avl.cc +5 -5
  175. data/src/core/lib/backoff/backoff.cc +1 -1
  176. data/src/core/lib/channel/channel_args.cc +24 -6
  177. data/src/core/lib/channel/channel_args.h +9 -0
  178. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  179. data/src/core/lib/channel/channel_trace.cc +1 -1
  180. data/src/core/lib/channel/channel_trace.h +1 -1
  181. data/src/core/lib/channel/channelz.cc +3 -3
  182. data/src/core/lib/channel/channelz.h +2 -2
  183. data/src/core/lib/channel/channelz_registry.cc +1 -1
  184. data/src/core/lib/channel/channelz_registry.h +1 -1
  185. data/src/core/lib/channel/connected_channel.cc +1 -3
  186. data/src/core/lib/channel/connected_channel.h +1 -2
  187. data/src/core/lib/compression/compression.cc +2 -2
  188. data/src/core/lib/compression/compression_args.cc +6 -4
  189. data/src/core/lib/compression/compression_internal.cc +2 -2
  190. data/src/core/lib/compression/compression_internal.h +1 -1
  191. data/src/core/lib/config/core_configuration.cc +44 -2
  192. data/src/core/lib/config/core_configuration.h +39 -1
  193. data/src/core/lib/debug/stats.cc +1 -1
  194. data/src/core/lib/debug/stats_data.cc +13 -13
  195. data/src/core/lib/gpr/atm.cc +1 -1
  196. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  197. data/src/core/lib/gpr/string.cc +2 -2
  198. data/src/core/lib/gpr/tls.h +1 -1
  199. data/src/core/lib/gpr/useful.h +79 -32
  200. data/src/core/lib/gprpp/arena.h +10 -0
  201. data/src/core/lib/gprpp/bitset.h +38 -16
  202. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  203. data/src/core/lib/gprpp/construct_destruct.h +1 -1
  204. data/src/core/lib/gprpp/match.h +1 -1
  205. data/src/core/lib/gprpp/memory.h +6 -0
  206. data/src/core/lib/gprpp/overload.h +1 -1
  207. data/src/core/lib/gprpp/status_helper.cc +23 -3
  208. data/src/core/lib/gprpp/status_helper.h +12 -1
  209. data/src/core/lib/gprpp/table.h +411 -0
  210. data/src/core/lib/http/httpcli.cc +200 -182
  211. data/src/core/lib/http/parser.cc +2 -2
  212. data/src/core/lib/iomgr/call_combiner.cc +28 -10
  213. data/src/core/lib/iomgr/combiner.cc +6 -21
  214. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
  215. data/src/core/lib/iomgr/error.cc +113 -52
  216. data/src/core/lib/iomgr/error.h +50 -9
  217. data/src/core/lib/iomgr/error_cfstream.cc +5 -0
  218. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
  219. data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
  220. data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
  221. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  222. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  223. data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
  224. data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
  225. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  226. data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
  227. data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
  228. data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
  229. data/src/core/lib/iomgr/exec_ctx.cc +1 -9
  230. data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
  231. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
  232. data/src/core/lib/iomgr/executor.cc +6 -20
  233. data/src/core/lib/iomgr/iomgr.cc +3 -1
  234. data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
  235. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  236. data/src/core/lib/iomgr/load_file.cc +2 -2
  237. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  238. data/src/core/lib/iomgr/pollset_custom.cc +1 -1
  239. data/src/core/lib/iomgr/pollset_custom.h +1 -1
  240. data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
  241. data/src/core/lib/iomgr/resource_quota.cc +13 -11
  242. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
  243. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  244. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
  246. data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
  247. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
  248. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  249. data/src/core/lib/iomgr/tcp_posix.cc +4 -5
  250. data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
  251. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
  252. data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
  253. data/src/core/lib/iomgr/tcp_windows.cc +2 -2
  254. data/src/core/lib/iomgr/timer_generic.cc +13 -13
  255. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  256. data/src/core/lib/json/json_util.cc +68 -0
  257. data/src/core/lib/json/json_util.h +57 -99
  258. data/src/core/lib/json/json_writer.cc +0 -3
  259. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  260. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  261. data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
  262. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
  263. data/src/core/lib/security/context/security_context.cc +4 -2
  264. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  265. data/src/core/lib/security/credentials/credentials.cc +4 -2
  266. data/src/core/lib/security/credentials/credentials.h +6 -1
  267. data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
  268. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  269. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
  270. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
  271. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  272. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  273. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  274. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  275. data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
  276. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
  277. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
  278. data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
  279. data/src/core/lib/security/transport/security_handshaker.cc +73 -43
  280. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  281. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  282. data/src/core/lib/slice/slice.cc +0 -16
  283. data/src/core/lib/slice/slice_api.cc +39 -0
  284. data/src/core/lib/slice/slice_buffer.cc +5 -5
  285. data/src/core/lib/slice/slice_intern.cc +8 -13
  286. data/src/core/lib/slice/slice_internal.h +1 -244
  287. data/src/core/lib/slice/slice_refcount.cc +17 -0
  288. data/src/core/lib/slice/slice_refcount.h +121 -0
  289. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  290. data/src/core/lib/slice/slice_split.cc +100 -0
  291. data/src/core/lib/slice/slice_split.h +40 -0
  292. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  293. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  294. data/src/core/lib/slice/static_slice.cc +529 -0
  295. data/src/core/lib/slice/static_slice.h +331 -0
  296. data/src/core/lib/surface/builtins.cc +49 -0
  297. data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
  298. data/src/core/lib/surface/call.cc +103 -120
  299. data/src/core/lib/surface/call.h +0 -6
  300. data/src/core/lib/surface/channel.cc +19 -32
  301. data/src/core/lib/surface/channel.h +0 -9
  302. data/src/core/lib/surface/channel_init.cc +23 -76
  303. data/src/core/lib/surface/channel_init.h +52 -44
  304. data/src/core/lib/surface/completion_queue.cc +6 -5
  305. data/src/core/lib/surface/init.cc +0 -39
  306. data/src/core/lib/surface/init_secure.cc +17 -14
  307. data/src/core/lib/surface/lame_client.cc +18 -11
  308. data/src/core/lib/surface/lame_client.h +1 -1
  309. data/src/core/lib/surface/server.cc +25 -17
  310. data/src/core/lib/surface/server.h +17 -10
  311. data/src/core/lib/surface/validate_metadata.cc +5 -2
  312. data/src/core/lib/surface/version.cc +2 -2
  313. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  314. data/src/core/lib/transport/error_utils.cc +42 -17
  315. data/src/core/lib/transport/error_utils.h +1 -1
  316. data/src/core/lib/transport/metadata.cc +31 -10
  317. data/src/core/lib/transport/metadata.h +2 -1
  318. data/src/core/lib/transport/metadata_batch.cc +35 -371
  319. data/src/core/lib/transport/metadata_batch.h +905 -71
  320. data/src/core/lib/transport/parsed_metadata.h +263 -0
  321. data/src/core/lib/transport/pid_controller.cc +4 -4
  322. data/src/core/lib/transport/static_metadata.cc +714 -846
  323. data/src/core/lib/transport/static_metadata.h +115 -379
  324. data/src/core/lib/transport/status_metadata.cc +1 -0
  325. data/src/core/lib/transport/transport.cc +4 -5
  326. data/src/core/lib/transport/transport_op_string.cc +40 -20
  327. data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
  328. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
  329. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  330. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  331. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
  332. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  335. data/src/core/tsi/fake_transport_security.cc +15 -7
  336. data/src/core/tsi/local_transport_security.cc +36 -73
  337. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
  338. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  339. data/src/core/tsi/ssl_transport_security.cc +10 -2
  340. data/src/core/tsi/transport_security.cc +12 -0
  341. data/src/core/tsi/transport_security.h +16 -1
  342. data/src/core/tsi/transport_security_interface.h +26 -0
  343. data/src/ruby/ext/grpc/extconf.rb +12 -9
  344. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  345. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  346. data/src/ruby/lib/grpc/version.rb +1 -1
  347. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  348. data/src/ruby/spec/client_server_spec.rb +1 -1
  349. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  350. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
  351. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  352. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
  353. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
  354. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
  355. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  356. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  358. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  359. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  360. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  361. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
  362. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  363. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  364. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  365. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  366. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
  367. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  368. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
  369. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
  370. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
  371. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
  372. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
  373. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
  374. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
  375. data/third_party/re2/re2/compile.cc +91 -109
  376. data/third_party/re2/re2/dfa.cc +27 -39
  377. data/third_party/re2/re2/filtered_re2.cc +18 -2
  378. data/third_party/re2/re2/filtered_re2.h +10 -5
  379. data/third_party/re2/re2/nfa.cc +1 -1
  380. data/third_party/re2/re2/parse.cc +42 -23
  381. data/third_party/re2/re2/perl_groups.cc +34 -34
  382. data/third_party/re2/re2/prefilter.cc +3 -2
  383. data/third_party/re2/re2/prog.cc +182 -4
  384. data/third_party/re2/re2/prog.h +28 -9
  385. data/third_party/re2/re2/re2.cc +87 -118
  386. data/third_party/re2/re2/re2.h +156 -141
  387. data/third_party/re2/re2/regexp.cc +12 -5
  388. data/third_party/re2/re2/regexp.h +8 -2
  389. data/third_party/re2/re2/set.cc +31 -9
  390. data/third_party/re2/re2/set.h +9 -4
  391. data/third_party/re2/re2/simplify.cc +11 -3
  392. data/third_party/re2/re2/tostring.cc +1 -1
  393. data/third_party/re2/re2/walker-inl.h +1 -1
  394. data/third_party/re2/util/mutex.h +2 -2
  395. data/third_party/re2/util/pcre.h +3 -3
  396. metadata +78 -66
  397. data/include/grpc/event_engine/slice_allocator.h +0 -71
  398. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  399. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  400. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  401. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  402. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  403. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  404. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
  405. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  406. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  407. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  408. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  409. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
  410. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
  411. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  412. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  413. data/src/core/lib/iomgr/udp_server.cc +0 -747
  414. data/src/core/lib/iomgr/udp_server.h +0 -103
  415. data/src/core/lib/transport/authority_override.cc +0 -40
  416. data/src/core/lib/transport/authority_override.h +0 -37
@@ -237,22 +237,21 @@ grpc_transport_op* grpc_make_transport_op(grpc_closure* on_complete) {
237
237
 
238
238
  struct made_transport_stream_op {
239
239
  grpc_closure outer_on_complete;
240
- grpc_closure* inner_on_complete;
240
+ grpc_closure* inner_on_complete = nullptr;
241
241
  grpc_transport_stream_op_batch op;
242
- grpc_transport_stream_op_batch_payload payload;
242
+ grpc_transport_stream_op_batch_payload payload{nullptr};
243
243
  };
244
244
  static void destroy_made_transport_stream_op(void* arg,
245
245
  grpc_error_handle error) {
246
246
  made_transport_stream_op* op = static_cast<made_transport_stream_op*>(arg);
247
247
  grpc_closure* c = op->inner_on_complete;
248
- gpr_free(op);
248
+ delete op;
249
249
  grpc_core::Closure::Run(DEBUG_LOCATION, c, GRPC_ERROR_REF(error));
250
250
  }
251
251
 
252
252
  grpc_transport_stream_op_batch* grpc_make_transport_stream_op(
253
253
  grpc_closure* on_complete) {
254
- made_transport_stream_op* op =
255
- static_cast<made_transport_stream_op*>(gpr_zalloc(sizeof(*op)));
254
+ made_transport_stream_op* op = new made_transport_stream_op();
256
255
  op->op.payload = &op->payload;
257
256
  GRPC_CLOSURE_INIT(&op->outer_on_complete, destroy_made_transport_stream_op,
258
257
  op, grpc_schedule_on_exec_ctx);
@@ -40,27 +40,47 @@
40
40
  /* These routines are here to facilitate debugging - they produce string
41
41
  representations of various transport data structures */
42
42
 
43
- static void put_metadata(grpc_mdelem md, std::vector<std::string>* out) {
44
- out->push_back("key=");
45
- char* dump = grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
46
- out->push_back(dump);
47
- gpr_free(dump);
48
- out->push_back(" value=");
49
- dump = grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
50
- out->push_back(dump);
51
- gpr_free(dump);
52
- }
53
-
54
- static void put_metadata_list(grpc_metadata_batch md,
43
+ namespace {
44
+ class MetadataListEncoder {
45
+ public:
46
+ explicit MetadataListEncoder(std::vector<std::string>* out) : out_(out) {}
47
+ void Encode(const grpc_mdelem& md) {
48
+ MaybeAddComma();
49
+ out_->push_back("key=");
50
+ char* dump = grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
51
+ out_->push_back(dump);
52
+ gpr_free(dump);
53
+ out_->push_back(" value=");
54
+ dump = grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
55
+ out_->push_back(dump);
56
+ gpr_free(dump);
57
+ }
58
+
59
+ void Encode(grpc_core::GrpcTimeoutMetadata, grpc_millis deadline) {
60
+ MaybeAddComma();
61
+ out_->push_back(absl::StrFormat("deadline=%" PRId64, deadline));
62
+ }
63
+
64
+ template <typename Which>
65
+ void Encode(Which, typename Which::ValueType value) {
66
+ MaybeAddComma();
67
+ out_->push_back(
68
+ absl::StrCat(Which::key(), "=", Which::DisplayValue(value)));
69
+ }
70
+
71
+ private:
72
+ void MaybeAddComma() {
73
+ if (out_->size() != initial_size_) out_->push_back(", ");
74
+ }
75
+ std::vector<std::string>* const out_;
76
+ const size_t initial_size_ = out_->size();
77
+ };
78
+ } // namespace
79
+
80
+ static void put_metadata_list(const grpc_metadata_batch& md,
55
81
  std::vector<std::string>* out) {
56
- grpc_linked_mdelem* m;
57
- for (m = md.list.head; m != nullptr; m = m->next) {
58
- if (m != md.list.head) out->push_back(", ");
59
- put_metadata(m->md, out);
60
- }
61
- if (md.deadline != GRPC_MILLIS_INF_FUTURE) {
62
- out->push_back(absl::StrFormat(" deadline=%" PRId64, md.deadline));
63
- }
82
+ MetadataListEncoder encoder(out);
83
+ md.Encode(&encoder);
64
84
  }
65
85
 
66
86
  std::string grpc_transport_stream_op_batch_string(
@@ -21,13 +21,10 @@
21
21
  #include <grpc/grpc.h>
22
22
 
23
23
  #include "src/core/lib/config/core_configuration.h"
24
+ #include "src/core/lib/surface/builtins.h"
24
25
 
25
- void grpc_http_filters_init(void);
26
- void grpc_http_filters_shutdown(void);
27
26
  void grpc_chttp2_plugin_init(void);
28
27
  void grpc_chttp2_plugin_shutdown(void);
29
- void grpc_deadline_filter_init(void);
30
- void grpc_deadline_filter_shutdown(void);
31
28
  void grpc_client_channel_init(void);
32
29
  void grpc_client_channel_shutdown(void);
33
30
  void grpc_inproc_plugin_init(void);
@@ -50,23 +47,19 @@ void grpc_resolver_dns_native_init(void);
50
47
  void grpc_resolver_dns_native_shutdown(void);
51
48
  void grpc_resolver_sockaddr_init(void);
52
49
  void grpc_resolver_sockaddr_shutdown(void);
53
- void grpc_client_idle_filter_init(void);
54
- void grpc_client_idle_filter_shutdown(void);
55
- void grpc_max_age_filter_init(void);
56
- void grpc_max_age_filter_shutdown(void);
57
50
  void grpc_message_size_filter_init(void);
58
51
  void grpc_message_size_filter_shutdown(void);
59
- void grpc_service_config_channel_arg_filter_init(void);
60
- void grpc_service_config_channel_arg_filter_shutdown(void);
61
- void grpc_client_authority_filter_init(void);
62
- void grpc_client_authority_filter_shutdown(void);
63
- void grpc_workaround_cronet_compression_filter_init(void);
64
- void grpc_workaround_cronet_compression_filter_shutdown(void);
65
52
  namespace grpc_core {
66
53
  void FaultInjectionFilterInit(void);
67
54
  void FaultInjectionFilterShutdown(void);
68
55
  void GrpcLbPolicyRingHashInit(void);
69
56
  void GrpcLbPolicyRingHashShutdown(void);
57
+ #ifndef GRPC_NO_RLS
58
+ void RlsLbPluginInit();
59
+ void RlsLbPluginShutdown();
60
+ #endif // !GRPC_NO_RLS
61
+ void ServiceConfigParserInit(void);
62
+ void ServiceConfigParserShutdown(void);
70
63
  } // namespace grpc_core
71
64
 
72
65
  #ifndef GRPC_NO_XDS
@@ -93,24 +86,27 @@ void grpc_resolver_xds_shutdown(void);
93
86
  namespace grpc_core {
94
87
  void GoogleCloud2ProdResolverInit();
95
88
  void GoogleCloud2ProdResolverShutdown();
96
- }
89
+ } // namespace grpc_core
90
+ #endif
91
+
92
+ #ifdef GPR_SUPPORT_BINDER_TRANSPORT
93
+ void grpc_resolver_binder_init(void);
94
+ void grpc_resolver_binder_shutdown(void);
97
95
  #endif
98
96
 
99
97
  void grpc_register_built_in_plugins(void) {
100
- grpc_register_plugin(grpc_http_filters_init,
101
- grpc_http_filters_shutdown);
102
- grpc_register_plugin(grpc_chttp2_plugin_init,
103
- grpc_chttp2_plugin_shutdown);
104
- grpc_register_plugin(grpc_deadline_filter_init,
105
- grpc_deadline_filter_shutdown);
106
- grpc_register_plugin(grpc_client_channel_init,
107
- grpc_client_channel_shutdown);
108
- grpc_register_plugin(grpc_inproc_plugin_init,
109
- grpc_inproc_plugin_shutdown);
110
- grpc_register_plugin(grpc_resolver_fake_init,
111
- grpc_resolver_fake_shutdown);
98
+ grpc_register_plugin(grpc_chttp2_plugin_init, grpc_chttp2_plugin_shutdown);
99
+ grpc_register_plugin(grpc_core::ServiceConfigParserInit,
100
+ grpc_core::ServiceConfigParserShutdown);
101
+ grpc_register_plugin(grpc_client_channel_init, grpc_client_channel_shutdown);
102
+ grpc_register_plugin(grpc_inproc_plugin_init, grpc_inproc_plugin_shutdown);
103
+ grpc_register_plugin(grpc_resolver_fake_init, grpc_resolver_fake_shutdown);
112
104
  grpc_register_plugin(grpc_lb_policy_grpclb_init,
113
105
  grpc_lb_policy_grpclb_shutdown);
106
+ #ifndef GRPC_NO_RLS
107
+ grpc_register_plugin(grpc_core::RlsLbPluginInit,
108
+ grpc_core::RlsLbPluginShutdown);
109
+ #endif // !GRPC_NO_RLS
114
110
  grpc_register_plugin(grpc_lb_policy_priority_init,
115
111
  grpc_lb_policy_priority_shutdown);
116
112
  grpc_register_plugin(grpc_lb_policy_weighted_target_init,
@@ -127,20 +123,10 @@ void grpc_register_built_in_plugins(void) {
127
123
  grpc_resolver_dns_native_shutdown);
128
124
  grpc_register_plugin(grpc_resolver_sockaddr_init,
129
125
  grpc_resolver_sockaddr_shutdown);
130
- grpc_register_plugin(grpc_client_idle_filter_init,
131
- grpc_client_idle_filter_shutdown);
132
- grpc_register_plugin(grpc_max_age_filter_init,
133
- grpc_max_age_filter_shutdown);
134
126
  grpc_register_plugin(grpc_message_size_filter_init,
135
127
  grpc_message_size_filter_shutdown);
136
128
  grpc_register_plugin(grpc_core::FaultInjectionFilterInit,
137
129
  grpc_core::FaultInjectionFilterShutdown);
138
- grpc_register_plugin(grpc_service_config_channel_arg_filter_init,
139
- grpc_service_config_channel_arg_filter_shutdown);
140
- grpc_register_plugin(grpc_client_authority_filter_init,
141
- grpc_client_authority_filter_shutdown);
142
- grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
143
- grpc_workaround_cronet_compression_filter_shutdown);
144
130
  #ifndef GRPC_NO_XDS
145
131
  grpc_register_plugin(grpc_core::XdsClientGlobalInit,
146
132
  grpc_core::XdsClientGlobalShutdown);
@@ -148,29 +134,64 @@ void grpc_register_built_in_plugins(void) {
148
134
  grpc_certificate_provider_registry_shutdown);
149
135
  grpc_register_plugin(grpc_core::FileWatcherCertificateProviderInit,
150
136
  grpc_core::FileWatcherCertificateProviderShutdown);
151
- grpc_register_plugin(grpc_lb_policy_cds_init,
152
- grpc_lb_policy_cds_shutdown);
137
+ grpc_register_plugin(grpc_lb_policy_cds_init, grpc_lb_policy_cds_shutdown);
153
138
  grpc_register_plugin(grpc_lb_policy_xds_cluster_impl_init,
154
139
  grpc_lb_policy_xds_cluster_impl_shutdown);
155
140
  grpc_register_plugin(grpc_lb_policy_xds_cluster_resolver_init,
156
141
  grpc_lb_policy_xds_cluster_resolver_shutdown);
157
142
  grpc_register_plugin(grpc_lb_policy_xds_cluster_manager_init,
158
143
  grpc_lb_policy_xds_cluster_manager_shutdown);
159
- grpc_register_plugin(grpc_resolver_xds_init,
160
- grpc_resolver_xds_shutdown);
144
+ grpc_register_plugin(grpc_resolver_xds_init, grpc_resolver_xds_shutdown);
161
145
  grpc_register_plugin(grpc_core::GoogleCloud2ProdResolverInit,
162
146
  grpc_core::GoogleCloud2ProdResolverShutdown);
163
147
  #endif
148
+
149
+ #ifdef GPR_SUPPORT_BINDER_TRANSPORT
150
+ grpc_register_plugin(grpc_resolver_binder_init,
151
+ grpc_resolver_binder_shutdown);
152
+ #endif
164
153
  }
165
154
 
166
155
  namespace grpc_core {
167
156
 
168
- extern void BuildClientChannelConfiguration(CoreConfiguration::Builder* builder);
169
- extern void SecurityRegisterHandshakerFactories(CoreConfiguration::Builder* builder);
157
+ extern void BuildClientChannelConfiguration(
158
+ CoreConfiguration::Builder* builder);
159
+ extern void SecurityRegisterHandshakerFactories(
160
+ CoreConfiguration::Builder* builder);
161
+ extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
162
+ extern void RegisterClientIdleFilter(CoreConfiguration::Builder* builder);
163
+ extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
164
+ extern void RegisterGrpcLbLoadReportingFilter(
165
+ CoreConfiguration::Builder* builder);
166
+ extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
167
+ extern void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder);
168
+ extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
169
+ extern void RegisterSecurityFilters(CoreConfiguration::Builder* builder);
170
+ extern void RegisterServiceConfigChannelArgFilter(
171
+ CoreConfiguration::Builder* builder);
172
+ #ifndef GRPC_NO_XDS
173
+ extern void RegisterXdsChannelStackModifier(
174
+ CoreConfiguration::Builder* builder);
175
+ #endif
170
176
 
171
177
  void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
172
178
  BuildClientChannelConfiguration(builder);
173
179
  SecurityRegisterHandshakerFactories(builder);
180
+ RegisterClientAuthorityFilter(builder);
181
+ RegisterClientIdleFilter(builder);
182
+ RegisterGrpcLbLoadReportingFilter(builder);
183
+ RegisterHttpFilters(builder);
184
+ RegisterMaxAgeFilter(builder);
185
+ RegisterDeadlineFilter(builder);
186
+ RegisterMessageSizeFilter(builder);
187
+ RegisterServiceConfigChannelArgFilter(builder);
188
+ #ifndef GRPC_NO_XDS
189
+ RegisterXdsChannelStackModifier(builder);
190
+ #endif
191
+ // Run last so it gets a consistent location.
192
+ // TODO(ctiller): Is this actually necessary?
193
+ RegisterSecurityFilters(builder);
194
+ RegisterBuiltins(builder);
174
195
  }
175
196
 
176
197
  } // namespace grpc_core
@@ -559,7 +559,9 @@ static grpc_status_code gsec_aes_gcm_aead_crypter_decrypt_iovec(
559
559
  if (!EVP_DecryptFinal_ex(aes_gcm_crypter->ctx, nullptr,
560
560
  &bytes_written_temp)) {
561
561
  aes_gcm_format_errors("Checking tag failed.", error_details);
562
- memset(plaintext_vec.iov_base, 0x00, plaintext_vec.iov_len);
562
+ if (plaintext_vec.iov_base != nullptr) {
563
+ memset(plaintext_vec.iov_base, 0x00, plaintext_vec.iov_len);
564
+ }
563
565
  return GRPC_STATUS_FAILED_PRECONDITION;
564
566
  }
565
567
  if (bytes_written_temp != 0) {
@@ -23,6 +23,8 @@
23
23
  #include <stdio.h>
24
24
  #include <stdlib.h>
25
25
 
26
+ #include <algorithm>
27
+
26
28
  #include <grpc/support/alloc.h>
27
29
  #include <grpc/support/log.h>
28
30
 
@@ -156,10 +158,10 @@ static tsi_result alts_protect(tsi_frame_protector* self,
156
158
  */
157
159
  if (impl->in_place_protect_bytes_buffered + impl->overhead_length <
158
160
  max_encrypted_payload_bytes(impl)) {
159
- size_t bytes_to_buffer = GPR_MIN(*unprotected_bytes_size,
160
- max_encrypted_payload_bytes(impl) -
161
- impl->in_place_protect_bytes_buffered -
162
- impl->overhead_length);
161
+ size_t bytes_to_buffer = std::min(
162
+ *unprotected_bytes_size, max_encrypted_payload_bytes(impl) -
163
+ impl->in_place_protect_bytes_buffered -
164
+ impl->overhead_length);
163
165
  *unprotected_bytes_size = bytes_to_buffer;
164
166
  if (bytes_to_buffer > 0) {
165
167
  memcpy(
@@ -266,9 +268,9 @@ static tsi_result alts_unprotect(tsi_frame_protector* self,
266
268
  if (!alts_is_frame_reader_done(impl->reader)) {
267
269
  ensure_buffer_size(impl);
268
270
  *protected_frames_bytes_size =
269
- GPR_MIN(impl->max_unprotected_frame_size -
270
- alts_get_output_bytes_read(impl->reader),
271
- *protected_frames_bytes_size);
271
+ std::min(impl->max_unprotected_frame_size -
272
+ alts_get_output_bytes_read(impl->reader),
273
+ *protected_frames_bytes_size);
272
274
  size_t read_frames_bytes_size = *protected_frames_bytes_size;
273
275
  if (!alts_read_frame_bytes(impl->reader, protected_frames_bytes,
274
276
  &read_frames_bytes_size)) {
@@ -290,7 +292,7 @@ static tsi_result alts_unprotect(tsi_frame_protector* self,
290
292
  return result;
291
293
  }
292
294
  }
293
- size_t bytes_to_write = GPR_MIN(
295
+ size_t bytes_to_write = std::min(
294
296
  *unprotected_bytes_size, alts_get_output_bytes_read(impl->reader) -
295
297
  impl->in_place_unprotect_bytes_processed -
296
298
  impl->overhead_length);
@@ -368,8 +370,7 @@ tsi_result alts_create_frame_protector(const uint8_t* key, size_t key_size,
368
370
  return TSI_INTERNAL_ERROR;
369
371
  }
370
372
  char* error_details = nullptr;
371
- alts_frame_protector* impl =
372
- static_cast<alts_frame_protector*>(gpr_zalloc(sizeof(*impl)));
373
+ alts_frame_protector* impl = grpc_core::Zalloc<alts_frame_protector>();
373
374
  grpc_status_code status = create_alts_crypters(
374
375
  key, key_size, is_client, is_rekey, impl, &error_details);
375
376
  if (status != GRPC_STATUS_OK) {
@@ -385,9 +386,9 @@ tsi_result alts_create_frame_protector(const uint8_t* key, size_t key_size,
385
386
  size_t max_protected_frame_size_to_set = kDefaultFrameLength;
386
387
  if (max_protected_frame_size != nullptr) {
387
388
  *max_protected_frame_size =
388
- GPR_MIN(*max_protected_frame_size, kMaxFrameLength);
389
+ std::min(*max_protected_frame_size, kMaxFrameLength);
389
390
  *max_protected_frame_size =
390
- GPR_MAX(*max_protected_frame_size, kMinFrameLength);
391
+ std::max(*max_protected_frame_size, kMinFrameLength);
391
392
  max_protected_frame_size_to_set = *max_protected_frame_size;
392
393
  }
393
394
  impl->max_protected_frame_size = max_protected_frame_size_to_set;
@@ -24,10 +24,12 @@
24
24
  #include <stdint.h>
25
25
  #include <string.h>
26
26
 
27
+ #include <algorithm>
28
+
27
29
  #include <grpc/support/alloc.h>
28
30
  #include <grpc/support/log.h>
29
31
 
30
- #include "src/core/lib/gpr/useful.h"
32
+ #include "src/core/lib/gprpp/memory.h"
31
33
 
32
34
  /* Use little endian to interpret a string of bytes as uint32_t. */
33
35
  static uint32_t load_32_le(const unsigned char* buffer) {
@@ -47,9 +49,7 @@ static void store_32_le(uint32_t value, unsigned char* buffer) {
47
49
 
48
50
  /* Frame writer implementation. */
49
51
  alts_frame_writer* alts_create_frame_writer() {
50
- alts_frame_writer* writer =
51
- static_cast<alts_frame_writer*>(gpr_zalloc(sizeof(*writer)));
52
- return writer;
52
+ return grpc_core::Zalloc<alts_frame_writer>();
53
53
  }
54
54
 
55
55
  bool alts_reset_frame_writer(alts_frame_writer* writer,
@@ -82,8 +82,8 @@ bool alts_write_frame_bytes(alts_frame_writer* writer, unsigned char* output,
82
82
  /* Write some header bytes, if needed. */
83
83
  if (writer->header_bytes_written != sizeof(writer->header_buffer)) {
84
84
  size_t bytes_to_write =
85
- GPR_MIN(*bytes_size,
86
- sizeof(writer->header_buffer) - writer->header_bytes_written);
85
+ std::min(*bytes_size,
86
+ sizeof(writer->header_buffer) - writer->header_bytes_written);
87
87
  memcpy(output, writer->header_buffer + writer->header_bytes_written,
88
88
  bytes_to_write);
89
89
  bytes_written += bytes_to_write;
@@ -97,7 +97,7 @@ bool alts_write_frame_bytes(alts_frame_writer* writer, unsigned char* output,
97
97
  }
98
98
  /* Write some non-header bytes. */
99
99
  size_t bytes_to_write =
100
- GPR_MIN(writer->input_size - writer->input_bytes_written, *bytes_size);
100
+ std::min(writer->input_size - writer->input_bytes_written, *bytes_size);
101
101
  memcpy(output, writer->input_buffer, bytes_to_write);
102
102
  writer->input_buffer += bytes_to_write;
103
103
  bytes_written += bytes_to_write;
@@ -120,8 +120,7 @@ void alts_destroy_frame_writer(alts_frame_writer* writer) { gpr_free(writer); }
120
120
 
121
121
  /* Frame reader implementation. */
122
122
  alts_frame_reader* alts_create_frame_reader() {
123
- alts_frame_reader* reader =
124
- static_cast<alts_frame_reader*>(gpr_zalloc(sizeof(*reader)));
123
+ alts_frame_reader* reader = grpc_core::Zalloc<alts_frame_reader>();
125
124
  return reader;
126
125
  }
127
126
 
@@ -167,7 +166,7 @@ bool alts_read_frame_bytes(alts_frame_reader* reader,
167
166
  size_t bytes_processed = 0;
168
167
  /* Process the header, if needed. */
169
168
  if (reader->header_bytes_read != sizeof(reader->header_buffer)) {
170
- size_t bytes_to_write = GPR_MIN(
169
+ size_t bytes_to_write = std::min(
171
170
  *bytes_size, sizeof(reader->header_buffer) - reader->header_bytes_read);
172
171
  memcpy(reader->header_buffer + reader->header_bytes_read, bytes,
173
172
  bytes_to_write);
@@ -199,7 +198,7 @@ bool alts_read_frame_bytes(alts_frame_reader* reader,
199
198
  reader->bytes_remaining = frame_length - kFrameMessageTypeFieldSize;
200
199
  }
201
200
  /* Process the non-header bytes. */
202
- size_t bytes_to_write = GPR_MIN(*bytes_size, reader->bytes_remaining);
201
+ size_t bytes_to_write = std::min(*bytes_size, reader->bytes_remaining);
203
202
  memcpy(reader->output_buffer, bytes, bytes_to_write);
204
203
  reader->output_buffer += bytes_to_write;
205
204
  bytes_processed += bytes_to_write;
@@ -178,8 +178,7 @@ static void handle_response_done(alts_grpc_handshaker_client* client,
178
178
  const unsigned char* bytes_to_send,
179
179
  size_t bytes_to_send_size,
180
180
  tsi_handshaker_result* result) {
181
- recv_message_result* p =
182
- static_cast<recv_message_result*>(gpr_zalloc(sizeof(*p)));
181
+ recv_message_result* p = grpc_core::Zalloc<recv_message_result>();
183
182
  p->status = status;
184
183
  p->bytes_to_send = bytes_to_send;
185
184
  p->bytes_to_send_size = bytes_to_send_size;
@@ -32,6 +32,7 @@
32
32
  #include <grpc/support/sync.h>
33
33
  #include <grpc/support/thd_id.h>
34
34
 
35
+ #include "src/core/lib/gprpp/memory.h"
35
36
  #include "src/core/lib/gprpp/sync.h"
36
37
  #include "src/core/lib/gprpp/thd.h"
37
38
  #include "src/core/lib/iomgr/closure.h"
@@ -151,6 +152,13 @@ static tsi_result handshaker_result_extract_peer(
151
152
  return ok;
152
153
  }
153
154
 
155
+ static tsi_result handshaker_result_get_frame_protector_type(
156
+ const tsi_handshaker_result* /*self*/,
157
+ tsi_frame_protector_type* frame_protector_type) {
158
+ *frame_protector_type = TSI_FRAME_PROTECTOR_NORMAL_OR_ZERO_COPY;
159
+ return TSI_OK;
160
+ }
161
+
154
162
  static tsi_result handshaker_result_create_zero_copy_grpc_protector(
155
163
  const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
156
164
  tsi_zero_copy_grpc_protector** protector) {
@@ -247,9 +255,11 @@ static void handshaker_result_destroy(tsi_handshaker_result* self) {
247
255
 
248
256
  static const tsi_handshaker_result_vtable result_vtable = {
249
257
  handshaker_result_extract_peer,
258
+ handshaker_result_get_frame_protector_type,
250
259
  handshaker_result_create_zero_copy_grpc_protector,
251
260
  handshaker_result_create_frame_protector,
252
- handshaker_result_get_unused_bytes, handshaker_result_destroy};
261
+ handshaker_result_get_unused_bytes,
262
+ handshaker_result_destroy};
253
263
 
254
264
  tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
255
265
  bool is_client,
@@ -306,7 +316,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
306
316
  // We don't check if local service account is empty here
307
317
  // because local identity could be empty in certain situations.
308
318
  alts_tsi_handshaker_result* sresult =
309
- static_cast<alts_tsi_handshaker_result*>(gpr_zalloc(sizeof(*sresult)));
319
+ grpc_core::Zalloc<alts_tsi_handshaker_result>();
310
320
  sresult->key_data =
311
321
  static_cast<char*>(gpr_zalloc(kAltsAes128GcmRekeyKeyLength));
312
322
  memcpy(sresult->key_data, key_data.data, kAltsAes128GcmRekeyKeyLength);
@@ -39,7 +39,7 @@ static void ensure_iovec_buf_size(alts_grpc_record_protocol* rp,
39
39
  return;
40
40
  }
41
41
  /* At least double the iovec buffer size. */
42
- rp->iovec_buf_length = GPR_MAX(sb->count, 2 * rp->iovec_buf_length);
42
+ rp->iovec_buf_length = std::max(sb->count, 2 * rp->iovec_buf_length);
43
43
  rp->iovec_buf = static_cast<iovec_t*>(
44
44
  gpr_realloc(rp->iovec_buf, rp->iovec_buf_length * sizeof(iovec_t)));
45
45
  }
@@ -278,9 +278,9 @@ tsi_result alts_zero_copy_grpc_protector_create(
278
278
  size_t max_protected_frame_size_to_set = kDefaultFrameLength;
279
279
  if (max_protected_frame_size != nullptr) {
280
280
  *max_protected_frame_size =
281
- GPR_MIN(*max_protected_frame_size, kMaxFrameLength);
281
+ std::min(*max_protected_frame_size, kMaxFrameLength);
282
282
  *max_protected_frame_size =
283
- GPR_MAX(*max_protected_frame_size, kMinFrameLength);
283
+ std::max(*max_protected_frame_size, kMinFrameLength);
284
284
  max_protected_frame_size_to_set = *max_protected_frame_size;
285
285
  }
286
286
  impl->max_protected_frame_size = max_protected_frame_size_to_set;
@@ -27,6 +27,7 @@
27
27
  #include <grpc/support/log.h>
28
28
 
29
29
  #include "src/core/lib/gpr/useful.h"
30
+ #include "src/core/lib/gprpp/memory.h"
30
31
  #include "src/core/lib/slice/slice_internal.h"
31
32
  #include "src/core/tsi/transport_security_grpc.h"
32
33
 
@@ -416,8 +417,8 @@ static tsi_result fake_zero_copy_grpc_protector_protect(
416
417
  /* Protects each frame. */
417
418
  while (unprotected_slices->length > 0) {
418
419
  size_t frame_length =
419
- GPR_MIN(impl->max_frame_size,
420
- unprotected_slices->length + TSI_FAKE_FRAME_HEADER_SIZE);
420
+ std::min(impl->max_frame_size,
421
+ unprotected_slices->length + TSI_FAKE_FRAME_HEADER_SIZE);
421
422
  grpc_slice slice = GRPC_SLICE_MALLOC(TSI_FAKE_FRAME_HEADER_SIZE);
422
423
  store32_little_endian(static_cast<uint32_t>(frame_length),
423
424
  GRPC_SLICE_START_PTR(slice));
@@ -498,6 +499,7 @@ struct fake_handshaker_result {
498
499
  unsigned char* unused_bytes;
499
500
  size_t unused_bytes_size;
500
501
  };
502
+
501
503
  static tsi_result fake_handshaker_result_extract_peer(
502
504
  const tsi_handshaker_result* /*self*/, tsi_peer* peer) {
503
505
  /* Construct a tsi_peer with 1 property: certificate type, security_level. */
@@ -514,6 +516,13 @@ static tsi_result fake_handshaker_result_extract_peer(
514
516
  return result;
515
517
  }
516
518
 
519
+ static tsi_result fake_handshaker_result_get_frame_protector_type(
520
+ const tsi_handshaker_result* /*self*/,
521
+ tsi_frame_protector_type* frame_protector_type) {
522
+ *frame_protector_type = TSI_FRAME_PROTECTOR_NORMAL_OR_ZERO_COPY;
523
+ return TSI_OK;
524
+ }
525
+
517
526
  static tsi_result fake_handshaker_result_create_zero_copy_grpc_protector(
518
527
  const tsi_handshaker_result* /*self*/,
519
528
  size_t* max_output_protected_frame_size,
@@ -549,6 +558,7 @@ static void fake_handshaker_result_destroy(tsi_handshaker_result* self) {
549
558
 
550
559
  static const tsi_handshaker_result_vtable handshaker_result_vtable = {
551
560
  fake_handshaker_result_extract_peer,
561
+ fake_handshaker_result_get_frame_protector_type,
552
562
  fake_handshaker_result_create_zero_copy_grpc_protector,
553
563
  fake_handshaker_result_create_frame_protector,
554
564
  fake_handshaker_result_get_unused_bytes,
@@ -562,8 +572,7 @@ static tsi_result fake_handshaker_result_create(
562
572
  handshaker_result == nullptr) {
563
573
  return TSI_INVALID_ARGUMENT;
564
574
  }
565
- fake_handshaker_result* result =
566
- static_cast<fake_handshaker_result*>(gpr_zalloc(sizeof(*result)));
575
+ fake_handshaker_result* result = grpc_core::Zalloc<fake_handshaker_result>();
567
576
  result->base.vtable = &handshaker_result_vtable;
568
577
  if (unused_bytes_size > 0) {
569
578
  result->unused_bytes =
@@ -755,8 +764,7 @@ static const tsi_handshaker_vtable handshaker_vtable = {
755
764
  };
756
765
 
757
766
  tsi_handshaker* tsi_create_fake_handshaker(int is_client) {
758
- tsi_fake_handshaker* impl =
759
- static_cast<tsi_fake_handshaker*>(gpr_zalloc(sizeof(*impl)));
767
+ tsi_fake_handshaker* impl = grpc_core::Zalloc<tsi_fake_handshaker>();
760
768
  impl->base.vtable = &handshaker_vtable;
761
769
  impl->is_client = is_client;
762
770
  impl->result = TSI_HANDSHAKE_IN_PROGRESS;
@@ -777,7 +785,7 @@ tsi_handshaker* tsi_create_fake_handshaker(int is_client) {
777
785
  tsi_frame_protector* tsi_create_fake_frame_protector(
778
786
  size_t* max_protected_frame_size) {
779
787
  tsi_fake_frame_protector* impl =
780
- static_cast<tsi_fake_frame_protector*>(gpr_zalloc(sizeof(*impl)));
788
+ grpc_core::Zalloc<tsi_fake_frame_protector>();
781
789
  impl->max_frame_size = (max_protected_frame_size == nullptr)
782
790
  ? TSI_FAKE_DEFAULT_FRAME_SIZE
783
791
  : *max_protected_frame_size;