grpc 1.55.3 → 1.56.0.pre3

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 (385) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -70
  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 +82 -98
  11. data/src/core/ext/filters/client_channel/client_channel.h +4 -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/hpack_parser.cc +543 -567
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
  59. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  60. data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
  61. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  62. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  63. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  64. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  65. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  66. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  67. data/src/core/ext/xds/xds_api.cc +9 -6
  68. data/src/core/ext/xds/xds_api.h +3 -2
  69. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  70. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  71. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  72. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  73. data/src/core/ext/xds/xds_client.cc +5 -4
  74. data/src/core/ext/xds/xds_client_stats.h +1 -1
  75. data/src/core/ext/xds/xds_cluster.cc +20 -19
  76. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  77. data/src/core/ext/xds/xds_common_types.cc +3 -1
  78. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  79. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  80. data/src/core/ext/xds/xds_http_filters.h +4 -2
  81. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  82. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  83. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  84. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  85. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  86. data/src/core/ext/xds/xds_listener.cc +1 -0
  87. data/src/core/ext/xds/xds_route_config.cc +40 -3
  88. data/src/core/ext/xds/xds_routing.cc +2 -2
  89. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  90. data/src/core/lib/avl/avl.h +5 -0
  91. data/src/core/lib/backoff/random_early_detection.h +0 -5
  92. data/src/core/lib/channel/channel_args.cc +80 -22
  93. data/src/core/lib/channel/channel_args.h +34 -1
  94. data/src/core/lib/channel/channel_trace.cc +16 -12
  95. data/src/core/lib/channel/channelz.cc +159 -132
  96. data/src/core/lib/channel/channelz.h +42 -35
  97. data/src/core/lib/channel/channelz_registry.cc +23 -20
  98. data/src/core/lib/channel/connected_channel.cc +17 -6
  99. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  100. data/src/core/lib/channel/promise_based_filter.h +2 -0
  101. data/src/core/lib/compression/compression_internal.cc +2 -5
  102. data/src/core/lib/config/config_vars.cc +20 -18
  103. data/src/core/lib/config/config_vars.h +4 -4
  104. data/src/core/lib/config/load_config.cc +13 -0
  105. data/src/core/lib/config/load_config.h +6 -0
  106. data/src/core/lib/debug/event_log.h +1 -1
  107. data/src/core/lib/debug/stats_data.h +1 -1
  108. data/src/core/lib/debug/trace.cc +24 -55
  109. data/src/core/lib/debug/trace.h +3 -1
  110. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  111. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  112. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  113. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  114. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  115. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  116. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  117. data/src/core/lib/event_engine/poller.h +2 -2
  118. data/src/core/lib/event_engine/posix.h +4 -0
  119. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  120. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  121. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  122. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +3 -2
  123. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
  124. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
  125. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
  126. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  127. data/src/core/lib/event_engine/shim.cc +7 -1
  128. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  129. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  130. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  131. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  132. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  133. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  134. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  136. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  137. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  138. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  139. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  140. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  141. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  142. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  143. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  144. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  145. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  146. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  147. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  148. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  149. data/src/core/lib/experiments/config.cc +38 -7
  150. data/src/core/lib/experiments/config.h +16 -0
  151. data/src/core/lib/experiments/experiments.cc +67 -20
  152. data/src/core/lib/experiments/experiments.h +27 -21
  153. data/src/core/lib/gpr/log_internal.h +55 -0
  154. data/src/core/lib/gprpp/crash.cc +10 -0
  155. data/src/core/lib/gprpp/crash.h +3 -0
  156. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  157. data/src/core/lib/gprpp/per_cpu.h +29 -6
  158. data/src/core/lib/gprpp/time.cc +1 -0
  159. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  160. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  161. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  162. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  163. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  164. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  165. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  166. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  167. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  168. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  169. data/src/core/lib/iomgr/socket_windows.h +9 -2
  170. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  171. data/src/core/lib/iomgr/tcp_server_posix.cc +156 -140
  172. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
  173. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
  174. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  175. data/src/core/lib/json/json.h +2 -166
  176. data/src/core/lib/json/json_object_loader.cc +8 -9
  177. data/src/core/lib/json/json_object_loader.h +25 -18
  178. data/src/core/lib/json/json_reader.cc +13 -6
  179. data/src/core/lib/json/json_util.cc +6 -11
  180. data/src/core/lib/json/json_writer.cc +7 -8
  181. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  182. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  183. data/src/core/lib/matchers/matchers.cc +3 -4
  184. data/src/core/lib/matchers/matchers.h +2 -1
  185. data/src/core/lib/promise/activity.cc +5 -0
  186. data/src/core/lib/promise/activity.h +10 -0
  187. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  188. data/src/core/lib/promise/party.cc +31 -13
  189. data/src/core/lib/promise/party.h +11 -2
  190. data/src/core/lib/promise/pipe.h +9 -2
  191. data/src/core/lib/promise/prioritized_race.h +95 -0
  192. data/src/core/lib/promise/sleep.cc +2 -1
  193. data/src/core/lib/resolver/server_address.cc +0 -8
  194. data/src/core/lib/resolver/server_address.h +0 -6
  195. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  196. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  197. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  198. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  199. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  200. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  201. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  202. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  203. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  204. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  205. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  206. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  207. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  208. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  209. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  210. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  211. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  212. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  213. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  214. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  215. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  216. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  217. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  218. data/src/core/lib/security/util/json_util.cc +1 -0
  219. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  220. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  221. data/src/core/lib/surface/call.cc +38 -23
  222. data/src/core/lib/surface/completion_queue.cc +6 -2
  223. data/src/core/lib/surface/validate_metadata.cc +22 -37
  224. data/src/core/lib/surface/validate_metadata.h +3 -13
  225. data/src/core/lib/surface/version.cc +2 -2
  226. data/src/core/lib/transport/batch_builder.cc +15 -12
  227. data/src/core/lib/transport/batch_builder.h +39 -35
  228. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  229. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  230. data/src/ruby/ext/grpc/extconf.rb +8 -9
  231. data/src/ruby/lib/grpc/version.rb +1 -1
  232. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  233. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  234. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  235. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  236. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  237. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  238. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  239. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  240. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  241. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  242. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  243. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  244. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  245. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  246. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  248. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  249. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  250. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  251. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  252. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  253. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  254. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  271. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  288. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  289. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  290. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  291. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  292. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  293. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  294. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  295. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  296. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  297. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  298. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  299. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  300. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  301. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  302. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  303. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  304. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  305. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  306. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  307. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  309. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  310. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  311. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  312. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  313. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  314. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  315. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  316. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  317. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  318. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  319. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  320. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  321. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  322. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  323. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  324. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  325. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  326. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  327. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  328. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  329. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  330. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  331. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  332. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  333. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  334. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  335. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  336. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  337. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  338. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  339. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  340. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  341. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  342. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  343. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  344. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  345. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  346. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  347. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  348. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  349. data/third_party/cares/cares/include/ares.h +23 -1
  350. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  351. data/third_party/cares/cares/include/ares_rules.h +2 -2
  352. data/third_party/cares/cares/include/ares_version.h +3 -3
  353. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  354. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  355. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  356. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  357. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  358. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  359. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  360. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  361. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  362. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  363. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  364. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  365. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  366. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  367. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  368. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  369. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  370. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  371. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  372. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  373. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  374. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  375. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  376. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  377. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  378. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  379. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  380. metadata +50 -16
  381. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  382. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  383. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
  384. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
  385. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -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;
@@ -21,6 +21,8 @@
21
21
  #include "src/core/lib/surface/validate_metadata.h"
22
22
 
23
23
  #include "absl/status/status.h"
24
+ #include "absl/strings/escaping.h"
25
+ #include "absl/strings/str_cat.h"
24
26
  #include "absl/strings/string_view.h"
25
27
 
26
28
  #include <grpc/grpc.h>
@@ -44,49 +46,32 @@ class LegalHeaderKeyBits : public BitSet<256> {
44
46
  };
45
47
  constexpr LegalHeaderKeyBits g_legal_header_key_bits;
46
48
 
47
- ValidateMetadataResult ConformsTo(absl::string_view x,
48
- const BitSet<256>& legal_bits,
49
- ValidateMetadataResult error) {
49
+ GPR_ATTRIBUTE_NOINLINE
50
+ absl::Status DoesNotConformTo(absl::string_view x, const char* err_desc) {
51
+ return absl::InternalError(absl::StrCat(err_desc, ": ", x, " (hex ",
52
+ absl::BytesToHexString(x), ")"));
53
+ }
54
+
55
+ absl::Status ConformsTo(absl::string_view x, const BitSet<256>& legal_bits,
56
+ const char* err_desc) {
50
57
  for (uint8_t c : x) {
51
58
  if (!legal_bits.is_set(c)) {
52
- return error;
59
+ return DoesNotConformTo(x, err_desc);
53
60
  }
54
61
  }
55
- return ValidateMetadataResult::kOk;
56
- }
57
-
58
- absl::Status UpgradeToStatus(ValidateMetadataResult result) {
59
- if (result == ValidateMetadataResult::kOk) return absl::OkStatus();
60
- return absl::InternalError(ValidateMetadataResultToString(result));
62
+ return absl::OkStatus();
61
63
  }
62
-
63
64
  } // namespace
64
65
 
65
- ValidateMetadataResult ValidateHeaderKeyIsLegal(absl::string_view key) {
66
+ absl::Status ValidateHeaderKeyIsLegal(absl::string_view key) {
66
67
  if (key.empty()) {
67
- return ValidateMetadataResult::kCannotBeZeroLength;
68
+ return absl::InternalError("Metadata keys cannot be zero length");
68
69
  }
69
70
  if (key.size() > UINT32_MAX) {
70
- return ValidateMetadataResult::kTooLong;
71
- }
72
- return ConformsTo(key, g_legal_header_key_bits,
73
- ValidateMetadataResult::kIllegalHeaderKey);
74
- }
75
-
76
- const char* ValidateMetadataResultToString(ValidateMetadataResult result) {
77
- switch (result) {
78
- case ValidateMetadataResult::kOk:
79
- return "Ok";
80
- case ValidateMetadataResult::kCannotBeZeroLength:
81
- return "Metadata keys cannot be zero length";
82
- case ValidateMetadataResult::kTooLong:
83
- return "Metadata keys cannot be larger than UINT32_MAX";
84
- case ValidateMetadataResult::kIllegalHeaderKey:
85
- return "Illegal header key";
86
- case ValidateMetadataResult::kIllegalHeaderValue:
87
- return "Illegal header value";
71
+ return absl::InternalError(
72
+ "Metadata keys cannot be larger than UINT32_MAX");
88
73
  }
89
- GPR_UNREACHABLE_CODE(return "Unknown");
74
+ return ConformsTo(key, g_legal_header_key_bits, "Illegal header key");
90
75
  }
91
76
 
92
77
  } // namespace grpc_core
@@ -97,8 +82,8 @@ static int error2int(grpc_error_handle error) {
97
82
  }
98
83
 
99
84
  grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) {
100
- return grpc_core::UpgradeToStatus(grpc_core::ValidateHeaderKeyIsLegal(
101
- grpc_core::StringViewFromSlice(slice)));
85
+ return grpc_core::ValidateHeaderKeyIsLegal(
86
+ grpc_core::StringViewFromSlice(slice));
102
87
  }
103
88
 
104
89
  int grpc_header_key_is_legal(grpc_slice slice) {
@@ -119,9 +104,9 @@ constexpr LegalHeaderNonBinValueBits g_legal_header_non_bin_value_bits;
119
104
 
120
105
  grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
121
106
  const grpc_slice& slice) {
122
- return grpc_core::UpgradeToStatus(grpc_core::ConformsTo(
123
- grpc_core::StringViewFromSlice(slice), g_legal_header_non_bin_value_bits,
124
- grpc_core::ValidateMetadataResult::kIllegalHeaderValue));
107
+ return grpc_core::ConformsTo(grpc_core::StringViewFromSlice(slice),
108
+ g_legal_header_non_bin_value_bits,
109
+ "Illegal header value");
125
110
  }
126
111
 
127
112
  int grpc_header_nonbin_value_is_legal(grpc_slice slice) {
@@ -25,6 +25,7 @@
25
25
 
26
26
  #include <cstring>
27
27
 
28
+ #include "absl/status/status.h"
28
29
  #include "absl/strings/string_view.h"
29
30
 
30
31
  #include <grpc/slice.h>
@@ -34,20 +35,9 @@
34
35
 
35
36
  namespace grpc_core {
36
37
 
37
- enum class ValidateMetadataResult : uint8_t {
38
- kOk,
39
- kCannotBeZeroLength,
40
- kTooLong,
41
- kIllegalHeaderKey,
42
- kIllegalHeaderValue
43
- };
38
+ absl::Status ValidateHeaderKeyIsLegal(absl::string_view key);
44
39
 
45
- const char* ValidateMetadataResultToString(ValidateMetadataResult result);
46
-
47
- // Returns nullopt if the key is legal, otherwise returns an error message.
48
- ValidateMetadataResult ValidateHeaderKeyIsLegal(absl::string_view key);
49
-
50
- } // namespace grpc_core
40
+ }
51
41
 
52
42
  grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice);
53
43
  grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
@@ -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.3'
17
+ VERSION = '1.56.0.pre3'
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)) {
@@ -693,15 +693,18 @@ static int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *out_omit,
693
693
  case V_ASN1_SET:
694
694
  // This is not a valid |ASN1_ITEM| type, but it appears in |ASN1_TYPE|.
695
695
  case V_ASN1_OTHER:
696
+ // TODO(crbug.com/boringssl/412): This default case should be removed, now
697
+ // that we've resolved https://crbug.com/boringssl/561. However, it is still
698
+ // needed to support some edge cases in |ASN1_PRINTABLE|. |ASN1_PRINTABLE|
699
+ // broadly doesn't tolerate unrecognized universal tags, but except for
700
+ // eight values that map to |B_ASN1_UNKNOWN| instead of zero. See the
701
+ // X509Test.NameAttributeValues test.
702
+ default:
696
703
  // All based on ASN1_STRING and handled the same
697
704
  strtmp = (ASN1_STRING *)*pval;
698
705
  cont = strtmp->data;
699
706
  len = strtmp->length;
700
707
  break;
701
-
702
- default:
703
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_BAD_TEMPLATE);
704
- return -1;
705
708
  }
706
709
  if (cout && len) {
707
710
  OPENSSL_memcpy(cout, cont, len);
@@ -423,7 +423,7 @@ int BIO_indent(BIO *bio, unsigned indent, unsigned max_indent) {
423
423
  }
424
424
 
425
425
  static int print_bio(const char *str, size_t len, void *bio) {
426
- return BIO_write((BIO *)bio, str, len);
426
+ return BIO_write_all((BIO *)bio, str, len);
427
427
  }
428
428
 
429
429
  void ERR_print_errors(BIO *bio) {
@@ -462,9 +462,11 @@ static int bio_read_all(BIO *bio, uint8_t **out, size_t *out_len,
462
462
  OPENSSL_free(*out);
463
463
  return 0;
464
464
  }
465
- const size_t todo = len - done;
466
- assert(todo < INT_MAX);
467
- const int n = BIO_read(bio, *out + done, todo);
465
+ size_t todo = len - done;
466
+ if (todo > INT_MAX) {
467
+ todo = INT_MAX;
468
+ }
469
+ const int n = BIO_read(bio, *out + done, (int)todo);
468
470
  if (n == 0) {
469
471
  *out_len = done;
470
472
  return 1;
@@ -257,7 +257,8 @@ static int fd_gets(BIO *bp, char *buf, int size) {
257
257
 
258
258
  ptr[0] = '\0';
259
259
 
260
- return ptr - buf;
260
+ // The output length is bounded by |size|.
261
+ return (int)(ptr - buf);
261
262
  }
262
263
 
263
264
  static const BIO_METHOD methods_fdp = {