grpc 1.46.3 → 1.47.0

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

Potentially problematic release.


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

Files changed (481) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +49 -97
  3. data/include/grpc/event_engine/event_engine.h +42 -7
  4. data/include/grpc/event_engine/memory_allocator.h +0 -15
  5. data/include/grpc/event_engine/port.h +1 -1
  6. data/include/grpc/event_engine/slice.h +286 -0
  7. data/include/grpc/event_engine/slice_buffer.h +112 -0
  8. data/include/grpc/grpc_security.h +11 -0
  9. data/include/grpc/impl/codegen/port_platform.h +100 -36
  10. data/include/grpc/impl/codegen/slice.h +1 -1
  11. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
  12. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
  13. data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
  14. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
  16. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
  18. data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
  19. data/src/core/ext/filters/client_channel/client_channel.h +26 -6
  20. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  21. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  22. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  23. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  24. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
  25. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  26. data/src/core/ext/filters/client_channel/config_selector.h +7 -5
  27. data/src/core/ext/filters/client_channel/connector.h +8 -2
  28. data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
  29. data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
  30. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  31. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
  32. data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
  33. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
  34. data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
  35. data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
  37. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
  47. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
  48. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
  50. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
  52. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
  53. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
  54. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
  55. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
  56. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
  57. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
  58. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
  60. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
  61. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
  62. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
  63. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
  64. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
  65. data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
  66. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  67. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
  68. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  69. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  70. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  71. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  72. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
  73. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  74. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
  75. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
  76. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  78. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
  82. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  83. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  84. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +30 -7
  85. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
  86. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
  87. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
  88. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
  89. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
  90. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
  91. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
  92. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
  93. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  94. data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
  95. data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
  96. data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
  97. data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
  98. data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
  99. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
  100. data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
  101. data/src/core/ext/filters/client_channel/subchannel.h +80 -20
  102. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
  103. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  104. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  105. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  106. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +16 -2
  107. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
  108. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
  109. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
  110. data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
  111. data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
  112. data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
  113. data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
  114. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
  115. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
  116. data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
  117. data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
  118. data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
  119. data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
  120. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
  121. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
  122. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  123. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
  124. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  125. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  126. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  127. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  128. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +69 -20
  129. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
  130. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  131. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  132. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
  133. data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
  134. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  135. data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
  136. data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
  137. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  138. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  139. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
  140. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  141. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
  142. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  143. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -3
  144. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  145. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
  146. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  147. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
  148. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
  149. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
  150. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
  151. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
  152. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  153. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
  154. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
  155. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  156. data/src/core/ext/transport/chttp2/transport/internal.h +24 -3
  157. data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
  158. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
  159. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  160. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  161. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  162. data/src/core/ext/transport/chttp2/transport/writing.cc +38 -2
  163. data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
  164. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  165. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  166. data/src/core/ext/xds/certificate_provider_store.cc +4 -2
  167. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  168. data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
  169. data/src/core/ext/xds/xds_certificate_provider.h +1 -1
  170. data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
  171. data/src/core/ext/xds/xds_client.cc +46 -22
  172. data/src/core/ext/xds/xds_cluster.cc +106 -16
  173. data/src/core/ext/xds/xds_cluster.h +3 -0
  174. data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
  175. data/src/core/ext/xds/xds_listener.cc +19 -9
  176. data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
  177. data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
  178. data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
  179. data/src/core/lib/avl/avl.h +3 -1
  180. data/src/core/lib/channel/call_finalization.h +4 -0
  181. data/src/core/lib/channel/call_tracer.h +8 -2
  182. data/src/core/lib/channel/channel_args.cc +41 -22
  183. data/src/core/lib/channel/channel_args.h +33 -3
  184. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
  185. data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
  186. data/src/core/lib/channel/channel_stack.cc +41 -3
  187. data/src/core/lib/channel/channel_stack.h +49 -3
  188. data/src/core/lib/channel/channel_stack_builder.cc +9 -19
  189. data/src/core/lib/channel/channel_stack_builder.h +15 -27
  190. data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
  191. data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
  192. data/src/core/lib/channel/channel_trace.cc +8 -13
  193. data/src/core/lib/channel/channel_trace.h +6 -3
  194. data/src/core/lib/channel/channelz.cc +8 -13
  195. data/src/core/lib/channel/channelz.h +13 -4
  196. data/src/core/lib/channel/channelz_registry.cc +7 -14
  197. data/src/core/lib/channel/channelz_registry.h +10 -9
  198. data/src/core/lib/channel/connected_channel.cc +21 -31
  199. data/src/core/lib/channel/connected_channel.h +1 -0
  200. data/src/core/lib/channel/promise_based_filter.cc +444 -189
  201. data/src/core/lib/channel/promise_based_filter.h +160 -27
  202. data/src/core/lib/channel/status_util.cc +2 -0
  203. data/src/core/lib/channel/status_util.h +0 -3
  204. data/src/core/lib/compression/compression_internal.cc +45 -10
  205. data/src/core/lib/compression/compression_internal.h +1 -1
  206. data/src/core/lib/config/core_configuration.cc +3 -0
  207. data/src/core/lib/config/core_configuration.h +2 -1
  208. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  209. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  210. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
  211. data/src/core/lib/event_engine/event_engine.cc +12 -2
  212. data/src/core/lib/event_engine/event_engine_factory.h +5 -0
  213. data/src/core/lib/event_engine/handle_containers.h +67 -0
  214. data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
  215. data/src/core/lib/event_engine/iomgr_engine.h +118 -0
  216. data/src/core/lib/event_engine/memory_allocator.cc +12 -4
  217. data/src/core/lib/event_engine/resolved_address.cc +4 -2
  218. data/src/core/lib/event_engine/slice.cc +102 -0
  219. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  220. data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
  221. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  222. data/src/core/lib/gpr/log.cc +5 -0
  223. data/src/core/lib/gpr/tls.h +3 -5
  224. data/src/core/lib/gprpp/bitset.h +5 -1
  225. data/src/core/lib/gprpp/chunked_vector.h +4 -0
  226. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  227. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  228. data/src/core/lib/gprpp/examine_stack.h +0 -1
  229. data/src/core/lib/gprpp/fork.cc +3 -6
  230. data/src/core/lib/gprpp/global_config.h +2 -4
  231. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  232. data/src/core/lib/gprpp/global_config_env.h +3 -1
  233. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  234. data/src/core/lib/gprpp/host_port.cc +2 -0
  235. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  236. data/src/core/lib/gprpp/match.h +2 -0
  237. data/src/core/lib/gprpp/memory.h +1 -5
  238. data/src/core/lib/gprpp/orphanable.h +1 -4
  239. data/src/core/lib/gprpp/ref_counted.h +1 -3
  240. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  241. data/src/core/lib/gprpp/stat.h +0 -2
  242. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  243. data/src/core/lib/gprpp/status_helper.cc +8 -4
  244. data/src/core/lib/gprpp/status_helper.h +4 -0
  245. data/src/core/lib/gprpp/sync.h +3 -1
  246. data/src/core/lib/gprpp/table.h +10 -0
  247. data/src/core/lib/gprpp/thd.h +2 -5
  248. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  249. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  250. data/src/core/lib/gprpp/time.cc +8 -0
  251. data/src/core/lib/gprpp/time.h +6 -1
  252. data/src/core/lib/gprpp/time_util.cc +4 -0
  253. data/src/core/lib/gprpp/time_util.h +1 -1
  254. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  255. data/src/core/lib/http/format_request.cc +29 -0
  256. data/src/core/lib/http/format_request.h +2 -0
  257. data/src/core/lib/http/httpcli.cc +88 -81
  258. data/src/core/lib/http/httpcli.h +39 -7
  259. data/src/core/lib/http/httpcli_security_connector.cc +3 -4
  260. data/src/core/lib/iomgr/endpoint.cc +4 -4
  261. data/src/core/lib/iomgr/endpoint.h +6 -4
  262. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
  263. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  264. data/src/core/lib/iomgr/ev_posix.cc +1 -4
  265. data/src/core/lib/iomgr/exec_ctx.h +1 -2
  266. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  267. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  268. data/src/core/lib/iomgr/iomgr.cc +0 -1
  269. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
  270. data/src/core/lib/iomgr/pollset_set.h +1 -2
  271. data/src/core/lib/iomgr/port.h +25 -6
  272. data/src/core/lib/iomgr/resolve_address.cc +8 -0
  273. data/src/core/lib/iomgr/resolve_address.h +21 -14
  274. data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
  275. data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
  276. data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
  277. data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
  278. data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
  279. data/src/core/lib/iomgr/sockaddr.h +2 -3
  280. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  281. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  282. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
  283. data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
  284. data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
  285. data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
  286. data/src/core/lib/iomgr/tcp_posix.cc +9 -27
  287. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
  288. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
  289. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
  290. data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
  291. data/src/core/lib/iomgr/tcp_windows.cc +7 -4
  292. data/src/core/lib/json/json.h +1 -2
  293. data/src/core/lib/json/json_reader.cc +9 -1
  294. data/src/core/lib/json/json_util.cc +7 -0
  295. data/src/core/lib/json/json_util.h +10 -1
  296. data/src/core/lib/json/json_writer.cc +6 -1
  297. data/src/core/lib/promise/activity.cc +1 -1
  298. data/src/core/lib/promise/activity.h +6 -6
  299. data/src/core/lib/promise/arena_promise.h +11 -1
  300. data/src/core/lib/promise/call_push_pull.h +4 -0
  301. data/src/core/lib/promise/context.h +1 -1
  302. data/src/core/lib/promise/detail/basic_seq.h +2 -2
  303. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  304. data/src/core/lib/promise/latch.h +0 -1
  305. data/src/core/lib/promise/loop.h +1 -0
  306. data/src/core/lib/promise/race.h +0 -1
  307. data/src/core/lib/promise/seq.h +0 -2
  308. data/src/core/lib/promise/sleep.cc +2 -0
  309. data/src/core/lib/promise/sleep.h +10 -0
  310. data/src/core/lib/promise/try_seq.h +2 -2
  311. data/src/core/lib/resolver/resolver_factory.h +1 -2
  312. data/src/core/lib/resolver/server_address.cc +9 -3
  313. data/src/core/lib/resolver/server_address.h +4 -4
  314. data/src/core/lib/resource_quota/api.cc +14 -1
  315. data/src/core/lib/resource_quota/api.h +4 -1
  316. data/src/core/lib/resource_quota/arena.cc +0 -6
  317. data/src/core/lib/resource_quota/arena.h +1 -2
  318. data/src/core/lib/resource_quota/memory_quota.cc +47 -5
  319. data/src/core/lib/resource_quota/memory_quota.h +24 -5
  320. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  321. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  322. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  323. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -0
  324. data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
  325. data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
  326. data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
  327. data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
  328. data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
  329. data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
  330. data/src/core/lib/security/credentials/credentials.h +17 -10
  331. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
  333. data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
  334. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
  335. data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
  336. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  337. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
  340. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  341. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
  342. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
  343. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
  344. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  345. data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
  346. data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
  347. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
  348. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  349. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
  350. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
  351. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
  352. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
  353. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
  354. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
  355. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
  356. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
  357. data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
  358. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  359. data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
  360. data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
  361. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  362. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  363. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  364. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  365. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
  366. data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
  367. data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
  368. data/src/core/lib/security/transport/security_handshaker.cc +5 -5
  369. data/src/core/lib/security/transport/security_handshaker.h +1 -1
  370. data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
  371. data/src/core/lib/service_config/service_config.h +4 -8
  372. data/src/core/lib/service_config/service_config_call_data.h +4 -1
  373. data/src/core/lib/service_config/service_config_impl.cc +7 -0
  374. data/src/core/lib/service_config/service_config_impl.h +9 -2
  375. data/src/core/lib/service_config/service_config_parser.cc +8 -0
  376. data/src/core/lib/service_config/service_config_parser.h +7 -0
  377. data/src/core/lib/slice/b64.cc +1 -1
  378. data/src/core/lib/slice/b64.h +2 -0
  379. data/src/core/lib/slice/percent_encoding.cc +4 -1
  380. data/src/core/lib/slice/percent_encoding.h +0 -6
  381. data/src/core/lib/slice/slice.cc +2 -1
  382. data/src/core/lib/slice/slice.h +10 -5
  383. data/src/core/lib/slice/slice_api.cc +1 -1
  384. data/src/core/lib/slice/slice_buffer.cc +50 -23
  385. data/src/core/lib/slice/slice_buffer.h +106 -0
  386. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  387. data/src/core/lib/slice/slice_internal.h +4 -3
  388. data/src/core/lib/slice/slice_refcount.h +2 -3
  389. data/src/core/lib/slice/slice_refcount_base.h +2 -3
  390. data/src/core/lib/slice/slice_split.cc +3 -0
  391. data/src/core/lib/slice/slice_split.h +0 -4
  392. data/src/core/lib/slice/slice_string_helpers.cc +4 -0
  393. data/src/core/lib/slice/slice_string_helpers.h +1 -4
  394. data/src/core/lib/surface/builtins.cc +7 -2
  395. data/src/core/lib/surface/byte_buffer.cc +7 -1
  396. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  397. data/src/core/lib/surface/call.cc +41 -26
  398. data/src/core/lib/surface/call.h +16 -2
  399. data/src/core/lib/surface/call_details.cc +4 -4
  400. data/src/core/lib/surface/call_log_batch.cc +7 -1
  401. data/src/core/lib/surface/call_test_only.h +4 -1
  402. data/src/core/lib/surface/channel.cc +179 -242
  403. data/src/core/lib/surface/channel.h +94 -57
  404. data/src/core/lib/surface/channel_init.h +2 -0
  405. data/src/core/lib/surface/channel_ping.cc +8 -2
  406. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  407. data/src/core/lib/surface/channel_stack_type.h +0 -2
  408. data/src/core/lib/surface/completion_queue.cc +14 -6
  409. data/src/core/lib/surface/completion_queue.h +5 -1
  410. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  411. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  412. data/src/core/lib/surface/event_string.cc +1 -7
  413. data/src/core/lib/surface/event_string.h +1 -1
  414. data/src/core/lib/surface/init.cc +17 -45
  415. data/src/core/lib/surface/init.h +0 -8
  416. data/src/core/lib/surface/lame_client.cc +64 -110
  417. data/src/core/lib/surface/lame_client.h +40 -2
  418. data/src/core/lib/surface/metadata_array.cc +2 -0
  419. data/src/core/lib/surface/server.cc +69 -56
  420. data/src/core/lib/surface/server.h +39 -9
  421. data/src/core/lib/surface/validate_metadata.cc +2 -5
  422. data/src/core/lib/surface/validate_metadata.h +3 -0
  423. data/src/core/lib/surface/version.cc +2 -2
  424. data/src/core/lib/transport/bdp_estimator.cc +3 -1
  425. data/src/core/lib/transport/bdp_estimator.h +2 -3
  426. data/src/core/lib/transport/byte_stream.cc +4 -3
  427. data/src/core/lib/transport/byte_stream.h +5 -1
  428. data/src/core/lib/transport/connectivity_state.cc +6 -4
  429. data/src/core/lib/transport/connectivity_state.h +2 -3
  430. data/src/core/lib/transport/error_utils.cc +4 -2
  431. data/src/core/lib/transport/error_utils.h +5 -1
  432. data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
  433. data/src/core/lib/{channel → transport}/handshaker.h +13 -6
  434. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  435. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  436. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  437. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
  438. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  439. data/src/core/lib/transport/metadata_batch.cc +287 -0
  440. data/src/core/lib/transport/metadata_batch.h +133 -264
  441. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  442. data/src/core/lib/transport/parsed_metadata.h +10 -3
  443. data/src/core/lib/transport/status_conversion.cc +2 -0
  444. data/src/core/lib/transport/status_conversion.h +2 -2
  445. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  446. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  447. data/src/core/lib/transport/timeout_encoding.cc +2 -6
  448. data/src/core/lib/transport/timeout_encoding.h +5 -1
  449. data/src/core/lib/transport/transport.cc +18 -17
  450. data/src/core/lib/transport/transport.h +28 -2
  451. data/src/core/lib/transport/transport_impl.h +10 -0
  452. data/src/core/lib/transport/transport_op_string.cc +9 -10
  453. data/src/core/lib/uri/uri_parser.cc +11 -3
  454. data/src/core/lib/uri/uri_parser.h +0 -2
  455. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
  456. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  457. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  458. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  459. data/src/ruby/ext/grpc/extconf.rb +2 -2
  460. data/src/ruby/lib/grpc/version.rb +1 -1
  461. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  462. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  463. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
  464. metadata +36 -29
  465. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  466. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  467. data/src/core/lib/event_engine/sockaddr.h +0 -44
  468. data/src/core/lib/gprpp/capture.h +0 -76
  469. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  470. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  471. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  472. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  473. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  474. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  475. data/src/core/lib/iomgr/event_engine/promise.h +0 -51
  476. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  477. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  478. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  479. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  480. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  481. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -30,6 +30,7 @@
30
30
  #include "src/core/lib/gprpp/ref_counted.h"
31
31
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
32
32
  #include "src/core/lib/gprpp/thd.h"
33
+ #include "src/core/lib/gprpp/unique_type_name.h"
33
34
  #include "src/core/lib/iomgr/load_file.h"
34
35
  #include "src/core/lib/iomgr/pollset_set.h"
35
36
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
@@ -62,10 +63,7 @@ struct grpc_tls_certificate_provider
62
63
  // used but they compare as equal (assuming other channel args match).
63
64
  int Compare(const grpc_tls_certificate_provider* other) const {
64
65
  GPR_ASSERT(other != nullptr);
65
- // Intentionally uses grpc_core::QsortCompare instead of strcmp as a safety
66
- // against different grpc_tls_certificate_provider types using the same
67
- // name.
68
- int r = grpc_core::QsortCompare(type(), other->type());
66
+ int r = type().Compare(other->type());
69
67
  if (r != 0) return r;
70
68
  return CompareImpl(other);
71
69
  }
@@ -74,7 +72,7 @@ struct grpc_tls_certificate_provider
74
72
  // implementation for down-casting purposes. Every provider implementation
75
73
  // should use a unique string instance, which should be returned by all
76
74
  // instances of that provider implementation.
77
- virtual const char* type() const = 0;
75
+ virtual grpc_core::UniqueTypeName type() const = 0;
78
76
 
79
77
  private:
80
78
  // Implementation for `Compare` method intended to be overridden by
@@ -99,7 +97,7 @@ class StaticDataCertificateProvider final
99
97
  return distributor_;
100
98
  }
101
99
 
102
- const char* type() const override { return "StaticData"; }
100
+ UniqueTypeName type() const override;
103
101
 
104
102
  private:
105
103
  struct WatcherInfo {
@@ -138,7 +136,7 @@ class FileWatcherCertificateProvider final
138
136
  return distributor_;
139
137
  }
140
138
 
141
- const char* type() const override { return "FileWatcher"; }
139
+ UniqueTypeName type() const override;
142
140
 
143
141
  private:
144
142
  struct WatcherInfo {
@@ -60,6 +60,11 @@ bool ExternalCertificateVerifier::Verify(
60
60
  return is_done;
61
61
  }
62
62
 
63
+ UniqueTypeName ExternalCertificateVerifier::type() const {
64
+ static UniqueTypeName::Factory kFactory("External");
65
+ return kFactory.Create();
66
+ }
67
+
63
68
  void ExternalCertificateVerifier::OnVerifyDone(
64
69
  grpc_tls_custom_verification_check_request* request, void* callback_arg,
65
70
  grpc_status_code status, const char* error_details) {
@@ -84,6 +89,15 @@ void ExternalCertificateVerifier::OnVerifyDone(
84
89
  }
85
90
  }
86
91
 
92
+ //
93
+ // NoOpCertificateVerifier
94
+ //
95
+
96
+ UniqueTypeName NoOpCertificateVerifier::type() const {
97
+ static UniqueTypeName::Factory kFactory("NoOp");
98
+ return kFactory.Create();
99
+ }
100
+
87
101
  //
88
102
  // HostNameCertificateVerifier
89
103
  //
@@ -142,7 +156,8 @@ bool HostNameCertificateVerifier::Verify(
142
156
  const char* common_name = request->peer_info.common_name;
143
157
  // We are using the target name sent from the client as a matcher to match
144
158
  // against identity name on the peer cert.
145
- if (VerifySubjectAlternativeName(common_name, std::string(target_host))) {
159
+ if (common_name != nullptr &&
160
+ VerifySubjectAlternativeName(common_name, std::string(target_host))) {
146
161
  return true; // synchronous check
147
162
  }
148
163
  }
@@ -151,6 +166,11 @@ bool HostNameCertificateVerifier::Verify(
151
166
  return true; // synchronous check
152
167
  }
153
168
 
169
+ UniqueTypeName HostNameCertificateVerifier::type() const {
170
+ static UniqueTypeName::Factory kFactory("Hostname");
171
+ return kFactory.Create();
172
+ }
173
+
154
174
  } // namespace grpc_core
155
175
 
156
176
  //
@@ -194,6 +214,11 @@ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_external_create(
194
214
  return new grpc_core::ExternalCertificateVerifier(external_verifier);
195
215
  }
196
216
 
217
+ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_no_op_create() {
218
+ grpc_core::ExecCtx exec_ctx;
219
+ return new grpc_core::NoOpCertificateVerifier();
220
+ }
221
+
197
222
  grpc_tls_certificate_verifier*
198
223
  grpc_tls_certificate_verifier_host_name_create() {
199
224
  grpc_core::ExecCtx exec_ctx;
@@ -29,6 +29,7 @@
29
29
  #include "src/core/lib/gprpp/ref_counted.h"
30
30
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
31
  #include "src/core/lib/gprpp/thd.h"
32
+ #include "src/core/lib/gprpp/unique_type_name.h"
32
33
  #include "src/core/lib/iomgr/load_file.h"
33
34
  #include "src/core/lib/iomgr/pollset_set.h"
34
35
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
@@ -57,7 +58,7 @@ struct grpc_tls_certificate_verifier
57
58
  // verifiers as effectively the same.
58
59
  int Compare(const grpc_tls_certificate_verifier* other) const {
59
60
  GPR_ASSERT(other != nullptr);
60
- int r = grpc_core::QsortCompare(type(), other->type());
61
+ int r = type().Compare(other->type());
61
62
  if (r != 0) return r;
62
63
  return CompareImpl(other);
63
64
  }
@@ -66,7 +67,7 @@ struct grpc_tls_certificate_verifier
66
67
  // implementation for down-casting purposes. Every verifier implementation
67
68
  // should use a unique string instance, which should be returned by all
68
69
  // instances of that verifier implementation.
69
- virtual const char* type() const = 0;
70
+ virtual grpc_core::UniqueTypeName type() const = 0;
70
71
 
71
72
  private:
72
73
  // Implementation for `Compare` method intended to be overridden by
@@ -99,7 +100,7 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
99
100
  external_verifier_->cancel(external_verifier_->user_data, request);
100
101
  }
101
102
 
102
- const char* type() const override { return "External"; }
103
+ UniqueTypeName type() const override;
103
104
 
104
105
  private:
105
106
  int CompareImpl(const grpc_tls_certificate_verifier* other) const override {
@@ -121,6 +122,29 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
121
122
  request_map_ ABSL_GUARDED_BY(mu_);
122
123
  };
123
124
 
125
+ // An internal verifier that won't perform any post-handshake checks.
126
+ // Note: using this solely without any other authentication mechanisms on the
127
+ // peer identity will leave your applications to the MITM(Man-In-The-Middle)
128
+ // attacks. Users should avoid doing so in production environments.
129
+ class NoOpCertificateVerifier : public grpc_tls_certificate_verifier {
130
+ public:
131
+ bool Verify(grpc_tls_custom_verification_check_request*,
132
+ std::function<void(absl::Status)>, absl::Status*) override {
133
+ return true; // synchronous check
134
+ };
135
+ void Cancel(grpc_tls_custom_verification_check_request*) override {}
136
+
137
+ UniqueTypeName type() const override;
138
+
139
+ private:
140
+ int CompareImpl(
141
+ const grpc_tls_certificate_verifier* /* other */) const override {
142
+ // No differentiating factor between different NoOpCertificateVerifier
143
+ // objects.
144
+ return 0;
145
+ }
146
+ };
147
+
124
148
  // An internal verifier that will perform hostname verification check.
125
149
  class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
126
150
  public:
@@ -129,7 +153,7 @@ class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
129
153
  absl::Status* sync_status) override;
130
154
  void Cancel(grpc_tls_custom_verification_check_request*) override {}
131
155
 
132
- const char* type() const override { return "Hostname"; }
156
+ UniqueTypeName type() const override;
133
157
 
134
158
  private:
135
159
  int CompareImpl(
@@ -106,6 +106,11 @@ TlsCredentials::create_security_connector(
106
106
  return sc;
107
107
  }
108
108
 
109
+ grpc_core::UniqueTypeName TlsCredentials::type() const {
110
+ static grpc_core::UniqueTypeName::Factory kFactory("Tls");
111
+ return kFactory.Create();
112
+ }
113
+
109
114
  int TlsCredentials::cmp_impl(const grpc_channel_credentials* other) const {
110
115
  const TlsCredentials* o = static_cast<const TlsCredentials*>(other);
111
116
  if (*options_ == *o->options_) return 0;
@@ -126,6 +131,11 @@ TlsServerCredentials::create_security_connector(
126
131
  CreateTlsServerSecurityConnector(this->Ref(), options_);
127
132
  }
128
133
 
134
+ grpc_core::UniqueTypeName TlsServerCredentials::type() const {
135
+ static grpc_core::UniqueTypeName::Factory kFactory("Tls");
136
+ return kFactory.Create();
137
+ }
138
+
129
139
  /** -- Wrapper APIs declared in grpc_security.h -- **/
130
140
 
131
141
  grpc_channel_credentials* grpc_tls_credentials_create(
@@ -38,7 +38,7 @@ class TlsCredentials final : public grpc_channel_credentials {
38
38
  const char* target_name, const grpc_channel_args* args,
39
39
  grpc_channel_args** new_args) override;
40
40
 
41
- const char* type() const override { return "Tls"; }
41
+ grpc_core::UniqueTypeName type() const override;
42
42
 
43
43
  grpc_tls_credentials_options* options() const { return options_.get(); }
44
44
 
@@ -57,7 +57,7 @@ class TlsServerCredentials final : public grpc_server_credentials {
57
57
  grpc_core::RefCountedPtr<grpc_server_security_connector>
58
58
  create_security_connector(const grpc_channel_args* /* args */) override;
59
59
 
60
- const char* type() const override { return "Tls"; }
60
+ grpc_core::UniqueTypeName type() const override;
61
61
 
62
62
  grpc_tls_credentials_options* options() const { return options_.get(); }
63
63
 
@@ -105,7 +105,10 @@ int XdsCertificateVerifier::CompareImpl(
105
105
  return cluster_name_.compare(o->cluster_name_);
106
106
  }
107
107
 
108
- const char* XdsCertificateVerifier::type() const { return "Xds"; }
108
+ UniqueTypeName XdsCertificateVerifier::type() const {
109
+ static UniqueTypeName::Factory kFactory("Xds");
110
+ return kFactory.Create();
111
+ }
109
112
 
110
113
  bool TestOnlyXdsVerifySubjectAlternativeNames(
111
114
  const char* const* subject_alternative_names,
@@ -182,7 +185,10 @@ XdsCredentials::create_security_connector(
182
185
  std::move(call_creds), target_name, temp_args.args, new_args);
183
186
  }
184
187
 
185
- const char* XdsCredentials::Type() { return "Xds"; }
188
+ UniqueTypeName XdsCredentials::Type() {
189
+ static UniqueTypeName::Factory kFactory("Xds");
190
+ return kFactory.Create();
191
+ }
186
192
 
187
193
  //
188
194
  // XdsServerCredentials
@@ -220,7 +226,10 @@ XdsServerCredentials::create_security_connector(const grpc_channel_args* args) {
220
226
  return fallback_credentials_->create_security_connector(args);
221
227
  }
222
228
 
223
- const char* XdsServerCredentials::Type() { return "Xds"; }
229
+ UniqueTypeName XdsServerCredentials::Type() {
230
+ static UniqueTypeName::Factory kFactory("Xds");
231
+ return kFactory.Create();
232
+ }
224
233
 
225
234
  } // namespace grpc_core
226
235
 
@@ -41,7 +41,7 @@ class XdsCertificateVerifier : public grpc_tls_certificate_verifier {
41
41
  absl::Status* sync_status) override;
42
42
  void Cancel(grpc_tls_custom_verification_check_request*) override;
43
43
 
44
- const char* type() const override;
44
+ UniqueTypeName type() const override;
45
45
 
46
46
  private:
47
47
  int CompareImpl(const grpc_tls_certificate_verifier* other) const override;
@@ -60,9 +60,9 @@ class XdsCredentials final : public grpc_channel_credentials {
60
60
  RefCountedPtr<grpc_call_credentials> call_creds, const char* target_name,
61
61
  const grpc_channel_args* args, grpc_channel_args** new_args) override;
62
62
 
63
- static const char* Type();
63
+ static UniqueTypeName Type();
64
64
 
65
- const char* type() const override { return Type(); }
65
+ UniqueTypeName type() const override { return Type(); }
66
66
 
67
67
  private:
68
68
  int cmp_impl(const grpc_channel_credentials* other) const override {
@@ -82,9 +82,9 @@ class XdsServerCredentials final : public grpc_server_credentials {
82
82
  RefCountedPtr<grpc_server_security_connector> create_security_connector(
83
83
  const grpc_channel_args* /* args */) override;
84
84
 
85
- static const char* Type();
85
+ static UniqueTypeName Type();
86
86
 
87
- const char* type() const override { return Type(); }
87
+ UniqueTypeName type() const override { return Type(); }
88
88
 
89
89
  private:
90
90
  RefCountedPtr<grpc_server_credentials> fallback_credentials_;
@@ -30,7 +30,6 @@
30
30
 
31
31
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
32
32
  #include "src/core/lib/channel/channel_args.h"
33
- #include "src/core/lib/channel/handshaker.h"
34
33
  #include "src/core/lib/gpr/string.h"
35
34
  #include "src/core/lib/gprpp/host_port.h"
36
35
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -39,6 +38,7 @@
39
38
  #include "src/core/lib/security/credentials/credentials.h"
40
39
  #include "src/core/lib/security/credentials/fake/fake_credentials.h"
41
40
  #include "src/core/lib/security/transport/security_handshaker.h"
41
+ #include "src/core/lib/transport/handshaker.h"
42
42
  #include "src/core/tsi/fake_transport_security.h"
43
43
 
44
44
  namespace {
@@ -23,9 +23,9 @@
23
23
 
24
24
  #include <grpc/grpc_security.h>
25
25
 
26
- #include "src/core/lib/channel/handshaker.h"
27
26
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
28
27
  #include "src/core/lib/security/security_connector/security_connector.h"
28
+ #include "src/core/lib/transport/handshaker.h"
29
29
 
30
30
  /* Creates a fake connector that emulates real channel security. */
31
31
  grpc_core::RefCountedPtr<grpc_channel_security_connector>
@@ -26,12 +26,12 @@
26
26
  #include <grpc/support/string_util.h>
27
27
 
28
28
  #include "src/core/lib/channel/channel_args.h"
29
- #include "src/core/lib/channel/handshaker.h"
30
29
  #include "src/core/lib/gpr/string.h"
31
30
  #include "src/core/lib/security/context/security_context.h"
32
31
  #include "src/core/lib/security/credentials/credentials.h"
33
32
  #include "src/core/lib/security/security_connector/security_connector.h"
34
33
  #include "src/core/lib/security/transport/security_handshaker.h"
34
+ #include "src/core/lib/transport/handshaker.h"
35
35
 
36
36
  grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount(
37
37
  false, "security_connector_refcount");
@@ -25,12 +25,12 @@
25
25
 
26
26
  #include <grpc/grpc_security.h>
27
27
 
28
- #include "src/core/lib/channel/handshaker.h"
29
28
  #include "src/core/lib/gprpp/ref_counted.h"
30
29
  #include "src/core/lib/iomgr/endpoint.h"
31
30
  #include "src/core/lib/iomgr/pollset.h"
32
31
  #include "src/core/lib/iomgr/tcp_server.h"
33
32
  #include "src/core/lib/promise/arena_promise.h"
33
+ #include "src/core/lib/transport/handshaker.h"
34
34
  #include "src/core/tsi/transport_security_interface.h"
35
35
 
36
36
  extern grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount;
@@ -30,7 +30,6 @@
30
30
  #include <grpc/support/log.h>
31
31
 
32
32
  #include "src/core/ext/transport/chttp2/alpn/alpn.h"
33
- #include "src/core/lib/channel/handshaker.h"
34
33
  #include "src/core/lib/gpr/string.h"
35
34
  #include "src/core/lib/gprpp/host_port.h"
36
35
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -42,6 +41,7 @@
42
41
  #include "src/core/lib/security/security_connector/load_system_roots.h"
43
42
  #include "src/core/lib/security/security_connector/ssl_utils.h"
44
43
  #include "src/core/lib/security/transport/security_handshaker.h"
44
+ #include "src/core/lib/transport/handshaker.h"
45
45
  #include "src/core/tsi/ssl_transport_security.h"
46
46
  #include "src/core/tsi/transport_security.h"
47
47
 
@@ -31,7 +31,6 @@
31
31
  #include "src/core/lib/channel/channel_stack.h"
32
32
  #include "src/core/lib/channel/promise_based_filter.h"
33
33
  #include "src/core/lib/gpr/string.h"
34
- #include "src/core/lib/gprpp/capture.h"
35
34
  #include "src/core/lib/iomgr/error.h"
36
35
  #include "src/core/lib/profiling/timers.h"
37
36
  #include "src/core/lib/promise/promise.h"
@@ -151,13 +150,12 @@ ArenaPromise<absl::StatusOr<CallArgs>> ClientAuthFilter::GetCallCredsMetadata(
151
150
  auto client_initial_metadata = std::move(call_args.client_initial_metadata);
152
151
  return TrySeq(
153
152
  creds->GetRequestMetadata(std::move(client_initial_metadata), &args_),
154
- Capture(
155
- [](CallArgs* rest_of_args, ClientMetadataHandle new_metadata) {
156
- rest_of_args->client_initial_metadata = std::move(new_metadata);
157
- return Immediate<absl::StatusOr<CallArgs>>(
158
- absl::StatusOr<CallArgs>(std::move(*rest_of_args)));
159
- },
160
- std::move(call_args)));
153
+ [call_args =
154
+ std::move(call_args)](ClientMetadataHandle new_metadata) mutable {
155
+ call_args.client_initial_metadata = std::move(new_metadata);
156
+ return Immediate<absl::StatusOr<CallArgs>>(
157
+ absl::StatusOr<CallArgs>(std::move(call_args)));
158
+ });
161
159
  }
162
160
 
163
161
  ArenaPromise<ServerMetadataHandle> ClientAuthFilter::MakeCallPromise(
@@ -20,6 +20,8 @@
20
20
 
21
21
  #include "src/core/lib/security/transport/secure_endpoint.h"
22
22
 
23
+ #include <limits.h>
24
+
23
25
  #include <new>
24
26
 
25
27
  #include <grpc/slice.h>
@@ -72,10 +74,15 @@ struct secure_endpoint {
72
74
  ->CreateMemoryOwner(absl::StrCat(grpc_endpoint_get_peer(transport),
73
75
  ":secure_endpoint"));
74
76
  self_reservation = memory_owner.MakeReservation(sizeof(*this));
75
- read_staging_buffer =
76
- memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
77
- write_staging_buffer =
78
- memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
77
+ if (zero_copy_protector) {
78
+ read_staging_buffer = grpc_empty_slice();
79
+ write_staging_buffer = grpc_empty_slice();
80
+ } else {
81
+ read_staging_buffer =
82
+ memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
83
+ write_staging_buffer =
84
+ memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
85
+ }
79
86
  has_posted_reclaimer.store(false, std::memory_order_relaxed);
80
87
  gpr_ref_init(&ref, 1);
81
88
  }
@@ -97,8 +104,8 @@ struct secure_endpoint {
97
104
  struct tsi_frame_protector* protector;
98
105
  struct tsi_zero_copy_grpc_protector* zero_copy_protector;
99
106
  gpr_mu protector_mu;
100
- absl::Mutex read_mu;
101
- absl::Mutex write_mu;
107
+ grpc_core::Mutex read_mu;
108
+ grpc_core::Mutex write_mu;
102
109
  /* saved upper level callbacks and user_data. */
103
110
  grpc_closure* read_cb = nullptr;
104
111
  grpc_closure* write_cb = nullptr;
@@ -229,7 +236,7 @@ static void on_read(void* user_data, grpc_error_handle error) {
229
236
  secure_endpoint* ep = static_cast<secure_endpoint*>(user_data);
230
237
 
231
238
  {
232
- absl::MutexLock l(&ep->read_mu);
239
+ grpc_core::MutexLock l(&ep->read_mu);
233
240
  uint8_t* cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
234
241
  uint8_t* end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
235
242
 
@@ -313,7 +320,8 @@ static void on_read(void* user_data, grpc_error_handle error) {
313
320
  }
314
321
 
315
322
  static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
316
- grpc_closure* cb, bool urgent) {
323
+ grpc_closure* cb, bool urgent,
324
+ int /*min_progress_size*/) {
317
325
  secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
318
326
  ep->read_cb = cb;
319
327
  ep->read_buffer = slices;
@@ -327,7 +335,8 @@ static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
327
335
  return;
328
336
  }
329
337
 
330
- grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read, urgent);
338
+ grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read, urgent,
339
+ /*min_progress_size=*/1);
331
340
  }
332
341
 
333
342
  static void flush_write_staging_buffer(secure_endpoint* ep, uint8_t** cur,
@@ -342,7 +351,8 @@ static void flush_write_staging_buffer(secure_endpoint* ep, uint8_t** cur,
342
351
  }
343
352
 
344
353
  static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
345
- grpc_closure* cb, void* arg) {
354
+ grpc_closure* cb, void* arg,
355
+ int /*max_frame_size*/) {
346
356
  GPR_TIMER_SCOPE("secure_endpoint.endpoint_write", 0);
347
357
 
348
358
  unsigned i;
@@ -350,7 +360,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
350
360
  secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
351
361
 
352
362
  {
353
- absl::MutexLock l(&ep->write_mu);
363
+ grpc_core::MutexLock l(&ep->write_mu);
354
364
  uint8_t* cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
355
365
  uint8_t* end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
356
366
 
@@ -435,7 +445,8 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
435
445
  return;
436
446
  }
437
447
 
438
- grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg);
448
+ grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg,
449
+ /*max_frame_size=*/INT_MAX);
439
450
  }
440
451
 
441
452
  static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) {
@@ -31,13 +31,13 @@
31
31
 
32
32
  #include "src/core/lib/channel/channel_args.h"
33
33
  #include "src/core/lib/channel/channelz.h"
34
- #include "src/core/lib/channel/handshaker.h"
35
34
  #include "src/core/lib/config/core_configuration.h"
36
35
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
37
36
  #include "src/core/lib/security/context/security_context.h"
38
37
  #include "src/core/lib/security/transport/secure_endpoint.h"
39
38
  #include "src/core/lib/security/transport/tsi_error.h"
40
39
  #include "src/core/lib/slice/slice_internal.h"
40
+ #include "src/core/lib/transport/handshaker.h"
41
41
  #include "src/core/tsi/transport_security_grpc.h"
42
42
 
43
43
  #define GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE 256
@@ -369,7 +369,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
369
369
  &on_handshake_data_received_from_peer_,
370
370
  &SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
371
371
  this, grpc_schedule_on_exec_ctx),
372
- /*urgent=*/true);
372
+ /*urgent=*/true, /*min_progress_size=*/1);
373
373
  return error;
374
374
  }
375
375
  if (result != TSI_OK) {
@@ -393,7 +393,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
393
393
  &on_handshake_data_sent_to_peer_,
394
394
  &SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler, this,
395
395
  grpc_schedule_on_exec_ctx),
396
- nullptr);
396
+ nullptr, /*max_frame_size=*/INT_MAX);
397
397
  } else if (handshaker_result == nullptr) {
398
398
  // There is nothing to send, but need to read from peer.
399
399
  grpc_endpoint_read(
@@ -402,7 +402,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
402
402
  &on_handshake_data_received_from_peer_,
403
403
  &SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
404
404
  this, grpc_schedule_on_exec_ctx),
405
- /*urgent=*/true);
405
+ /*urgent=*/true, /*min_progress_size=*/1);
406
406
  } else {
407
407
  // Handshake has finished, check peer and so on.
408
408
  error = CheckPeerLocked();
@@ -508,7 +508,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
508
508
  &h->on_handshake_data_received_from_peer_,
509
509
  &SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
510
510
  h.get(), grpc_schedule_on_exec_ctx),
511
- /*urgent=*/true);
511
+ /*urgent=*/true, /*min_progress_size=*/1);
512
512
  } else {
513
513
  error = h->CheckPeerLocked();
514
514
  if (error != GRPC_ERROR_NONE) {
@@ -21,9 +21,9 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include "src/core/lib/channel/handshaker.h"
25
24
  #include "src/core/lib/config/core_configuration.h"
26
25
  #include "src/core/lib/security/security_connector/security_connector.h"
26
+ #include "src/core/lib/transport/handshaker.h"
27
27
 
28
28
  namespace grpc_core {
29
29
 
@@ -143,9 +143,9 @@ static void on_md_processing_done_inner(grpc_call_element* elem,
143
143
  grpc_error_handle error) {
144
144
  call_data* calld = static_cast<call_data*>(elem->call_data);
145
145
  grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch;
146
- /* TODO(jboeuf): Implement support for response_md. */
146
+ /* TODO(ZhenLian): Implement support for response_md. */
147
147
  if (response_md != nullptr && num_response_md > 0) {
148
- gpr_log(GPR_INFO,
148
+ gpr_log(GPR_ERROR,
149
149
  "response_md in auth metadata processing not supported for now. "
150
150
  "Ignoring...");
151
151
  }
@@ -332,6 +332,7 @@ const grpc_channel_filter grpc_server_auth_filter = {
332
332
  server_auth_destroy_call_elem,
333
333
  sizeof(channel_data),
334
334
  server_auth_init_channel_elem,
335
+ grpc_channel_stack_no_post_init,
335
336
  server_auth_destroy_channel_elem,
336
337
  grpc_channel_next_get_info,
337
338
  "server-auth"};
@@ -19,18 +19,14 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include <unordered_map>
23
- #include <vector>
22
+ #include <stddef.h>
24
23
 
25
- #include <grpc/impl/codegen/grpc_types.h>
26
- #include <grpc/support/string_util.h>
24
+ #include "absl/strings/string_view.h"
25
+
26
+ #include <grpc/slice.h>
27
27
 
28
28
  #include "src/core/lib/gprpp/ref_counted.h"
29
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
30
- #include "src/core/lib/iomgr/error.h"
31
- #include "src/core/lib/json/json.h"
32
29
  #include "src/core/lib/service_config/service_config_parser.h"
33
- #include "src/core/lib/slice/slice_internal.h"
34
30
 
35
31
  // The main purpose of the code here is to parse the service config in
36
32
  // JSON form, which will look like this:
@@ -19,11 +19,14 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <stddef.h>
23
+
22
24
  #include <map>
25
+ #include <memory>
26
+ #include <utility>
23
27
 
24
28
  #include "absl/strings/string_view.h"
25
29
 
26
- #include "src/core/lib/channel/context.h"
27
30
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
28
31
  #include "src/core/lib/service_config/service_config.h"
29
32
  #include "src/core/lib/service_config/service_config_parser.h"
@@ -18,16 +18,23 @@
18
18
 
19
19
  #include "src/core/lib/service_config/service_config_impl.h"
20
20
 
21
+ #include <string.h>
22
+
23
+ #include <map>
21
24
  #include <string>
25
+ #include <utility>
22
26
 
27
+ #include "absl/memory/memory.h"
23
28
  #include "absl/strings/str_cat.h"
24
29
 
25
30
  #include <grpc/support/log.h>
26
31
 
27
32
  #include "src/core/lib/config/core_configuration.h"
33
+ #include "src/core/lib/gprpp/memory.h"
28
34
  #include "src/core/lib/json/json.h"
29
35
  #include "src/core/lib/service_config/service_config_parser.h"
30
36
  #include "src/core/lib/slice/slice_internal.h"
37
+ #include "src/core/lib/slice/slice_refcount.h"
31
38
 
32
39
  namespace grpc_core {
33
40