grpc 1.55.0 → 1.56.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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +48 -12
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -121,7 +121,8 @@ RefCountedPtr<ServiceConfig> ServiceConfigImpl::Create(
121
121
  service_config->parsed_method_config_vectors_storage_.reserve(
122
122
  method_configs->size());
123
123
  for (size_t i = 0; i < method_configs->size(); ++i) {
124
- const Json::Object& method_config_json = (*method_configs)[i];
124
+ const Json method_config_json =
125
+ Json::FromObject(std::move((*method_configs)[i]));
125
126
  ValidationErrors::ScopedField field(
126
127
  errors, absl::StrCat(".methodConfig[", i, "]"));
127
128
  // Have each parser read this method config.
@@ -195,7 +195,7 @@ class Call : public CppImplOf<Call, grpc_call> {
195
195
 
196
196
  ParentCall* GetOrCreateParentCall();
197
197
  ParentCall* parent_call();
198
- Channel* channel() {
198
+ Channel* channel() const {
199
199
  GPR_DEBUG_ASSERT(channel_ != nullptr);
200
200
  return channel_.get();
201
201
  }
@@ -445,6 +445,8 @@ void Call::PrepareOutgoingInitialMetadata(const grpc_op& op,
445
445
  }
446
446
  // Ignore any te metadata key value pairs specified.
447
447
  md.Remove(TeMetadata());
448
+ // Should never come from applications
449
+ md.Remove(GrpcLbClientStatsMetadata());
448
450
  }
449
451
 
450
452
  void Call::ProcessIncomingInitialMetadata(grpc_metadata_batch& md) {
@@ -1047,8 +1049,8 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) {
1047
1049
 
1048
1050
  void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
1049
1051
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
1050
- gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR");
1051
- gpr_log(GPR_DEBUG, "%s", StatusToString(error).c_str());
1052
+ gpr_log(GPR_DEBUG, "set_final_status %s %s", is_client() ? "CLI" : "SVR",
1053
+ StatusToString(error).c_str());
1052
1054
  }
1053
1055
  if (is_client()) {
1054
1056
  std::string status_details;
@@ -1295,8 +1297,9 @@ void FilterStackCall::BatchControl::PostCompletion() {
1295
1297
  FilterStackCall* call = call_;
1296
1298
  grpc_error_handle error = batch_error_.get();
1297
1299
  if (grpc_call_trace.enabled()) {
1298
- gpr_log(GPR_DEBUG, "tag:%p batch_error=%s", completion_data_.notify_tag.tag,
1299
- error.ToString().c_str());
1300
+ gpr_log(GPR_DEBUG, "tag:%p batch_error=%s op:%s",
1301
+ completion_data_.notify_tag.tag, error.ToString().c_str(),
1302
+ grpc_transport_stream_op_batch_string(&op_, false).c_str());
1300
1303
  }
1301
1304
 
1302
1305
  if (op_.send_initial_metadata) {
@@ -1314,16 +1317,16 @@ void FilterStackCall::BatchControl::PostCompletion() {
1314
1317
  if (op_.send_trailing_metadata) {
1315
1318
  call->send_trailing_metadata_.Clear();
1316
1319
  }
1320
+ if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
1321
+ grpc_byte_buffer_destroy(*call->receiving_buffer_);
1322
+ *call->receiving_buffer_ = nullptr;
1323
+ }
1317
1324
  if (op_.recv_trailing_metadata) {
1318
1325
  // propagate cancellation to any interested children
1319
1326
  gpr_atm_rel_store(&call->received_final_op_atm_, 1);
1320
1327
  call->PropagateCancellationToChildren();
1321
1328
  error = absl::OkStatus();
1322
1329
  }
1323
- if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
1324
- grpc_byte_buffer_destroy(*call->receiving_buffer_);
1325
- *call->receiving_buffer_ = nullptr;
1326
- }
1327
1330
  batch_error_.set(absl::OkStatus());
1328
1331
 
1329
1332
  if (completion_data_.notify_tag.is_closure) {
@@ -2010,6 +2013,10 @@ class PromiseBasedCall : public Call,
2010
2013
  return failed_before_recv_message_.load(std::memory_order_relaxed);
2011
2014
  }
2012
2015
 
2016
+ grpc_event_engine::experimental::EventEngine* event_engine() const final {
2017
+ return channel()->event_engine();
2018
+ }
2019
+
2013
2020
  using Call::arena;
2014
2021
 
2015
2022
  protected:
@@ -2183,7 +2190,7 @@ class PromiseBasedCall : public Call,
2183
2190
  void StartRecvMessage(const grpc_op& op, const Completion& completion,
2184
2191
  FirstPromise first,
2185
2192
  PipeReceiver<MessageHandle>* receiver,
2186
- Party::BulkSpawner& spawner);
2193
+ bool cancel_on_error, Party::BulkSpawner& spawner);
2187
2194
  void StartSendMessage(const grpc_op& op, const Completion& completion,
2188
2195
  PipeSender<MessageHandle>* sender,
2189
2196
  Party::BulkSpawner& spawner);
@@ -2538,7 +2545,8 @@ template <typename FirstPromiseFactory>
2538
2545
  void PromiseBasedCall::StartRecvMessage(
2539
2546
  const grpc_op& op, const Completion& completion,
2540
2547
  FirstPromiseFactory first_promise_factory,
2541
- PipeReceiver<MessageHandle>* receiver, Party::BulkSpawner& spawner) {
2548
+ PipeReceiver<MessageHandle>* receiver, bool cancel_on_error,
2549
+ Party::BulkSpawner& spawner) {
2542
2550
  if (grpc_call_trace.enabled()) {
2543
2551
  gpr_log(GPR_INFO, "%s[call] Start RecvMessage: %s", DebugTag().c_str(),
2544
2552
  CompletionString(completion).c_str());
@@ -2549,7 +2557,7 @@ void PromiseBasedCall::StartRecvMessage(
2549
2557
  [first_promise_factory = std::move(first_promise_factory), receiver]() {
2550
2558
  return Seq(first_promise_factory(), receiver->Next());
2551
2559
  },
2552
- [this,
2560
+ [this, cancel_on_error,
2553
2561
  completion = AddOpToCompletion(completion, PendingOp::kReceiveMessage)](
2554
2562
  NextResult<MessageHandle> result) mutable {
2555
2563
  if (result.has_value()) {
@@ -2580,6 +2588,7 @@ void PromiseBasedCall::StartRecvMessage(
2580
2588
  }
2581
2589
  failed_before_recv_message_.store(true);
2582
2590
  FailCompletion(completion);
2591
+ if (cancel_on_error) CancelWithError(absl::CancelledError());
2583
2592
  *recv_message_ = nullptr;
2584
2593
  } else {
2585
2594
  if (grpc_call_trace.enabled()) {
@@ -2873,7 +2882,7 @@ void ClientPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
2873
2882
  [this]() {
2874
2883
  return server_initial_metadata_.receiver.AwaitClosed();
2875
2884
  },
2876
- &server_to_client_messages_.receiver, spawner);
2885
+ &server_to_client_messages_.receiver, false, spawner);
2877
2886
  break;
2878
2887
  case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
2879
2888
  spawner.Spawn(
@@ -3218,14 +3227,6 @@ void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
3218
3227
  DebugTag().c_str(), recv_close_op_cancel_state_.ToString().c_str(),
3219
3228
  result->DebugString().c_str());
3220
3229
  }
3221
- if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
3222
- result->get(GrpcCallWasCancelled()).value_or(true))) {
3223
- FinishOpOnCompletion(&recv_close_completion_,
3224
- PendingOp::kReceiveCloseOnServer);
3225
- }
3226
- if (server_initial_metadata_ != nullptr) {
3227
- server_initial_metadata_->Close();
3228
- }
3229
3230
  const auto status =
3230
3231
  result->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
3231
3232
  channelz::ServerNode* channelz_node = server_->channelz_node();
@@ -3236,6 +3237,14 @@ void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
3236
3237
  channelz_node->RecordCallFailed();
3237
3238
  }
3238
3239
  }
3240
+ if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
3241
+ result->get(GrpcCallWasCancelled()).value_or(true))) {
3242
+ FinishOpOnCompletion(&recv_close_completion_,
3243
+ PendingOp::kReceiveCloseOnServer);
3244
+ }
3245
+ if (server_initial_metadata_ != nullptr) {
3246
+ server_initial_metadata_->Close();
3247
+ }
3239
3248
  absl::string_view message_string;
3240
3249
  if (Slice* message = result->get_pointer(GrpcMessageMetadata())) {
3241
3250
  message_string = message->as_string_view();
@@ -3328,7 +3337,7 @@ void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
3328
3337
  }
3329
3338
  StartRecvMessage(
3330
3339
  op, completion, []() { return []() { return Empty{}; }; },
3331
- client_to_server_messages_, spawner);
3340
+ client_to_server_messages_, true, spawner);
3332
3341
  break;
3333
3342
  case GRPC_OP_SEND_STATUS_FROM_SERVER: {
3334
3343
  auto metadata = arena()->MakePooled<ServerMetadata>(arena());
@@ -3521,6 +3530,9 @@ grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
3521
3530
  grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
3522
3531
  GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
3523
3532
  GPR_ASSERT(reserved == nullptr);
3533
+ if (call == nullptr) {
3534
+ return GRPC_CALL_ERROR;
3535
+ }
3524
3536
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
3525
3537
  grpc_core::ExecCtx exec_ctx;
3526
3538
  grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
@@ -3536,6 +3548,9 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
3536
3548
  "c=%p, status=%d, description=%s, reserved=%p)",
3537
3549
  4, (c, (int)status, description, reserved));
3538
3550
  GPR_ASSERT(reserved == nullptr);
3551
+ if (c == nullptr) {
3552
+ return GRPC_CALL_ERROR;
3553
+ }
3539
3554
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
3540
3555
  grpc_core::ExecCtx exec_ctx;
3541
3556
  grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
@@ -3576,7 +3591,7 @@ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
3576
3591
  "reserved=%p)",
3577
3592
  5, (call, ops, (unsigned long)nops, tag, reserved));
3578
3593
 
3579
- if (reserved != nullptr) {
3594
+ if (reserved != nullptr || call == nullptr) {
3580
3595
  return GRPC_CALL_ERROR;
3581
3596
  } else {
3582
3597
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -349,10 +349,14 @@ struct cq_callback_data {
349
349
  struct grpc_completion_queue {
350
350
  /// Once owning_refs drops to zero, we will destroy the cq
351
351
  grpc_core::RefCount owning_refs;
352
-
352
+ /// Add the paddings to fix the false sharing
353
+ char padding_1[GPR_CACHELINE_SIZE];
353
354
  gpr_mu* mu;
354
355
 
356
+ char padding_2[GPR_CACHELINE_SIZE];
355
357
  const cq_vtable* vtable;
358
+
359
+ char padding_3[GPR_CACHELINE_SIZE];
356
360
  const cq_poller_vtable* poller_vtable;
357
361
 
358
362
  #ifndef NDEBUG
@@ -1231,7 +1235,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1231
1235
  prev = &cqd->completed_head;
1232
1236
  while ((c = reinterpret_cast<grpc_cq_completion*>(
1233
1237
  prev->next & ~uintptr_t{1})) != &cqd->completed_head) {
1234
- if (c->tag == tag) {
1238
+ if (GPR_LIKELY(c->tag == tag)) {
1235
1239
  prev->next = (prev->next & uintptr_t{1}) | (c->next & ~uintptr_t{1});
1236
1240
  if (c == cqd->completed_tail) {
1237
1241
  cqd->completed_tail = prev;
@@ -23,6 +23,6 @@
23
23
 
24
24
  #include <grpc/grpc.h>
25
25
 
26
- const char* grpc_version_string(void) { return "32.0.0"; }
26
+ const char* grpc_version_string(void) { return "33.0.0"; }
27
27
 
28
- const char* grpc_g_stands_for(void) { return "grandslam"; }
28
+ const char* grpc_g_stands_for(void) { return "galvanized"; }
@@ -36,8 +36,8 @@ void BatchBuilder::PendingCompletion::CompletionCallback(
36
36
  auto* party = pc->batch->party.get();
37
37
  if (grpc_call_trace.enabled()) {
38
38
  gpr_log(
39
- GPR_DEBUG, "%s[connected] Finish batch-component %s for %s: status=%s",
40
- party->DebugTag().c_str(), std::string(pc->name()).c_str(),
39
+ GPR_DEBUG, "%sFinish batch-component %s for %s: status=%s",
40
+ pc->batch->DebugPrefix(party).c_str(), std::string(pc->name()).c_str(),
41
41
  grpc_transport_stream_op_batch_string(&pc->batch->batch, false).c_str(),
42
42
  error.ToString().c_str());
43
43
  }
@@ -71,6 +71,10 @@ BatchBuilder::Batch::Batch(grpc_transport_stream_op_batch_payload* payload,
71
71
 
72
72
  BatchBuilder::Batch::~Batch() {
73
73
  auto* arena = party->arena();
74
+ if (grpc_call_trace.enabled()) {
75
+ gpr_log(GPR_DEBUG, "%s[connected] [batch %p] Destroy",
76
+ Activity::current()->DebugTag().c_str(), this);
77
+ }
74
78
  if (pending_receive_message != nullptr) {
75
79
  arena->DeletePooled(pending_receive_message);
76
80
  }
@@ -114,8 +118,8 @@ void BatchBuilder::FlushBatch() {
114
118
  GPR_ASSERT(target_.has_value());
115
119
  if (grpc_call_trace.enabled()) {
116
120
  gpr_log(
117
- GPR_DEBUG, "%s[connected] Perform transport stream op batch: %p %s",
118
- batch_->party->DebugTag().c_str(), &batch_->batch,
121
+ GPR_DEBUG, "%sPerform transport stream op batch: %p %s",
122
+ batch_->DebugPrefix().c_str(), &batch_->batch,
119
123
  grpc_transport_stream_op_batch_string(&batch_->batch, false).c_str());
120
124
  }
121
125
  std::exchange(batch_, nullptr)->PerformWith(*target_);
@@ -127,15 +131,14 @@ void BatchBuilder::Batch::PerformWith(Target target) {
127
131
  }
128
132
 
129
133
  ServerMetadataHandle BatchBuilder::CompleteSendServerTrailingMetadata(
130
- ServerMetadataHandle sent_metadata, absl::Status send_result,
134
+ Batch* batch, ServerMetadataHandle sent_metadata, absl::Status send_result,
131
135
  bool actually_sent) {
132
136
  if (!send_result.ok()) {
133
137
  if (grpc_call_trace.enabled()) {
134
138
  gpr_log(GPR_DEBUG,
135
- "%s[connected] Send metadata failed with error: %s, "
136
- "fabricating trailing metadata",
137
- Activity::current()->DebugTag().c_str(),
138
- send_result.ToString().c_str());
139
+ "%sSend metadata failed with error: %s, fabricating trailing "
140
+ "metadata",
141
+ batch->DebugPrefix().c_str(), send_result.ToString().c_str());
139
142
  }
140
143
  sent_metadata->Clear();
141
144
  sent_metadata->Set(GrpcStatusMetadata(),
@@ -148,9 +151,9 @@ ServerMetadataHandle BatchBuilder::CompleteSendServerTrailingMetadata(
148
151
  if (grpc_call_trace.enabled()) {
149
152
  gpr_log(
150
153
  GPR_DEBUG,
151
- "%s[connected] Tagging trailing metadata with "
152
- "cancellation status from transport: %s",
153
- Activity::current()->DebugTag().c_str(),
154
+ "%sTagging trailing metadata with cancellation status from "
155
+ "transport: %s",
156
+ batch->DebugPrefix().c_str(),
154
157
  actually_sent ? "sent => not-cancelled" : "not-sent => cancelled");
155
158
  }
156
159
  sent_metadata->Set(GrpcCallWasCancelled(), !actually_sent);
@@ -19,12 +19,14 @@
19
19
 
20
20
  #include <stdint.h>
21
21
 
22
+ #include <initializer_list>
22
23
  #include <memory>
23
24
  #include <string>
24
25
  #include <utility>
25
26
 
26
27
  #include "absl/status/status.h"
27
28
  #include "absl/status/statusor.h"
29
+ #include "absl/strings/str_format.h"
28
30
  #include "absl/strings/string_view.h"
29
31
  #include "absl/types/optional.h"
30
32
 
@@ -202,6 +204,11 @@ class BatchBuilder {
202
204
  ~Batch();
203
205
  Batch(const Batch&) = delete;
204
206
  Batch& operator=(const Batch&) = delete;
207
+ std::string DebugPrefix(Activity* activity = Activity::current()) const {
208
+ return absl::StrFormat("%s[connected] [batch %p] ", activity->DebugTag(),
209
+ this);
210
+ }
211
+
205
212
  void IncrementRefCount() { ++refs; }
206
213
  void Unref() {
207
214
  if (--refs == 0) party->arena()->DeletePooled(this);
@@ -222,8 +229,8 @@ class BatchBuilder {
222
229
  if (this->*field != nullptr) return this->*field;
223
230
  this->*field = party->arena()->NewPooled<T>(Ref());
224
231
  if (grpc_call_trace.enabled()) {
225
- gpr_log(GPR_DEBUG, "%s[connected] Add batch closure for %s @ %s",
226
- Activity::current()->DebugTag().c_str(),
232
+ gpr_log(GPR_DEBUG, "%sAdd batch closure for %s @ %s",
233
+ DebugPrefix().c_str(),
227
234
  std::string((this->*field)->name()).c_str(),
228
235
  (this->*field)->on_done_closure.DebugString().c_str());
229
236
  }
@@ -273,8 +280,8 @@ class BatchBuilder {
273
280
  // Combine send status and server metadata into a final status to report back
274
281
  // to the containing call.
275
282
  static ServerMetadataHandle CompleteSendServerTrailingMetadata(
276
- ServerMetadataHandle sent_metadata, absl::Status send_result,
277
- bool actually_sent);
283
+ Batch* batch, ServerMetadataHandle sent_metadata,
284
+ absl::Status send_result, bool actually_sent);
278
285
 
279
286
  grpc_transport_stream_op_batch_payload* const payload_;
280
287
  absl::optional<Target> target_;
@@ -282,12 +289,11 @@ class BatchBuilder {
282
289
  };
283
290
 
284
291
  inline auto BatchBuilder::SendMessage(Target target, MessageHandle message) {
292
+ auto* batch = GetBatch(target);
285
293
  if (grpc_call_trace.enabled()) {
286
- gpr_log(GPR_DEBUG, "%s[connected] Queue send message: %s",
287
- Activity::current()->DebugTag().c_str(),
294
+ gpr_log(GPR_DEBUG, "%sQueue send message: %s", batch->DebugPrefix().c_str(),
288
295
  message->DebugString().c_str());
289
296
  }
290
- auto* batch = GetBatch(target);
291
297
  auto* pc = batch->GetInitializedCompletion(&Batch::pending_sends);
292
298
  batch->batch.on_complete = &pc->on_done_closure;
293
299
  batch->batch.send_message = true;
@@ -299,11 +305,11 @@ inline auto BatchBuilder::SendMessage(Target target, MessageHandle message) {
299
305
 
300
306
  inline auto BatchBuilder::SendInitialMetadata(
301
307
  Target target, Arena::PoolPtr<grpc_metadata_batch> md) {
308
+ auto* batch = GetBatch(target);
302
309
  if (grpc_call_trace.enabled()) {
303
- gpr_log(GPR_DEBUG, "%s[connected] Queue send initial metadata: %s",
304
- Activity::current()->DebugTag().c_str(), md->DebugString().c_str());
310
+ gpr_log(GPR_DEBUG, "%sQueue send initial metadata: %s",
311
+ batch->DebugPrefix().c_str(), md->DebugString().c_str());
305
312
  }
306
- auto* batch = GetBatch(target);
307
313
  auto* pc = batch->GetInitializedCompletion(&Batch::pending_sends);
308
314
  batch->batch.on_complete = &pc->on_done_closure;
309
315
  batch->batch.send_initial_metadata = true;
@@ -318,11 +324,11 @@ inline auto BatchBuilder::SendClientInitialMetadata(
318
324
  }
319
325
 
320
326
  inline auto BatchBuilder::SendClientTrailingMetadata(Target target) {
327
+ auto* batch = GetBatch(target);
321
328
  if (grpc_call_trace.enabled()) {
322
- gpr_log(GPR_DEBUG, "%s[connected] Queue send trailing metadata",
323
- Activity::current()->DebugTag().c_str());
329
+ gpr_log(GPR_DEBUG, "%sQueue send trailing metadata",
330
+ batch->DebugPrefix().c_str());
324
331
  }
325
- auto* batch = GetBatch(target);
326
332
  auto* pc = batch->GetInitializedCompletion(&Batch::pending_sends);
327
333
  batch->batch.on_complete = &pc->on_done_closure;
328
334
  batch->batch.send_trailing_metadata = true;
@@ -342,13 +348,6 @@ inline auto BatchBuilder::SendServerInitialMetadata(
342
348
  inline auto BatchBuilder::SendServerTrailingMetadata(
343
349
  Target target, ServerMetadataHandle metadata,
344
350
  bool convert_to_cancellation) {
345
- if (grpc_call_trace.enabled()) {
346
- gpr_log(GPR_DEBUG, "%s[connected] %s: %s",
347
- Activity::current()->DebugTag().c_str(),
348
- convert_to_cancellation ? "Send trailing metadata as cancellation"
349
- : "Queue send trailing metadata",
350
- metadata->DebugString().c_str());
351
- }
352
351
  Batch* batch;
353
352
  PendingSends* pc;
354
353
  if (convert_to_cancellation) {
@@ -368,14 +367,20 @@ inline auto BatchBuilder::SendServerTrailingMetadata(
368
367
  payload_->send_trailing_metadata.send_trailing_metadata = metadata.get();
369
368
  payload_->send_trailing_metadata.sent = &pc->trailing_metadata_sent;
370
369
  }
370
+ if (grpc_call_trace.enabled()) {
371
+ gpr_log(GPR_DEBUG, "%s%s: %s", batch->DebugPrefix().c_str(),
372
+ convert_to_cancellation ? "Send trailing metadata as cancellation"
373
+ : "Queue send trailing metadata",
374
+ metadata->DebugString().c_str());
375
+ }
371
376
  batch->batch.on_complete = &pc->on_done_closure;
372
377
  pc->send_trailing_metadata = std::move(metadata);
373
- auto promise = batch->RefUntil(
374
- Map(pc->done_latch.WaitAndCopy(), [pc](absl::Status status) {
375
- return CompleteSendServerTrailingMetadata(
376
- std::move(pc->send_trailing_metadata), std::move(status),
377
- pc->trailing_metadata_sent);
378
- }));
378
+ auto promise = Map(pc->done_latch.WaitAndCopy(),
379
+ [pc, batch = batch->Ref()](absl::Status status) {
380
+ return CompleteSendServerTrailingMetadata(
381
+ batch.get(), std::move(pc->send_trailing_metadata),
382
+ std::move(status), pc->trailing_metadata_sent);
383
+ });
379
384
  if (convert_to_cancellation) {
380
385
  batch->PerformWith(target);
381
386
  }
@@ -383,11 +388,10 @@ inline auto BatchBuilder::SendServerTrailingMetadata(
383
388
  }
384
389
 
385
390
  inline auto BatchBuilder::ReceiveMessage(Target target) {
391
+ auto* batch = GetBatch(target);
386
392
  if (grpc_call_trace.enabled()) {
387
- gpr_log(GPR_DEBUG, "%s[connected] Queue receive message",
388
- Activity::current()->DebugTag().c_str());
393
+ gpr_log(GPR_DEBUG, "%sQueue receive message", batch->DebugPrefix().c_str());
389
394
  }
390
- auto* batch = GetBatch(target);
391
395
  auto* pc = batch->GetInitializedCompletion(&Batch::pending_receive_message);
392
396
  batch->batch.recv_message = true;
393
397
  payload_->recv_message.recv_message_ready = &pc->on_done_closure;
@@ -411,11 +415,11 @@ inline auto BatchBuilder::ReceiveMessage(Target target) {
411
415
  }
412
416
 
413
417
  inline auto BatchBuilder::ReceiveInitialMetadata(Target target) {
418
+ auto* batch = GetBatch(target);
414
419
  if (grpc_call_trace.enabled()) {
415
- gpr_log(GPR_DEBUG, "%s[connected] Queue receive initial metadata",
416
- Activity::current()->DebugTag().c_str());
420
+ gpr_log(GPR_DEBUG, "%sQueue receive initial metadata",
421
+ batch->DebugPrefix().c_str());
417
422
  }
418
- auto* batch = GetBatch(target);
419
423
  auto* pc =
420
424
  batch->GetInitializedCompletion(&Batch::pending_receive_initial_metadata);
421
425
  batch->batch.recv_initial_metadata = true;
@@ -439,11 +443,11 @@ inline auto BatchBuilder::ReceiveServerInitialMetadata(Target target) {
439
443
  }
440
444
 
441
445
  inline auto BatchBuilder::ReceiveTrailingMetadata(Target target) {
446
+ auto* batch = GetBatch(target);
442
447
  if (grpc_call_trace.enabled()) {
443
- gpr_log(GPR_DEBUG, "%s[connected] Queue receive trailing metadata",
444
- Activity::current()->DebugTag().c_str());
448
+ gpr_log(GPR_DEBUG, "%sQueue receive trailing metadata",
449
+ batch->DebugPrefix().c_str());
445
450
  }
446
- auto* batch = GetBatch(target);
447
451
  auto* pc = batch->GetInitializedCompletion(
448
452
  &Batch::pending_receive_trailing_metadata);
449
453
  batch->batch.recv_trailing_metadata = true;
@@ -62,7 +62,6 @@ extern void RegisterPickFirstLbPolicy(CoreConfiguration::Builder* builder);
62
62
  extern void RegisterRoundRobinLbPolicy(CoreConfiguration::Builder* builder);
63
63
  extern void RegisterWeightedRoundRobinLbPolicy(
64
64
  CoreConfiguration::Builder* builder);
65
- extern void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder);
66
65
  extern void RegisterHttpProxyMapper(CoreConfiguration::Builder* builder);
67
66
  #ifndef GRPC_NO_RLS
68
67
  extern void RegisterRlsLbPolicy(CoreConfiguration::Builder* builder);
@@ -85,7 +84,6 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
85
84
  RegisterPickFirstLbPolicy(builder);
86
85
  RegisterRoundRobinLbPolicy(builder);
87
86
  RegisterWeightedRoundRobinLbPolicy(builder);
88
- RegisterRingHashLbPolicy(builder);
89
87
  BuildClientChannelConfiguration(builder);
90
88
  SecurityRegisterHandshakerFactories(builder);
91
89
  RegisterClientAuthorityFilter(builder);
@@ -39,6 +39,7 @@ extern void RegisterXdsClusterResolverLbPolicy(
39
39
  extern void RegisterXdsOverrideHostLbPolicy(
40
40
  CoreConfiguration::Builder* builder);
41
41
  extern void RegisterXdsWrrLocalityLbPolicy(CoreConfiguration::Builder* builder);
42
+ extern void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder);
42
43
  extern void RegisterFileWatcherCertificateProvider(
43
44
  CoreConfiguration::Builder* builder);
44
45
  #endif
@@ -60,6 +61,7 @@ void RegisterExtraFilters(CoreConfiguration::Builder* builder) {
60
61
  RegisterXdsClusterResolverLbPolicy(builder);
61
62
  RegisterXdsOverrideHostLbPolicy(builder);
62
63
  RegisterXdsWrrLocalityLbPolicy(builder);
64
+ RegisterRingHashLbPolicy(builder);
63
65
  RegisterFileWatcherCertificateProvider(builder);
64
66
  #endif
65
67
  }
@@ -34,24 +34,23 @@ def env_unset?(name)
34
34
  ENV[name].nil? || ENV[name].size == 0
35
35
  end
36
36
 
37
- def rbconfig_set?(name)
38
- RbConfig::CONFIG[name] && RbConfig::CONFIG[name].size > 0
37
+ def inherit_env_or_rbconfig(name)
38
+ ENV[name] = inherit_rbconfig(name) if env_unset?(name)
39
39
  end
40
40
 
41
41
  def inherit_rbconfig(name)
42
- ENV[name] = RbConfig::CONFIG[name] if env_unset?(name) && rbconfig_set?(name)
42
+ ENV[name] = RbConfig::CONFIG[name] || ''
43
43
  end
44
44
 
45
45
  def env_append(name, string)
46
- ENV[name] ||= ''
47
46
  ENV[name] += ' ' + string
48
47
  end
49
48
 
50
- inherit_rbconfig 'AR'
51
- inherit_rbconfig 'CC'
52
- inherit_rbconfig 'CXX'
53
- inherit_rbconfig 'RANLIB'
54
- inherit_rbconfig 'STRIP'
49
+ inherit_env_or_rbconfig 'AR'
50
+ inherit_env_or_rbconfig 'CC'
51
+ inherit_env_or_rbconfig 'CXX'
52
+ inherit_env_or_rbconfig 'RANLIB'
53
+ inherit_env_or_rbconfig 'STRIP'
55
54
  inherit_rbconfig 'CPPFLAGS'
56
55
  inherit_rbconfig 'LDFLAGS'
57
56
 
@@ -14,5 +14,5 @@
14
14
 
15
15
  # GRPC contains the General RPC module.
16
16
  module GRPC
17
- VERSION = '1.55.0'
17
+ VERSION = '1.56.0'
18
18
  end
@@ -73,18 +73,19 @@
73
73
  // horrible: it has to be :-( The 'ncopy' form checks minimum and maximum
74
74
  // size limits too.
75
75
 
76
- int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
77
- int inform, unsigned long mask) {
78
- return ASN1_mbstring_ncopy(out, in, len, inform, mask, 0, 0);
76
+ int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in,
77
+ ossl_ssize_t len, int inform, unsigned long mask) {
78
+ return ASN1_mbstring_ncopy(out, in, len, inform, mask, /*minsize=*/0,
79
+ /*maxsize=*/0);
79
80
  }
80
81
 
81
82
  OPENSSL_DECLARE_ERROR_REASON(ASN1, INVALID_BMPSTRING)
82
83
  OPENSSL_DECLARE_ERROR_REASON(ASN1, INVALID_UNIVERSALSTRING)
83
84
  OPENSSL_DECLARE_ERROR_REASON(ASN1, INVALID_UTF8STRING)
84
85
 
85
- int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
86
- int inform, unsigned long mask, long minsize,
87
- long maxsize) {
86
+ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in,
87
+ ossl_ssize_t len, int inform, unsigned long mask,
88
+ ossl_ssize_t minsize, ossl_ssize_t maxsize) {
88
89
  if (len == -1) {
89
90
  len = strlen((const char *)in);
90
91
  }
@@ -164,14 +165,14 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
164
165
  utf8_len += cbb_get_utf8_len(c);
165
166
  if (maxsize > 0 && nchar > (size_t)maxsize) {
166
167
  OPENSSL_PUT_ERROR(ASN1, ASN1_R_STRING_TOO_LONG);
167
- ERR_add_error_dataf("maxsize=%ld", maxsize);
168
+ ERR_add_error_dataf("maxsize=%zu", (size_t)maxsize);
168
169
  return -1;
169
170
  }
170
171
  }
171
172
 
172
173
  if (minsize > 0 && nchar < (size_t)minsize) {
173
174
  OPENSSL_PUT_ERROR(ASN1, ASN1_R_STRING_TOO_SHORT);
174
- ERR_add_error_dataf("minsize=%ld", minsize);
175
+ ERR_add_error_dataf("minsize=%zu", (size_t)minsize);
175
176
  return -1;
176
177
  }
177
178
 
@@ -87,7 +87,7 @@ static const ASN1_STRING_TABLE *asn1_string_table_get(int nid);
87
87
  // a corresponding OID. For example certificates and certificate requests.
88
88
 
89
89
  ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in,
90
- int len, int inform, int nid) {
90
+ ossl_ssize_t len, int inform, int nid) {
91
91
  ASN1_STRING *str = NULL;
92
92
  int ret;
93
93
  if (!out) {
@@ -56,8 +56,8 @@
56
56
  *
57
57
  */
58
58
 
59
- #ifndef OPENSSL_HEADER_ASN1_ASN1_LOCL_H
60
- #define OPENSSL_HEADER_ASN1_ASN1_LOCL_H
59
+ #ifndef OPENSSL_HEADER_ASN1_INTERNAL_H
60
+ #define OPENSSL_HEADER_ASN1_INTERNAL_H
61
61
 
62
62
  #include <time.h>
63
63
 
@@ -266,4 +266,4 @@ typedef struct ASN1_EXTERN_FUNCS_st {
266
266
  } // extern C
267
267
  #endif
268
268
 
269
- #endif // OPENSSL_HEADER_ASN1_ASN1_LOCL_H
269
+ #endif // OPENSSL_HEADER_ASN1_INTERNAL_H
@@ -85,7 +85,7 @@ static int asn1_template_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
85
85
  static int asn1_template_noexp_d2i(ASN1_VALUE **val, const unsigned char **in,
86
86
  long len, const ASN1_TEMPLATE *tt, char opt,
87
87
  CRYPTO_BUFFER *buf, int depth);
88
- static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
88
+ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, long len,
89
89
  int utype, const ASN1_ITEM *it);
90
90
  static int asn1_d2i_ex_primitive(ASN1_VALUE **pval, const unsigned char **in,
91
91
  long len, const ASN1_ITEM *it, int tag,
@@ -749,7 +749,7 @@ err:
749
749
 
750
750
  // Translate ASN1 content octets into a structure
751
751
 
752
- static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
752
+ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, long len,
753
753
  int utype, const ASN1_ITEM *it) {
754
754
  ASN1_VALUE **opval = NULL;
755
755
  ASN1_STRING *stmp;
@@ -837,7 +837,14 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
837
837
  case V_ASN1_UTF8STRING:
838
838
  case V_ASN1_OTHER:
839
839
  case V_ASN1_SET:
840
- case V_ASN1_SEQUENCE: {
840
+ case V_ASN1_SEQUENCE:
841
+ // TODO(crbug.com/boringssl/412): This default case should be removed, now
842
+ // that we've resolved https://crbug.com/boringssl/561. However, it is still
843
+ // needed to support some edge cases in |ASN1_PRINTABLE|. |ASN1_PRINTABLE|
844
+ // broadly doesn't tolerate unrecognized universal tags, but except for
845
+ // eight values that map to |B_ASN1_UNKNOWN| instead of zero. See the
846
+ // X509Test.NameAttributeValues test.
847
+ default: {
841
848
  CBS cbs;
842
849
  CBS_init(&cbs, cont, (size_t)len);
843
850
  if (utype == V_ASN1_BMPSTRING) {
@@ -900,9 +907,6 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
900
907
  }
901
908
  break;
902
909
  }
903
- default:
904
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_BAD_TEMPLATE);
905
- goto err;
906
910
  }
907
911
  // If ASN1_ANY and NULL type fix up value
908
912
  if (typ && (utype == V_ASN1_NULL)) {