grpc 1.15.0 → 1.30.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 (1780) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8591 -13387
  3. data/etc/roots.pem +455 -130
  4. data/include/grpc/grpc.h +39 -9
  5. data/include/grpc/grpc_posix.h +0 -8
  6. data/include/grpc/grpc_security.h +409 -14
  7. data/include/grpc/grpc_security_constants.h +55 -22
  8. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  9. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  10. data/include/grpc/impl/codegen/byte_buffer.h +13 -0
  11. data/include/grpc/impl/codegen/compression_types.h +2 -1
  12. data/include/grpc/impl/codegen/gpr_types.h +1 -1
  13. data/include/grpc/impl/codegen/grpc_types.h +111 -16
  14. data/include/grpc/impl/codegen/port_platform.h +171 -9
  15. data/include/grpc/impl/codegen/slice.h +2 -22
  16. data/include/grpc/impl/codegen/status.h +2 -1
  17. data/include/grpc/impl/codegen/sync.h +5 -3
  18. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  19. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  20. data/include/grpc/impl/codegen/sync_posix.h +18 -0
  21. data/include/grpc/module.modulemap +25 -37
  22. data/include/grpc/slice.h +3 -3
  23. data/include/grpc/support/alloc.h +0 -16
  24. data/include/grpc/support/sync_abseil.h +26 -0
  25. data/src/core/ext/filters/client_channel/backend_metric.cc +81 -0
  26. data/src/core/ext/filters/client_channel/backend_metric.h +36 -0
  27. data/src/core/ext/filters/client_channel/backup_poller.cc +26 -19
  28. data/src/core/ext/filters/client_channel/backup_poller.h +8 -2
  29. data/src/core/ext/filters/client_channel/channel_connectivity.cc +21 -5
  30. data/src/core/ext/filters/client_channel/client_channel.cc +2888 -2206
  31. data/src/core/ext/filters/client_channel/client_channel.h +26 -6
  32. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +54 -72
  33. data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -26
  34. data/src/core/ext/filters/client_channel/client_channel_factory.cc +22 -34
  35. data/src/core/ext/filters/client_channel/client_channel_factory.h +12 -39
  36. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +13 -14
  37. data/src/core/ext/filters/client_channel/connector.h +43 -37
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
  39. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
  40. data/src/core/ext/filters/client_channel/health/health_check_client.cc +606 -0
  41. data/src/core/ext/filters/client_channel/health/health_check_client.h +175 -0
  42. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +177 -158
  43. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  44. data/src/core/ext/filters/client_channel/http_proxy.cc +125 -121
  45. data/src/core/ext/filters/client_channel/http_proxy.h +5 -1
  46. data/src/core/ext/filters/client_channel/lb_policy.cc +105 -26
  47. data/src/core/ext/filters/client_channel/lb_policy.h +352 -152
  48. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  50. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +64 -47
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1010 -1155
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +7 -0
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +12 -3
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +53 -40
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +10 -5
  60. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +19 -16
  61. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +157 -271
  62. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +43 -59
  63. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +235 -384
  64. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  65. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +174 -409
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +157 -285
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +417 -0
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +32 -0
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  73. data/src/core/ext/filters/client_channel/lb_policy_factory.h +7 -91
  74. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +93 -8
  75. data/src/core/ext/filters/client_channel/lb_policy_registry.h +13 -2
  76. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
  77. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +57 -0
  78. data/src/core/ext/filters/client_channel/parse_address.cc +76 -30
  79. data/src/core/ext/filters/client_channel/parse_address.h +4 -1
  80. data/src/core/ext/filters/client_channel/proxy_mapper.h +14 -34
  81. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +46 -79
  82. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +23 -17
  83. data/src/core/ext/filters/client_channel/resolver.cc +55 -5
  84. data/src/core/ext/filters/client_channel/resolver.h +61 -61
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +251 -226
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +200 -36
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -20
  88. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +177 -0
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +8 -7
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +491 -131
  91. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +434 -233
  92. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -12
  93. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +15 -7
  94. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +38 -0
  95. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +7 -2
  96. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
  97. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +29 -0
  98. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -131
  99. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +220 -134
  100. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +27 -17
  101. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +73 -99
  102. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +184 -0
  103. data/src/core/ext/filters/client_channel/resolver_factory.h +13 -11
  104. data/src/core/ext/filters/client_channel/resolver_registry.cc +33 -14
  105. data/src/core/ext/filters/client_channel/resolver_registry.h +19 -13
  106. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +443 -0
  107. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +127 -0
  108. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +348 -0
  109. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +123 -0
  110. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  111. data/src/core/ext/filters/client_channel/retry_throttle.h +2 -6
  112. data/src/core/ext/filters/client_channel/server_address.cc +48 -0
  113. data/src/core/ext/filters/client_channel/server_address.h +90 -0
  114. data/src/core/ext/filters/client_channel/service_config.cc +221 -0
  115. data/src/core/ext/filters/client_channel/service_config.h +123 -0
  116. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  117. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  118. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  119. data/src/core/ext/filters/client_channel/subchannel.cc +903 -634
  120. data/src/core/ext/filters/client_channel/subchannel.h +364 -131
  121. data/src/core/ext/filters/client_channel/subchannel_interface.h +94 -0
  122. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
  123. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +91 -0
  124. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1906 -0
  125. data/src/core/ext/filters/client_channel/xds/xds_api.h +280 -0
  126. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +342 -0
  127. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +88 -0
  128. data/src/core/ext/filters/client_channel/xds/xds_channel.h +46 -0
  129. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  130. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +106 -0
  131. data/src/core/ext/filters/client_channel/xds/xds_client.cc +2367 -0
  132. data/src/core/ext/filters/client_channel/xds/xds_client.h +309 -0
  133. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +115 -0
  134. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +211 -0
  135. data/src/core/ext/filters/client_idle/client_idle_filter.cc +440 -0
  136. data/src/core/ext/filters/deadline/deadline_filter.cc +49 -52
  137. data/src/core/ext/filters/deadline/deadline_filter.h +11 -14
  138. data/src/core/ext/filters/http/client/http_client_filter.cc +122 -85
  139. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  140. data/src/core/ext/filters/http/client_authority_filter.cc +26 -24
  141. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  142. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +342 -295
  143. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  144. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  145. data/src/core/ext/filters/http/server/http_server_filter.cc +156 -54
  146. data/src/core/ext/filters/max_age/max_age_filter.cc +76 -63
  147. data/src/core/ext/filters/message_size/message_size_filter.cc +218 -119
  148. data/src/core/ext/filters/message_size/message_size_filter.h +33 -0
  149. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +19 -17
  150. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -1
  151. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +141 -164
  152. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +31 -1
  153. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +36 -34
  154. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  155. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +133 -138
  156. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +128 -30
  157. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  158. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +8 -11
  159. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -4
  160. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +4 -4
  161. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +11 -12
  162. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +4 -3
  163. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +9 -7
  164. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +911 -716
  165. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -1
  166. data/src/core/ext/transport/chttp2/transport/context_list.cc +69 -0
  167. data/src/core/ext/transport/chttp2/transport/context_list.h +53 -0
  168. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -5
  169. data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -30
  170. data/src/core/ext/transport/chttp2/transport/frame_data.cc +47 -54
  171. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -13
  172. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +9 -8
  173. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -5
  174. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -5
  175. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -4
  176. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -7
  177. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +11 -4
  178. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +11 -7
  179. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
  180. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -6
  181. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -4
  182. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +548 -351
  183. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +26 -15
  184. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +201 -120
  185. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -6
  186. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +47 -169
  187. data/src/core/ext/transport/chttp2/transport/hpack_table.h +70 -17
  188. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  189. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  190. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +10 -17
  191. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +19 -10
  192. data/src/core/ext/transport/chttp2/transport/internal.h +226 -161
  193. data/src/core/ext/transport/chttp2/transport/parsing.cc +166 -110
  194. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
  195. data/src/core/ext/transport/chttp2/transport/stream_map.cc +28 -18
  196. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  197. data/src/core/ext/transport/chttp2/transport/writing.cc +95 -35
  198. data/src/core/ext/transport/inproc/inproc_transport.cc +406 -388
  199. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  200. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  201. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  202. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  203. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +21 -0
  204. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +35 -0
  205. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  206. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  207. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  208. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  209. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  210. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  211. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +28 -0
  212. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +53 -0
  213. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  214. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  215. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +74 -0
  216. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +218 -0
  217. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +35 -0
  218. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +69 -0
  219. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +55 -0
  220. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +305 -0
  221. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +112 -0
  222. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +328 -0
  223. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  224. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  225. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +313 -0
  226. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +897 -0
  227. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +96 -0
  228. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +322 -0
  229. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  230. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  231. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +197 -0
  232. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +642 -0
  233. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +172 -0
  234. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +673 -0
  235. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +36 -0
  236. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +80 -0
  237. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +152 -0
  238. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +518 -0
  239. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  240. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  241. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +129 -0
  242. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +392 -0
  243. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +31 -0
  244. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +53 -0
  245. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  246. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  247. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +18 -0
  248. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +33 -0
  249. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  250. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  251. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +112 -0
  252. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +324 -0
  253. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  254. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  255. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  256. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  257. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  258. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  259. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  260. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  261. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  262. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  263. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  264. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  265. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  266. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  267. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  268. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  269. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  270. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  271. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  272. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  273. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  274. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  275. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  276. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  277. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  278. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  279. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  280. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  281. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  282. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +24 -0
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +50 -0
  285. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +54 -0
  286. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +134 -0
  287. data/src/core/ext/upb-generated/envoy/type/http.upb.c +17 -0
  288. data/src/core/ext/upb-generated/envoy/type/http.upb.h +36 -0
  289. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  290. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  291. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  292. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  293. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  294. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  295. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +39 -0
  296. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +87 -0
  297. data/src/core/ext/upb-generated/envoy/type/range.upb.c +50 -0
  298. data/src/core/ext/upb-generated/envoy/type/range.upb.h +112 -0
  299. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  300. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  301. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  302. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  303. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +17 -0
  304. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +30 -0
  305. data/src/core/ext/upb-generated/google/api/annotations.upb.c +18 -0
  306. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -0
  307. data/src/core/ext/upb-generated/google/api/http.upb.c +66 -0
  308. data/src/core/ext/upb-generated/google/api/http.upb.h +190 -0
  309. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +27 -0
  310. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +58 -0
  311. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +486 -0
  312. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1696 -0
  313. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +27 -0
  314. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +58 -0
  315. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +22 -0
  316. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +50 -0
  317. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +79 -0
  318. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +215 -0
  319. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +27 -0
  320. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +58 -0
  321. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +106 -0
  322. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +238 -0
  323. data/src/core/ext/upb-generated/google/rpc/status.upb.c +33 -0
  324. data/src/core/ext/upb-generated/google/rpc/status.upb.h +74 -0
  325. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +49 -0
  326. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +126 -0
  327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +212 -0
  328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +693 -0
  329. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +42 -0
  330. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +109 -0
  331. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +36 -0
  332. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +84 -0
  333. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +141 -0
  334. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +393 -0
  335. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  336. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  337. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  338. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  339. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  340. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  341. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +58 -0
  342. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +144 -0
  343. data/src/core/ext/upb-generated/validate/validate.upb.c +448 -0
  344. data/src/core/ext/upb-generated/validate/validate.upb.h +2073 -0
  345. data/src/core/lib/avl/avl.cc +1 -1
  346. data/src/core/lib/channel/channel_args.cc +54 -115
  347. data/src/core/lib/channel/channel_args.h +44 -40
  348. data/src/core/lib/channel/channel_stack.cc +6 -5
  349. data/src/core/lib/channel/channel_stack.h +52 -28
  350. data/src/core/lib/channel/channel_stack_builder.cc +14 -2
  351. data/src/core/lib/channel/channel_stack_builder.h +8 -0
  352. data/src/core/lib/channel/channel_trace.cc +75 -85
  353. data/src/core/lib/channel/channel_trace.h +37 -32
  354. data/src/core/lib/channel/channelz.cc +496 -106
  355. data/src/core/lib/channel/channelz.h +262 -61
  356. data/src/core/lib/channel/channelz_registry.cc +191 -69
  357. data/src/core/lib/channel/channelz_registry.h +30 -53
  358. data/src/core/lib/channel/connected_channel.cc +30 -27
  359. data/src/core/lib/channel/context.h +6 -6
  360. data/src/core/lib/channel/handshaker.cc +150 -218
  361. data/src/core/lib/channel/handshaker.h +111 -102
  362. data/src/core/lib/channel/handshaker_factory.h +9 -17
  363. data/src/core/lib/channel/handshaker_registry.cc +57 -49
  364. data/src/core/lib/channel/handshaker_registry.h +21 -15
  365. data/src/core/lib/channel/status_util.cc +2 -3
  366. data/src/core/lib/compression/algorithm_metadata.h +3 -3
  367. data/src/core/lib/compression/compression.cc +17 -12
  368. data/src/core/lib/compression/compression_args.cc +134 -0
  369. data/src/core/lib/compression/compression_args.h +56 -0
  370. data/src/core/lib/compression/compression_internal.cc +17 -13
  371. data/src/core/lib/compression/compression_internal.h +9 -1
  372. data/src/core/lib/compression/message_compress.cc +8 -3
  373. data/src/core/lib/compression/stream_compression.cc +3 -2
  374. data/src/core/lib/compression/stream_compression.h +2 -2
  375. data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
  376. data/src/core/lib/compression/stream_compression_identity.cc +5 -7
  377. data/src/core/lib/debug/stats.cc +21 -27
  378. data/src/core/lib/debug/stats.h +3 -1
  379. data/src/core/lib/debug/trace.cc +16 -7
  380. data/src/core/lib/debug/trace.h +20 -4
  381. data/src/core/lib/gpr/alloc.cc +4 -29
  382. data/src/core/lib/gpr/arena.h +13 -7
  383. data/src/core/lib/gpr/cpu_linux.cc +1 -1
  384. data/src/core/lib/gpr/cpu_posix.cc +5 -3
  385. data/src/core/lib/gpr/env.h +3 -6
  386. data/src/core/lib/gpr/env_linux.cc +15 -21
  387. data/src/core/lib/gpr/env_posix.cc +5 -5
  388. data/src/core/lib/gpr/env_windows.cc +7 -5
  389. data/src/core/lib/gpr/log.cc +9 -13
  390. data/src/core/lib/gpr/log_linux.cc +2 -2
  391. data/src/core/lib/gpr/log_posix.cc +4 -3
  392. data/src/core/lib/gpr/spinlock.h +2 -3
  393. data/src/core/lib/gpr/string.cc +29 -35
  394. data/src/core/lib/gpr/string.h +11 -19
  395. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  396. data/src/core/lib/gpr/sync_posix.cc +78 -9
  397. data/src/core/lib/gpr/sync_windows.cc +4 -2
  398. data/src/core/lib/gpr/time.cc +12 -0
  399. data/src/core/lib/gpr/time_posix.cc +22 -3
  400. data/src/core/lib/gpr/time_precise.cc +123 -36
  401. data/src/core/lib/gpr/time_precise.h +37 -0
  402. data/src/core/lib/gprpp/arena.cc +103 -0
  403. data/src/core/lib/gprpp/arena.h +120 -0
  404. data/src/core/lib/gprpp/atomic.h +79 -5
  405. data/src/core/lib/gprpp/debug_location.h +3 -2
  406. data/src/core/lib/gprpp/fork.cc +30 -56
  407. data/src/core/lib/gprpp/fork.h +18 -3
  408. data/src/core/lib/gprpp/global_config.h +96 -0
  409. data/src/core/lib/gprpp/global_config_custom.h +29 -0
  410. data/src/core/lib/gprpp/global_config_env.cc +135 -0
  411. data/src/core/lib/gprpp/global_config_env.h +131 -0
  412. data/src/core/lib/gprpp/global_config_generic.h +44 -0
  413. data/src/core/lib/gprpp/host_port.cc +112 -0
  414. data/src/core/lib/gprpp/host_port.h +56 -0
  415. data/src/core/lib/gprpp/map.h +53 -0
  416. data/src/core/lib/gprpp/memory.h +11 -83
  417. data/src/core/lib/gprpp/mpscq.cc +108 -0
  418. data/src/core/lib/gprpp/mpscq.h +98 -0
  419. data/src/core/lib/gprpp/orphanable.h +27 -95
  420. data/src/core/lib/gprpp/ref_counted.h +228 -83
  421. data/src/core/lib/gprpp/ref_counted_ptr.h +39 -16
  422. data/src/core/lib/gprpp/sync.h +135 -0
  423. data/src/core/lib/gprpp/thd.h +54 -12
  424. data/src/core/lib/gprpp/thd_posix.cc +57 -13
  425. data/src/core/lib/gprpp/thd_windows.cc +54 -33
  426. data/src/core/lib/http/format_request.cc +46 -65
  427. data/src/core/lib/http/httpcli.cc +11 -11
  428. data/src/core/lib/http/httpcli.h +2 -3
  429. data/src/core/lib/http/httpcli_security_connector.cc +121 -107
  430. data/src/core/lib/http/parser.cc +4 -3
  431. data/src/core/lib/http/parser.h +9 -9
  432. data/src/core/lib/iomgr/buffer_list.cc +308 -0
  433. data/src/core/lib/iomgr/buffer_list.h +165 -0
  434. data/src/core/lib/iomgr/call_combiner.cc +113 -69
  435. data/src/core/lib/iomgr/call_combiner.h +96 -74
  436. data/src/core/lib/iomgr/cfstream_handle.cc +209 -0
  437. data/src/core/lib/iomgr/cfstream_handle.h +90 -0
  438. data/src/core/lib/iomgr/closure.h +44 -141
  439. data/src/core/lib/iomgr/combiner.cc +50 -86
  440. data/src/core/lib/iomgr/combiner.h +31 -9
  441. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  442. data/src/core/lib/iomgr/dynamic_annotations.h +67 -0
  443. data/src/core/lib/iomgr/endpoint.cc +8 -4
  444. data/src/core/lib/iomgr/endpoint.h +12 -4
  445. data/src/core/lib/iomgr/endpoint_cfstream.cc +376 -0
  446. data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
  447. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  448. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  449. data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
  450. data/src/core/lib/iomgr/error.cc +71 -64
  451. data/src/core/lib/iomgr/error.h +74 -10
  452. data/src/core/lib/iomgr/error_cfstream.cc +52 -0
  453. data/src/core/lib/iomgr/error_cfstream.h +31 -0
  454. data/src/core/lib/iomgr/error_internal.h +1 -3
  455. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  456. data/src/core/lib/iomgr/ev_apple.h +43 -0
  457. data/src/core/lib/iomgr/ev_epoll1_linux.cc +99 -69
  458. data/src/core/lib/iomgr/ev_epollex_linux.cc +238 -259
  459. data/src/core/lib/iomgr/ev_poll_posix.cc +52 -504
  460. data/src/core/lib/iomgr/ev_posix.cc +54 -31
  461. data/src/core/lib/iomgr/ev_posix.h +29 -3
  462. data/src/core/lib/iomgr/ev_windows.cc +2 -2
  463. data/src/core/lib/iomgr/exec_ctx.cc +79 -8
  464. data/src/core/lib/iomgr/exec_ctx.h +163 -21
  465. data/src/core/lib/iomgr/executor.cc +137 -101
  466. data/src/core/lib/iomgr/executor.h +54 -48
  467. data/src/core/lib/iomgr/executor/mpmcqueue.cc +183 -0
  468. data/src/core/lib/iomgr/executor/mpmcqueue.h +175 -0
  469. data/src/core/lib/iomgr/executor/threadpool.cc +137 -0
  470. data/src/core/lib/iomgr/executor/threadpool.h +149 -0
  471. data/src/core/lib/iomgr/fork_posix.cc +15 -8
  472. data/src/core/lib/iomgr/grpc_if_nametoindex.h +30 -0
  473. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
  474. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +38 -0
  475. data/src/core/lib/iomgr/internal_errqueue.cc +67 -0
  476. data/src/core/lib/iomgr/internal_errqueue.h +191 -0
  477. data/src/core/lib/iomgr/iocp_windows.cc +2 -2
  478. data/src/core/lib/iomgr/iomgr.cc +27 -13
  479. data/src/core/lib/iomgr/iomgr.h +19 -0
  480. data/src/core/lib/iomgr/iomgr_custom.cc +18 -2
  481. data/src/core/lib/iomgr/iomgr_custom.h +2 -0
  482. data/src/core/lib/iomgr/iomgr_internal.cc +14 -0
  483. data/src/core/lib/iomgr/iomgr_internal.h +16 -0
  484. data/src/core/lib/iomgr/iomgr_posix.cc +23 -1
  485. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +171 -0
  486. data/src/core/lib/iomgr/iomgr_uv.cc +3 -0
  487. data/src/core/lib/iomgr/iomgr_windows.cc +20 -1
  488. data/src/core/lib/iomgr/load_file.cc +1 -0
  489. data/src/core/lib/iomgr/lockfree_event.cc +16 -15
  490. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
  491. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
  492. data/src/core/lib/iomgr/polling_entity.h +4 -4
  493. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  494. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  495. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  496. data/src/core/lib/iomgr/pollset_windows.cc +16 -2
  497. data/src/core/lib/iomgr/port.h +49 -2
  498. data/src/core/lib/iomgr/python_util.h +46 -0
  499. data/src/core/lib/iomgr/resolve_address.h +5 -7
  500. data/src/core/lib/iomgr/resolve_address_custom.cc +36 -50
  501. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  502. data/src/core/lib/iomgr/resolve_address_posix.cc +22 -25
  503. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -26
  504. data/src/core/lib/iomgr/resource_quota.cc +175 -110
  505. data/src/core/lib/iomgr/resource_quota.h +30 -11
  506. data/src/core/lib/iomgr/sockaddr_utils.cc +26 -31
  507. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  508. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  509. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  510. data/src/core/lib/iomgr/socket_utils_common_posix.cc +145 -27
  511. data/src/core/lib/iomgr/socket_utils_posix.h +26 -0
  512. data/src/core/lib/iomgr/socket_windows.cc +21 -2
  513. data/src/core/lib/iomgr/socket_windows.h +9 -1
  514. data/src/core/lib/iomgr/tcp_client_cfstream.cc +215 -0
  515. data/src/core/lib/iomgr/tcp_client_custom.cc +19 -7
  516. data/src/core/lib/iomgr/tcp_client_posix.cc +40 -38
  517. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  518. data/src/core/lib/iomgr/tcp_client_windows.cc +11 -10
  519. data/src/core/lib/iomgr/tcp_custom.cc +37 -32
  520. data/src/core/lib/iomgr/tcp_custom.h +3 -0
  521. data/src/core/lib/iomgr/tcp_posix.cc +1196 -168
  522. data/src/core/lib/iomgr/tcp_posix.h +3 -0
  523. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  524. data/src/core/lib/iomgr/tcp_server.h +21 -0
  525. data/src/core/lib/iomgr/tcp_server_custom.cc +43 -30
  526. data/src/core/lib/iomgr/tcp_server_posix.cc +97 -21
  527. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  528. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -16
  529. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  530. data/src/core/lib/iomgr/tcp_server_windows.cc +19 -15
  531. data/src/core/lib/iomgr/tcp_uv.cc +8 -9
  532. data/src/core/lib/iomgr/tcp_windows.cc +110 -48
  533. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  534. data/src/core/lib/iomgr/timer.h +2 -1
  535. data/src/core/lib/iomgr/timer_custom.cc +7 -5
  536. data/src/core/lib/iomgr/timer_generic.cc +42 -40
  537. data/src/core/lib/iomgr/timer_generic.h +39 -0
  538. data/src/core/lib/iomgr/timer_heap.cc +2 -2
  539. data/src/core/lib/iomgr/timer_heap.h +5 -6
  540. data/src/core/lib/iomgr/timer_manager.cc +34 -16
  541. data/src/core/lib/iomgr/timer_manager.h +4 -2
  542. data/src/core/lib/iomgr/udp_server.cc +31 -30
  543. data/src/core/lib/iomgr/udp_server.h +6 -12
  544. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -4
  545. data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -19
  546. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  547. data/src/core/lib/iomgr/work_serializer.h +65 -0
  548. data/src/core/lib/json/json.h +209 -68
  549. data/src/core/lib/json/json_reader.cc +511 -319
  550. data/src/core/lib/json/json_writer.cc +202 -110
  551. data/src/core/lib/profiling/basic_timers.cc +12 -6
  552. data/src/core/lib/security/context/security_context.cc +92 -119
  553. data/src/core/lib/security/context/security_context.h +79 -48
  554. data/src/core/lib/security/credentials/alts/alts_credentials.cc +39 -48
  555. data/src/core/lib/security/credentials/alts/alts_credentials.h +37 -10
  556. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  557. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  558. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +45 -57
  559. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +2 -1
  560. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +3 -2
  561. data/src/core/lib/security/credentials/composite/composite_credentials.cc +119 -159
  562. data/src/core/lib/security/credentials/composite/composite_credentials.h +71 -24
  563. data/src/core/lib/security/credentials/credentials.cc +18 -142
  564. data/src/core/lib/security/credentials/credentials.h +141 -105
  565. data/src/core/lib/security/credentials/fake/fake_credentials.cc +48 -72
  566. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -5
  567. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +186 -99
  568. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +32 -6
  569. data/src/core/lib/security/credentials/iam/iam_credentials.cc +33 -39
  570. data/src/core/lib/security/credentials/iam/iam_credentials.h +22 -4
  571. data/src/core/lib/security/credentials/jwt/json_token.cc +32 -58
  572. data/src/core/lib/security/credentials/jwt/json_token.h +5 -7
  573. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +70 -88
  574. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +41 -10
  575. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +159 -170
  576. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -5
  577. data/src/core/lib/security/credentials/local/local_credentials.cc +21 -34
  578. data/src/core/lib/security/credentials/local/local_credentials.h +32 -11
  579. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +438 -203
  580. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +98 -33
  581. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +89 -91
  582. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +43 -17
  583. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +84 -83
  584. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +60 -15
  585. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +245 -0
  586. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +313 -0
  587. data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
  588. data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
  589. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +301 -0
  590. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +76 -0
  591. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +324 -0
  592. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +45 -0
  593. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
  594. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +15 -9
  595. data/src/core/lib/security/security_connector/local/local_security_connector.cc +281 -0
  596. data/src/core/lib/security/security_connector/local/local_security_connector.h +59 -0
  597. data/src/core/lib/security/security_connector/security_connector.cc +40 -1158
  598. data/src/core/lib/security/security_connector/security_connector.h +100 -209
  599. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +439 -0
  600. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +77 -0
  601. data/src/core/lib/security/security_connector/ssl_utils.cc +563 -0
  602. data/src/core/lib/security/security_connector/ssl_utils.h +184 -0
  603. data/src/core/lib/security/security_connector/ssl_utils_config.cc +32 -0
  604. data/src/core/lib/security/security_connector/ssl_utils_config.h +30 -0
  605. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +603 -0
  606. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
  607. data/src/core/lib/security/transport/auth_filters.h +5 -2
  608. data/src/core/lib/security/transport/client_auth_filter.cc +164 -116
  609. data/src/core/lib/security/transport/secure_endpoint.cc +70 -53
  610. data/src/core/lib/security/transport/security_handshaker.cc +340 -297
  611. data/src/core/lib/security/transport/security_handshaker.h +14 -3
  612. data/src/core/lib/security/transport/server_auth_filter.cc +115 -55
  613. data/src/core/lib/security/transport/target_authority_table.h +1 -1
  614. data/src/core/lib/security/util/json_util.cc +34 -13
  615. data/src/core/lib/security/util/json_util.h +5 -3
  616. data/src/core/lib/slice/b64.cc +3 -4
  617. data/src/core/lib/slice/b64.h +3 -4
  618. data/src/core/lib/slice/percent_encoding.cc +3 -3
  619. data/src/core/lib/slice/percent_encoding.h +3 -3
  620. data/src/core/lib/slice/slice.cc +219 -153
  621. data/src/core/lib/slice/slice_buffer.cc +60 -26
  622. data/src/core/lib/slice/slice_hash_table.h +9 -15
  623. data/src/core/lib/slice/slice_intern.cc +186 -143
  624. data/src/core/lib/slice/slice_internal.h +318 -3
  625. data/src/core/lib/slice/slice_string_helpers.cc +10 -1
  626. data/src/core/lib/slice/slice_string_helpers.h +3 -1
  627. data/src/core/lib/slice/slice_utils.h +200 -0
  628. data/src/core/lib/slice/slice_weak_hash_table.h +10 -17
  629. data/src/core/lib/surface/api_trace.h +1 -1
  630. data/src/core/lib/surface/byte_buffer_reader.cc +15 -43
  631. data/src/core/lib/surface/call.cc +419 -438
  632. data/src/core/lib/surface/call.h +14 -5
  633. data/src/core/lib/surface/call_details.cc +0 -1
  634. data/src/core/lib/surface/call_log_batch.cc +51 -60
  635. data/src/core/lib/surface/channel.cc +205 -144
  636. data/src/core/lib/surface/channel.h +85 -14
  637. data/src/core/lib/surface/channel_init.h +5 -0
  638. data/src/core/lib/surface/channel_ping.cc +3 -4
  639. data/src/core/lib/surface/completion_queue.cc +322 -281
  640. data/src/core/lib/surface/completion_queue.h +7 -21
  641. data/src/core/lib/surface/completion_queue_factory.cc +4 -4
  642. data/src/core/lib/surface/event_string.cc +18 -25
  643. data/src/core/lib/surface/event_string.h +3 -1
  644. data/src/core/lib/surface/init.cc +86 -31
  645. data/src/core/lib/surface/init.h +1 -0
  646. data/src/core/lib/surface/init_secure.cc +4 -4
  647. data/src/core/lib/surface/lame_client.cc +46 -35
  648. data/src/core/lib/surface/server.cc +815 -476
  649. data/src/core/lib/surface/server.h +50 -9
  650. data/src/core/lib/surface/validate_metadata.cc +18 -8
  651. data/src/core/lib/surface/validate_metadata.h +13 -2
  652. data/src/core/lib/surface/version.cc +2 -2
  653. data/src/core/lib/transport/bdp_estimator.cc +3 -3
  654. data/src/core/lib/transport/bdp_estimator.h +2 -2
  655. data/src/core/lib/transport/byte_stream.cc +5 -7
  656. data/src/core/lib/transport/byte_stream.h +13 -12
  657. data/src/core/lib/transport/connectivity_state.cc +114 -129
  658. data/src/core/lib/transport/connectivity_state.h +102 -58
  659. data/src/core/lib/transport/error_utils.cc +25 -2
  660. data/src/core/lib/transport/metadata.cc +428 -288
  661. data/src/core/lib/transport/metadata.h +307 -26
  662. data/src/core/lib/transport/metadata_batch.cc +81 -18
  663. data/src/core/lib/transport/metadata_batch.h +47 -6
  664. data/src/core/lib/transport/static_metadata.cc +1150 -521
  665. data/src/core/lib/transport/static_metadata.h +311 -317
  666. data/src/core/lib/transport/status_conversion.cc +7 -15
  667. data/src/core/lib/transport/status_metadata.cc +11 -4
  668. data/src/core/lib/transport/status_metadata.h +18 -0
  669. data/src/core/lib/transport/timeout_encoding.cc +8 -1
  670. data/src/core/lib/transport/timeout_encoding.h +4 -3
  671. data/src/core/lib/transport/transport.cc +49 -80
  672. data/src/core/lib/transport/transport.h +132 -54
  673. data/src/core/lib/transport/transport_impl.h +1 -1
  674. data/src/core/lib/transport/transport_op_string.cc +67 -105
  675. data/src/core/lib/uri/uri_parser.cc +314 -0
  676. data/src/core/lib/uri/uri_parser.h +49 -0
  677. data/src/core/plugin_registry/grpc_plugin_registry.cc +32 -4
  678. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  679. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  680. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +715 -144
  681. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +49 -35
  682. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +83 -0
  683. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +73 -0
  684. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +373 -217
  685. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +45 -24
  686. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +43 -10
  687. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +13 -7
  688. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +4 -3
  689. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +75 -48
  690. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +35 -27
  691. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +2 -2
  692. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  693. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +13 -3
  694. data/src/core/tsi/fake_transport_security.cc +26 -25
  695. data/src/core/tsi/fake_transport_security.h +2 -0
  696. data/src/core/tsi/local_transport_security.cc +8 -6
  697. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -6
  698. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -3
  699. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +14 -11
  700. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -13
  701. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -3
  702. data/src/core/tsi/ssl_transport_security.cc +289 -125
  703. data/src/core/tsi/ssl_transport_security.h +52 -13
  704. data/src/core/tsi/ssl_types.h +0 -2
  705. data/src/core/tsi/transport_security.cc +31 -1
  706. data/src/core/tsi/transport_security.h +8 -10
  707. data/src/core/tsi/transport_security_grpc.cc +7 -0
  708. data/src/core/tsi/transport_security_grpc.h +8 -3
  709. data/src/core/tsi/transport_security_interface.h +15 -3
  710. data/src/ruby/bin/math_pb.rb +23 -21
  711. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  712. data/src/ruby/ext/grpc/ext-export.gcc +6 -0
  713. data/src/ruby/ext/grpc/extconf.rb +18 -4
  714. data/src/ruby/ext/grpc/rb_call.c +11 -2
  715. data/src/ruby/ext/grpc/rb_call_credentials.c +12 -6
  716. data/src/ruby/ext/grpc/rb_channel.c +18 -11
  717. data/src/ruby/ext/grpc/rb_channel_credentials.c +8 -4
  718. data/src/ruby/ext/grpc/rb_compression_options.c +9 -7
  719. data/src/ruby/ext/grpc/rb_enable_cpp.cc +22 -0
  720. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  721. data/src/ruby/ext/grpc/rb_grpc.c +48 -60
  722. data/src/ruby/ext/grpc/rb_grpc.h +5 -1
  723. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +42 -6
  724. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +67 -13
  725. data/src/ruby/ext/grpc/rb_server.c +10 -4
  726. data/src/ruby/lib/grpc.rb +2 -0
  727. data/src/ruby/lib/grpc/core/status_codes.rb +135 -0
  728. data/src/ruby/lib/grpc/errors.rb +122 -46
  729. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  730. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
  731. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  732. data/src/ruby/lib/grpc/generic/rpc_desc.rb +3 -3
  733. data/src/ruby/lib/grpc/generic/rpc_server.rb +64 -4
  734. data/src/ruby/lib/grpc/generic/service.rb +6 -5
  735. data/src/ruby/lib/grpc/google_rpc_status_utils.rb +9 -4
  736. data/src/ruby/lib/grpc/grpc.rb +1 -1
  737. data/src/ruby/lib/grpc/structs.rb +15 -0
  738. data/src/ruby/lib/grpc/version.rb +1 -1
  739. data/src/ruby/pb/README.md +1 -1
  740. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  741. data/src/ruby/pb/grpc/health/checker.rb +2 -3
  742. data/src/ruby/pb/grpc/health/v1/health_pb.rb +16 -13
  743. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +18 -0
  744. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +4 -2
  745. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +92 -69
  746. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -0
  747. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  748. data/src/ruby/spec/channel_spec.rb +44 -0
  749. data/src/ruby/spec/client_auth_spec.rb +5 -5
  750. data/src/ruby/spec/debug_message_spec.rb +134 -0
  751. data/src/ruby/spec/errors_spec.rb +142 -0
  752. data/src/ruby/spec/generic/client_stub_spec.rb +13 -9
  753. data/src/ruby/spec/generic/rpc_server_spec.rb +25 -3
  754. data/src/ruby/spec/generic/service_spec.rb +2 -0
  755. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  756. data/src/ruby/spec/pb/codegen/grpc/testing/package_options.proto +28 -0
  757. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto +22 -0
  758. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +39 -0
  759. data/src/ruby/spec/pb/codegen/package_option_spec.rb +78 -0
  760. data/src/ruby/spec/support/services.rb +29 -22
  761. data/src/ruby/spec/testdata/ca.pem +18 -13
  762. data/src/ruby/spec/testdata/client.key +26 -14
  763. data/src/ruby/spec/testdata/client.pem +18 -12
  764. data/src/ruby/spec/testdata/server1.key +26 -14
  765. data/src/ruby/spec/testdata/server1.pem +20 -14
  766. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  767. data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
  768. data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
  769. data/third_party/abseil-cpp/absl/base/casts.h +184 -0
  770. data/third_party/abseil-cpp/absl/base/config.h +671 -0
  771. data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  772. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
  773. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
  774. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  775. data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
  776. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
  777. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
  778. data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
  779. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  780. data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  781. data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
  782. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  783. data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
  784. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
  785. data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  786. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
  787. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
  788. data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  789. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
  790. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
  791. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  792. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
  793. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  794. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  795. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
  796. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
  797. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
  798. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
  799. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
  800. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
  801. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
  802. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
  803. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  804. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
  805. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
  806. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
  807. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
  808. data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
  809. data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
  810. data/third_party/abseil-cpp/absl/base/macros.h +220 -0
  811. data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
  812. data/third_party/abseil-cpp/absl/base/options.h +211 -0
  813. data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
  814. data/third_party/abseil-cpp/absl/base/port.h +26 -0
  815. data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
  816. data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
  817. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
  818. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
  819. data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
  820. data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
  821. data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
  822. data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
  823. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
  824. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
  825. data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
  826. data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
  827. data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
  828. data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
  829. data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
  830. data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
  831. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
  832. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  833. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  834. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  835. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  836. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
  837. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
  838. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
  839. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  840. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
  841. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
  842. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
  843. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  844. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  845. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  846. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  847. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  848. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  849. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  850. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  851. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  852. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  853. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  854. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  855. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  856. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  857. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
  858. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
  859. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  860. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  861. data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
  862. data/third_party/abseil-cpp/absl/strings/match.h +90 -0
  863. data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
  864. data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
  865. data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
  866. data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
  867. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  868. data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
  869. data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
  870. data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
  871. data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
  872. data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
  873. data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
  874. data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
  875. data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
  876. data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
  877. data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
  878. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  879. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  880. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  881. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  882. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  883. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  884. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  885. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  886. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  887. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  888. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  889. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  890. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  891. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  892. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  893. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  894. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  895. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  896. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  897. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  898. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  899. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  900. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  901. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  902. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  903. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  904. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  905. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  906. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  907. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  908. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  909. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  910. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  911. data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
  912. data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
  913. data/third_party/abseil-cpp/absl/types/optional.h +776 -0
  914. data/third_party/abseil-cpp/absl/types/span.h +713 -0
  915. data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
  916. data/third_party/boringssl-with-bazel/err_data.c +1439 -0
  917. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  918. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +123 -0
  919. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +93 -0
  920. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +87 -0
  921. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +195 -0
  922. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  923. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +88 -0
  924. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +420 -0
  925. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +305 -0
  926. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +286 -0
  927. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  928. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  929. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +313 -0
  930. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
  931. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  932. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  933. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  934. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +446 -0
  935. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  936. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  937. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  938. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  939. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  940. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  941. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  942. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +664 -0
  943. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  944. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  945. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  946. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  947. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  948. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +466 -0
  949. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +700 -0
  950. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  951. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
  952. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
  953. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
  954. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  955. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  956. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
  957. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  958. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +206 -0
  959. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +118 -0
  960. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  961. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +470 -0
  962. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
  963. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  964. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +265 -0
  965. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
  966. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
  967. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +96 -0
  968. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +155 -0
  969. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +184 -0
  970. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +45 -0
  971. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +143 -0
  972. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
  973. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c +447 -0
  974. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +283 -0
  975. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
  976. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +418 -0
  977. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  978. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  979. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  980. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +688 -0
  981. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  982. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +491 -0
  983. data/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c +278 -0
  984. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +810 -0
  985. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  986. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  987. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  988. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  989. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
  990. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h +201 -0
  991. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  992. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
  993. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  994. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
  995. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
  996. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
  997. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
  998. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
  999. data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
  1000. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
  1001. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  1002. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  1003. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  1004. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
  1005. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  1006. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +574 -0
  1007. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -0
  1008. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  1009. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  1010. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +124 -0
  1011. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +267 -0
  1012. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +99 -0
  1013. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
  1014. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +58 -0
  1015. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  1016. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +443 -0
  1017. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +388 -0
  1018. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +484 -0
  1019. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +269 -0
  1020. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +273 -0
  1021. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
  1022. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +255 -0
  1023. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +104 -0
  1024. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +221 -0
  1025. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
  1026. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +194 -0
  1027. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +110 -0
  1028. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
  1029. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  1030. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  1031. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +213 -0
  1032. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  1033. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  1034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  1035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  1036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
  1037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +236 -0
  1038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +106 -0
  1039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
  1040. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  1041. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  1042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +445 -0
  1043. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  1044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +200 -0
  1045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +236 -0
  1046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +886 -0
  1047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +87 -0
  1048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
  1049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +378 -0
  1050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  1051. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  1052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +694 -0
  1053. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  1054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
  1055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +186 -0
  1056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
  1057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
  1058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +341 -0
  1059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +226 -0
  1060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +104 -0
  1061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +364 -0
  1062. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  1063. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  1064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +620 -0
  1065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
  1066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c +237 -0
  1067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +128 -0
  1068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +89 -0
  1069. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  1070. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  1071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +271 -0
  1072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
  1073. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  1074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +268 -0
  1075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
  1076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
  1077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
  1078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
  1079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +775 -0
  1080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
  1081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1178 -0
  1082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  1083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +632 -0
  1084. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h +153 -0
  1085. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  1086. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  1087. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  1088. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
  1089. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  1090. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +255 -0
  1091. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
  1092. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  1093. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
  1094. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +32 -0
  1095. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  1096. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +29 -0
  1097. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +256 -0
  1098. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +37 -0
  1099. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +301 -0
  1100. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +167 -0
  1101. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +202 -0
  1102. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +200 -0
  1103. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
  1104. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  1105. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
  1106. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +96 -0
  1107. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  1108. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +202 -0
  1109. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  1110. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  1111. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  1112. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +163 -0
  1113. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
  1114. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
  1115. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
  1116. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
  1117. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +695 -0
  1118. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
  1119. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
  1120. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +654 -0
  1121. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +53 -0
  1122. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  1123. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +371 -0
  1124. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +343 -0
  1125. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
  1126. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  1127. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  1128. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  1129. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
  1130. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
  1131. data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
  1132. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +348 -0
  1133. data/third_party/boringssl-with-bazel/src/crypto/mem.c +359 -0
  1134. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
  1135. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
  1136. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  1137. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +261 -0
  1138. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
  1139. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
  1140. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
  1141. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
  1142. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
  1143. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  1144. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  1145. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  1146. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +159 -0
  1147. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
  1148. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +131 -0
  1149. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +316 -0
  1150. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +530 -0
  1151. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1305 -0
  1152. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  1153. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
  1154. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
  1155. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
  1156. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +45 -0
  1157. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
  1158. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
  1159. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  1160. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +30 -0
  1161. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  1162. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
  1163. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  1164. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  1165. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +53 -0
  1166. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  1167. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +22 -0
  1168. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
  1169. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +431 -0
  1170. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  1171. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +59 -0
  1172. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
  1173. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -0
  1174. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  1175. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  1176. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  1177. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  1178. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  1179. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +653 -0
  1180. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
  1181. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  1182. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +842 -0
  1183. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
  1184. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
  1185. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  1186. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  1187. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  1188. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  1189. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +125 -0
  1190. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +244 -0
  1191. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +544 -0
  1192. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  1193. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  1194. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  1195. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  1196. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +476 -0
  1197. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  1198. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +103 -0
  1199. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  1200. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +834 -0
  1201. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
  1202. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
  1203. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +341 -0
  1204. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +185 -0
  1205. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +326 -0
  1206. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +204 -0
  1207. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  1208. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2487 -0
  1209. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
  1210. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +210 -0
  1211. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
  1212. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  1213. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  1214. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  1215. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
  1216. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  1217. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  1218. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  1219. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  1220. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  1221. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  1222. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  1223. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  1224. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  1225. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  1226. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  1227. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +334 -0
  1228. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +141 -0
  1230. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +56 -0
  1231. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +286 -0
  1232. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  1233. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  1234. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  1235. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  1236. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +189 -0
  1237. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +842 -0
  1238. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +207 -0
  1239. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
  1241. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  1242. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  1243. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +463 -0
  1244. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +503 -0
  1245. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  1246. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
  1247. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  1248. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +246 -0
  1249. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  1250. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
  1251. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  1252. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +371 -0
  1253. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  1254. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +68 -0
  1255. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +288 -0
  1256. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  1257. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  1258. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  1259. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  1260. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  1261. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +843 -0
  1262. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +155 -0
  1263. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  1264. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
  1265. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +459 -0
  1266. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +195 -0
  1267. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  1268. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +911 -0
  1269. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  1270. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  1271. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
  1272. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +190 -0
  1273. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +933 -0
  1274. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +93 -0
  1275. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
  1276. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
  1277. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  1278. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
  1279. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +96 -0
  1280. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  1281. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +638 -0
  1282. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +91 -0
  1283. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +180 -0
  1284. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +212 -0
  1285. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
  1286. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +201 -0
  1287. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  1288. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
  1291. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +18 -0
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +118 -0
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +109 -0
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1050 -0
  1300. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  1301. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +186 -0
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +100 -0
  1304. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +282 -0
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +108 -0
  1307. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +109 -0
  1308. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
  1309. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
  1310. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +236 -0
  1311. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  1312. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  1313. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  1314. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  1315. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  1316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +435 -0
  1317. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  1318. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +215 -0
  1319. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +269 -0
  1320. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
  1321. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +102 -0
  1322. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
  1323. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  1324. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +108 -0
  1325. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
  1326. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  1327. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
  1328. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +37 -0
  1329. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +199 -0
  1330. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  1331. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5198 -0
  1332. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +333 -0
  1333. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +542 -0
  1334. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +191 -0
  1335. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +632 -0
  1336. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  1337. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +90 -0
  1338. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1207 -0
  1339. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
  1340. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +831 -0
  1341. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  1342. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
  1343. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
  1344. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
  1345. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +232 -0
  1346. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
  1347. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +353 -0
  1348. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
  1349. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +703 -0
  1350. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
  1351. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1805 -0
  1352. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3572 -0
  1353. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
  1354. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
  1355. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
  1356. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +432 -0
  1357. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
  1358. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
  1359. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1019 -0
  1360. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
  1361. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +585 -0
  1362. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +397 -0
  1363. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3015 -0
  1364. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
  1365. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1333 -0
  1366. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
  1367. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +277 -0
  1368. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
  1369. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +1358 -0
  1370. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +365 -0
  1371. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3870 -0
  1372. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
  1373. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1017 -0
  1374. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
  1375. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1096 -0
  1376. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
  1377. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +703 -0
  1378. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
  1379. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
  1380. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  1381. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
  1382. data/third_party/cares/cares/ares.h +12 -0
  1383. data/third_party/cares/cares/ares_create_query.c +5 -1
  1384. data/third_party/cares/cares/ares_data.c +74 -73
  1385. data/third_party/cares/cares/ares_destroy.c +6 -1
  1386. data/third_party/cares/cares/ares_gethostbyaddr.c +5 -5
  1387. data/third_party/cares/cares/ares_gethostbyname.c +15 -4
  1388. data/third_party/cares/cares/ares_getnameinfo.c +11 -0
  1389. data/third_party/cares/cares/ares_init.c +274 -173
  1390. data/third_party/cares/cares/ares_library_init.c +21 -3
  1391. data/third_party/cares/cares/ares_options.c +6 -2
  1392. data/third_party/cares/cares/ares_parse_naptr_reply.c +7 -6
  1393. data/third_party/cares/cares/ares_parse_ptr_reply.c +4 -2
  1394. data/third_party/cares/cares/ares_platform.c +7 -0
  1395. data/third_party/cares/cares/ares_private.h +19 -11
  1396. data/third_party/cares/cares/ares_process.c +27 -2
  1397. data/third_party/cares/cares/ares_rules.h +1 -1
  1398. data/third_party/cares/cares/ares_search.c +7 -0
  1399. data/third_party/cares/cares/ares_send.c +6 -0
  1400. data/third_party/cares/cares/ares_strsplit.c +174 -0
  1401. data/third_party/cares/cares/ares_strsplit.h +43 -0
  1402. data/third_party/cares/cares/ares_version.h +4 -4
  1403. data/third_party/cares/cares/config-win32.h +1 -1
  1404. data/third_party/cares/cares/inet_ntop.c +2 -3
  1405. data/third_party/cares/config_darwin/ares_config.h +3 -0
  1406. data/third_party/cares/config_freebsd/ares_config.h +3 -0
  1407. data/third_party/cares/config_linux/ares_config.h +3 -0
  1408. data/third_party/cares/config_openbsd/ares_config.h +3 -0
  1409. data/third_party/upb/upb/decode.c +609 -0
  1410. data/third_party/upb/upb/decode.h +21 -0
  1411. data/third_party/upb/upb/encode.c +378 -0
  1412. data/third_party/upb/upb/encode.h +21 -0
  1413. data/third_party/upb/upb/generated_util.h +105 -0
  1414. data/third_party/upb/upb/msg.c +111 -0
  1415. data/third_party/upb/upb/msg.h +69 -0
  1416. data/third_party/upb/upb/port.c +26 -0
  1417. data/third_party/upb/upb/port_def.inc +150 -0
  1418. data/third_party/upb/upb/port_undef.inc +21 -0
  1419. data/third_party/upb/upb/table.c +913 -0
  1420. data/third_party/upb/upb/table.int.h +507 -0
  1421. data/third_party/upb/upb/upb.c +261 -0
  1422. data/third_party/upb/upb/upb.h +364 -0
  1423. metadata +968 -542
  1424. data/src/boringssl/err_data.c +0 -1362
  1425. data/src/core/ext/filters/client_channel/connector.cc +0 -41
  1426. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +0 -19
  1427. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +0 -54
  1428. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +0 -19
  1429. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +0 -54
  1430. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +0 -89
  1431. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +0 -164
  1432. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +0 -163
  1433. data/src/core/ext/filters/client_channel/method_params.cc +0 -178
  1434. data/src/core/ext/filters/client_channel/method_params.h +0 -78
  1435. data/src/core/ext/filters/client_channel/proxy_mapper.cc +0 -48
  1436. data/src/core/ext/filters/client_channel/subchannel_index.cc +0 -254
  1437. data/src/core/ext/filters/client_channel/subchannel_index.h +0 -79
  1438. data/src/core/ext/filters/client_channel/uri_parser.cc +0 -314
  1439. data/src/core/ext/filters/client_channel/uri_parser.h +0 -50
  1440. data/src/core/lib/channel/handshaker_factory.cc +0 -41
  1441. data/src/core/lib/gpr/arena.cc +0 -145
  1442. data/src/core/lib/gpr/host_port.cc +0 -98
  1443. data/src/core/lib/gpr/host_port.h +0 -43
  1444. data/src/core/lib/gpr/mpscq.cc +0 -117
  1445. data/src/core/lib/gpr/mpscq.h +0 -86
  1446. data/src/core/lib/gprpp/abstract.h +0 -37
  1447. data/src/core/lib/gprpp/atomic_with_atm.h +0 -57
  1448. data/src/core/lib/gprpp/atomic_with_std.h +0 -35
  1449. data/src/core/lib/gprpp/inlined_vector.h +0 -186
  1450. data/src/core/lib/gprpp/mutex_lock.h +0 -42
  1451. data/src/core/lib/iomgr/ev_epollsig_linux.cc +0 -1743
  1452. data/src/core/lib/iomgr/ev_epollsig_linux.h +0 -35
  1453. data/src/core/lib/iomgr/network_status_tracker.cc +0 -36
  1454. data/src/core/lib/iomgr/network_status_tracker.h +0 -32
  1455. data/src/core/lib/iomgr/wakeup_fd_cv.cc +0 -107
  1456. data/src/core/lib/iomgr/wakeup_fd_cv.h +0 -69
  1457. data/src/core/lib/json/json.cc +0 -97
  1458. data/src/core/lib/json/json_common.h +0 -34
  1459. data/src/core/lib/json/json_reader.h +0 -146
  1460. data/src/core/lib/json/json_string.cc +0 -367
  1461. data/src/core/lib/json/json_writer.h +0 -84
  1462. data/src/core/lib/security/security_connector/alts_security_connector.cc +0 -288
  1463. data/src/core/lib/security/security_connector/alts_security_connector.h +0 -69
  1464. data/src/core/lib/security/security_connector/local_security_connector.cc +0 -245
  1465. data/src/core/lib/security/security_connector/local_security_connector.h +0 -58
  1466. data/src/core/lib/transport/service_config.cc +0 -106
  1467. data/src/core/lib/transport/service_config.h +0 -249
  1468. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +0 -520
  1469. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +0 -323
  1470. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +0 -143
  1471. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +0 -149
  1472. data/src/core/tsi/alts/handshaker/alts_tsi_event.cc +0 -73
  1473. data/src/core/tsi/alts/handshaker/alts_tsi_event.h +0 -93
  1474. data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -47
  1475. data/src/core/tsi/alts/handshaker/altscontext.pb.h +0 -63
  1476. data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -122
  1477. data/src/core/tsi/alts/handshaker/handshaker.pb.h +0 -254
  1478. data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -49
  1479. data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +0 -78
  1480. data/src/core/tsi/alts_transport_security.cc +0 -63
  1481. data/src/core/tsi/alts_transport_security.h +0 -47
  1482. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3006
  1483. data/third_party/boringssl/crypto/asn1/a_bool.c +0 -110
  1484. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +0 -297
  1485. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -111
  1486. data/third_party/boringssl/crypto/asn1/a_enum.c +0 -195
  1487. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +0 -150
  1488. data/third_party/boringssl/crypto/asn1/a_int.c +0 -479
  1489. data/third_party/boringssl/crypto/asn1/a_mbstr.c +0 -411
  1490. data/third_party/boringssl/crypto/asn1/a_object.c +0 -275
  1491. data/third_party/boringssl/crypto/asn1/a_strnid.c +0 -312
  1492. data/third_party/boringssl/crypto/asn1/a_time.c +0 -213
  1493. data/third_party/boringssl/crypto/asn1/asn1_lib.c +0 -442
  1494. data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -662
  1495. data/third_party/boringssl/crypto/base64/base64.c +0 -466
  1496. data/third_party/boringssl/crypto/bio/bio.c +0 -636
  1497. data/third_party/boringssl/crypto/bio/connect.c +0 -542
  1498. data/third_party/boringssl/crypto/bio/fd.c +0 -276
  1499. data/third_party/boringssl/crypto/bio/file.c +0 -315
  1500. data/third_party/boringssl/crypto/bio/pair.c +0 -489
  1501. data/third_party/boringssl/crypto/bio/socket.c +0 -202
  1502. data/third_party/boringssl/crypto/bio/socket_helper.c +0 -114
  1503. data/third_party/boringssl/crypto/bn_extra/convert.c +0 -466
  1504. data/third_party/boringssl/crypto/buf/buf.c +0 -231
  1505. data/third_party/boringssl/crypto/bytestring/ber.c +0 -261
  1506. data/third_party/boringssl/crypto/bytestring/cbb.c +0 -668
  1507. data/third_party/boringssl/crypto/bytestring/cbs.c +0 -618
  1508. data/third_party/boringssl/crypto/bytestring/internal.h +0 -75
  1509. data/third_party/boringssl/crypto/chacha/chacha.c +0 -167
  1510. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +0 -114
  1511. data/third_party/boringssl/crypto/cipher_extra/derive_key.c +0 -152
  1512. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +0 -203
  1513. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +0 -281
  1514. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +0 -867
  1515. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +0 -326
  1516. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  1517. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +0 -680
  1518. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +0 -482
  1519. data/third_party/boringssl/crypto/cmac/cmac.c +0 -241
  1520. data/third_party/boringssl/crypto/conf/conf.c +0 -803
  1521. data/third_party/boringssl/crypto/cpu-arm-linux.c +0 -363
  1522. data/third_party/boringssl/crypto/cpu-intel.c +0 -288
  1523. data/third_party/boringssl/crypto/crypto.c +0 -198
  1524. data/third_party/boringssl/crypto/curve25519/spake25519.c +0 -539
  1525. data/third_party/boringssl/crypto/dh/check.c +0 -217
  1526. data/third_party/boringssl/crypto/dh/dh.c +0 -519
  1527. data/third_party/boringssl/crypto/dsa/dsa.c +0 -946
  1528. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +0 -562
  1529. data/third_party/boringssl/crypto/ecdh/ecdh.c +0 -162
  1530. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +0 -275
  1531. data/third_party/boringssl/crypto/engine/engine.c +0 -98
  1532. data/third_party/boringssl/crypto/err/err.c +0 -847
  1533. data/third_party/boringssl/crypto/err/internal.h +0 -58
  1534. data/third_party/boringssl/crypto/evp/evp.c +0 -362
  1535. data/third_party/boringssl/crypto/evp/evp_asn1.c +0 -337
  1536. data/third_party/boringssl/crypto/evp/evp_ctx.c +0 -446
  1537. data/third_party/boringssl/crypto/evp/internal.h +0 -252
  1538. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +0 -268
  1539. data/third_party/boringssl/crypto/evp/p_ec.c +0 -239
  1540. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +0 -256
  1541. data/third_party/boringssl/crypto/evp/p_ed25519.c +0 -71
  1542. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +0 -190
  1543. data/third_party/boringssl/crypto/evp/p_rsa.c +0 -634
  1544. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +0 -189
  1545. data/third_party/boringssl/crypto/evp/scrypt.c +0 -209
  1546. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -1100
  1547. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +0 -100
  1548. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +0 -138
  1549. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +0 -112
  1550. data/third_party/boringssl/crypto/fipsmodule/bcm.c +0 -148
  1551. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +0 -428
  1552. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +0 -200
  1553. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +0 -303
  1554. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +0 -895
  1555. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +0 -1356
  1556. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -683
  1557. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +0 -573
  1558. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +0 -526
  1559. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +0 -185
  1560. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +0 -876
  1561. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +0 -1154
  1562. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +0 -351
  1563. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +0 -231
  1564. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +0 -33
  1565. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +0 -364
  1566. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +0 -615
  1567. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +0 -1437
  1568. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +0 -233
  1569. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +0 -129
  1570. data/third_party/boringssl/crypto/fipsmodule/delocate.h +0 -88
  1571. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +0 -256
  1572. data/third_party/boringssl/crypto/fipsmodule/digest/digests.c +0 -280
  1573. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +0 -268
  1574. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +0 -974
  1575. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +0 -453
  1576. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -270
  1577. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +0 -337
  1578. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +0 -373
  1579. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +0 -1104
  1580. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9503
  1581. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +0 -447
  1582. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +0 -117
  1583. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +0 -1046
  1584. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +0 -104
  1585. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +0 -354
  1586. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +0 -458
  1587. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +0 -27
  1588. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +0 -254
  1589. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +0 -298
  1590. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +0 -211
  1591. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  1592. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +0 -234
  1593. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +0 -220
  1594. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +0 -1063
  1595. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +0 -388
  1596. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +0 -95
  1597. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +0 -202
  1598. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +0 -92
  1599. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +0 -358
  1600. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +0 -302
  1601. data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +0 -239
  1602. data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -126
  1603. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +0 -692
  1604. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +0 -875
  1605. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +0 -1218
  1606. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +0 -581
  1607. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +0 -375
  1608. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +0 -337
  1609. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +0 -608
  1610. data/third_party/boringssl/crypto/internal.h +0 -739
  1611. data/third_party/boringssl/crypto/lhash/lhash.c +0 -336
  1612. data/third_party/boringssl/crypto/mem.c +0 -235
  1613. data/third_party/boringssl/crypto/obj/obj.c +0 -554
  1614. data/third_party/boringssl/crypto/obj/obj_dat.h +0 -6244
  1615. data/third_party/boringssl/crypto/pem/pem_all.c +0 -262
  1616. data/third_party/boringssl/crypto/pem/pem_info.c +0 -379
  1617. data/third_party/boringssl/crypto/pem/pem_lib.c +0 -776
  1618. data/third_party/boringssl/crypto/pem/pem_oth.c +0 -88
  1619. data/third_party/boringssl/crypto/pem/pem_pk8.c +0 -258
  1620. data/third_party/boringssl/crypto/pem/pem_pkey.c +0 -227
  1621. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +0 -166
  1622. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +0 -233
  1623. data/third_party/boringssl/crypto/pkcs8/internal.h +0 -120
  1624. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +0 -307
  1625. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +0 -513
  1626. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +0 -789
  1627. data/third_party/boringssl/crypto/poly1305/poly1305.c +0 -318
  1628. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +0 -304
  1629. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +0 -839
  1630. data/third_party/boringssl/crypto/pool/internal.h +0 -45
  1631. data/third_party/boringssl/crypto/pool/pool.c +0 -200
  1632. data/third_party/boringssl/crypto/rand_extra/deterministic.c +0 -48
  1633. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +0 -43
  1634. data/third_party/boringssl/crypto/rand_extra/windows.c +0 -53
  1635. data/third_party/boringssl/crypto/refcount_lock.c +0 -53
  1636. data/third_party/boringssl/crypto/stack/stack.c +0 -380
  1637. data/third_party/boringssl/crypto/thread_none.c +0 -59
  1638. data/third_party/boringssl/crypto/thread_pthread.c +0 -206
  1639. data/third_party/boringssl/crypto/thread_win.c +0 -237
  1640. data/third_party/boringssl/crypto/x509/a_strex.c +0 -633
  1641. data/third_party/boringssl/crypto/x509/a_verify.c +0 -115
  1642. data/third_party/boringssl/crypto/x509/asn1_gen.c +0 -841
  1643. data/third_party/boringssl/crypto/x509/by_dir.c +0 -451
  1644. data/third_party/boringssl/crypto/x509/by_file.c +0 -274
  1645. data/third_party/boringssl/crypto/x509/t_crl.c +0 -128
  1646. data/third_party/boringssl/crypto/x509/t_req.c +0 -246
  1647. data/third_party/boringssl/crypto/x509/t_x509.c +0 -547
  1648. data/third_party/boringssl/crypto/x509/x509_cmp.c +0 -477
  1649. data/third_party/boringssl/crypto/x509/x509_def.c +0 -103
  1650. data/third_party/boringssl/crypto/x509/x509_lu.c +0 -725
  1651. data/third_party/boringssl/crypto/x509/x509_obj.c +0 -198
  1652. data/third_party/boringssl/crypto/x509/x509_r2x.c +0 -117
  1653. data/third_party/boringssl/crypto/x509/x509_req.c +0 -322
  1654. data/third_party/boringssl/crypto/x509/x509_set.c +0 -164
  1655. data/third_party/boringssl/crypto/x509/x509_trs.c +0 -326
  1656. data/third_party/boringssl/crypto/x509/x509_txt.c +0 -205
  1657. data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -2476
  1658. data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -670
  1659. data/third_party/boringssl/crypto/x509/x509cset.c +0 -170
  1660. data/third_party/boringssl/crypto/x509/x509name.c +0 -389
  1661. data/third_party/boringssl/crypto/x509/x_all.c +0 -501
  1662. data/third_party/boringssl/crypto/x509/x_x509.c +0 -328
  1663. data/third_party/boringssl/crypto/x509v3/ext_dat.h +0 -143
  1664. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +0 -284
  1665. data/third_party/boringssl/crypto/x509v3/pcy_node.c +0 -188
  1666. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +0 -840
  1667. data/third_party/boringssl/crypto/x509v3/v3_akey.c +0 -204
  1668. data/third_party/boringssl/crypto/x509v3/v3_alt.c +0 -623
  1669. data/third_party/boringssl/crypto/x509v3/v3_conf.c +0 -462
  1670. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +0 -502
  1671. data/third_party/boringssl/crypto/x509v3/v3_enum.c +0 -100
  1672. data/third_party/boringssl/crypto/x509v3/v3_genn.c +0 -251
  1673. data/third_party/boringssl/crypto/x509v3/v3_info.c +0 -219
  1674. data/third_party/boringssl/crypto/x509v3/v3_lib.c +0 -370
  1675. data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -287
  1676. data/third_party/boringssl/crypto/x509v3/v3_purp.c +0 -866
  1677. data/third_party/boringssl/crypto/x509v3/v3_skey.c +0 -152
  1678. data/third_party/boringssl/crypto/x509v3/v3_utl.c +0 -1352
  1679. data/third_party/boringssl/include/openssl/aead.h +0 -433
  1680. data/third_party/boringssl/include/openssl/aes.h +0 -170
  1681. data/third_party/boringssl/include/openssl/asn1.h +0 -981
  1682. data/third_party/boringssl/include/openssl/base.h +0 -457
  1683. data/third_party/boringssl/include/openssl/base64.h +0 -187
  1684. data/third_party/boringssl/include/openssl/bio.h +0 -902
  1685. data/third_party/boringssl/include/openssl/blowfish.h +0 -93
  1686. data/third_party/boringssl/include/openssl/bn.h +0 -1019
  1687. data/third_party/boringssl/include/openssl/buf.h +0 -137
  1688. data/third_party/boringssl/include/openssl/bytestring.h +0 -505
  1689. data/third_party/boringssl/include/openssl/cast.h +0 -96
  1690. data/third_party/boringssl/include/openssl/cipher.h +0 -608
  1691. data/third_party/boringssl/include/openssl/cmac.h +0 -87
  1692. data/third_party/boringssl/include/openssl/conf.h +0 -183
  1693. data/third_party/boringssl/include/openssl/cpu.h +0 -196
  1694. data/third_party/boringssl/include/openssl/crypto.h +0 -122
  1695. data/third_party/boringssl/include/openssl/curve25519.h +0 -201
  1696. data/third_party/boringssl/include/openssl/dh.h +0 -298
  1697. data/third_party/boringssl/include/openssl/digest.h +0 -316
  1698. data/third_party/boringssl/include/openssl/dsa.h +0 -435
  1699. data/third_party/boringssl/include/openssl/ec.h +0 -413
  1700. data/third_party/boringssl/include/openssl/ec_key.h +0 -342
  1701. data/third_party/boringssl/include/openssl/ecdh.h +0 -101
  1702. data/third_party/boringssl/include/openssl/ecdsa.h +0 -199
  1703. data/third_party/boringssl/include/openssl/engine.h +0 -109
  1704. data/third_party/boringssl/include/openssl/err.h +0 -458
  1705. data/third_party/boringssl/include/openssl/evp.h +0 -873
  1706. data/third_party/boringssl/include/openssl/hmac.h +0 -186
  1707. data/third_party/boringssl/include/openssl/lhash.h +0 -174
  1708. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  1709. data/third_party/boringssl/include/openssl/md4.h +0 -106
  1710. data/third_party/boringssl/include/openssl/md5.h +0 -107
  1711. data/third_party/boringssl/include/openssl/mem.h +0 -156
  1712. data/third_party/boringssl/include/openssl/nid.h +0 -4242
  1713. data/third_party/boringssl/include/openssl/obj.h +0 -233
  1714. data/third_party/boringssl/include/openssl/pem.h +0 -397
  1715. data/third_party/boringssl/include/openssl/pkcs7.h +0 -82
  1716. data/third_party/boringssl/include/openssl/pkcs8.h +0 -230
  1717. data/third_party/boringssl/include/openssl/poly1305.h +0 -51
  1718. data/third_party/boringssl/include/openssl/pool.h +0 -91
  1719. data/third_party/boringssl/include/openssl/rand.h +0 -125
  1720. data/third_party/boringssl/include/openssl/ripemd.h +0 -107
  1721. data/third_party/boringssl/include/openssl/rsa.h +0 -756
  1722. data/third_party/boringssl/include/openssl/sha.h +0 -256
  1723. data/third_party/boringssl/include/openssl/span.h +0 -191
  1724. data/third_party/boringssl/include/openssl/ssl.h +0 -4740
  1725. data/third_party/boringssl/include/openssl/ssl3.h +0 -332
  1726. data/third_party/boringssl/include/openssl/stack.h +0 -485
  1727. data/third_party/boringssl/include/openssl/thread.h +0 -191
  1728. data/third_party/boringssl/include/openssl/tls1.h +0 -618
  1729. data/third_party/boringssl/include/openssl/type_check.h +0 -91
  1730. data/third_party/boringssl/include/openssl/x509.h +0 -1180
  1731. data/third_party/boringssl/include/openssl/x509_vfy.h +0 -614
  1732. data/third_party/boringssl/include/openssl/x509v3.h +0 -827
  1733. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
  1734. data/third_party/boringssl/ssl/d1_both.cc +0 -851
  1735. data/third_party/boringssl/ssl/d1_lib.cc +0 -267
  1736. data/third_party/boringssl/ssl/d1_pkt.cc +0 -274
  1737. data/third_party/boringssl/ssl/d1_srtp.cc +0 -232
  1738. data/third_party/boringssl/ssl/dtls_method.cc +0 -193
  1739. data/third_party/boringssl/ssl/dtls_record.cc +0 -353
  1740. data/third_party/boringssl/ssl/handoff.cc +0 -285
  1741. data/third_party/boringssl/ssl/handshake.cc +0 -630
  1742. data/third_party/boringssl/ssl/handshake_client.cc +0 -1842
  1743. data/third_party/boringssl/ssl/handshake_server.cc +0 -1674
  1744. data/third_party/boringssl/ssl/internal.h +0 -3064
  1745. data/third_party/boringssl/ssl/s3_both.cc +0 -585
  1746. data/third_party/boringssl/ssl/s3_lib.cc +0 -226
  1747. data/third_party/boringssl/ssl/s3_pkt.cc +0 -425
  1748. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +0 -412
  1749. data/third_party/boringssl/ssl/ssl_asn1.cc +0 -844
  1750. data/third_party/boringssl/ssl/ssl_buffer.cc +0 -286
  1751. data/third_party/boringssl/ssl/ssl_cert.cc +0 -913
  1752. data/third_party/boringssl/ssl/ssl_cipher.cc +0 -1781
  1753. data/third_party/boringssl/ssl/ssl_file.cc +0 -583
  1754. data/third_party/boringssl/ssl/ssl_key_share.cc +0 -252
  1755. data/third_party/boringssl/ssl/ssl_lib.cc +0 -2719
  1756. data/third_party/boringssl/ssl/ssl_privkey.cc +0 -494
  1757. data/third_party/boringssl/ssl/ssl_session.cc +0 -1221
  1758. data/third_party/boringssl/ssl/ssl_stat.cc +0 -224
  1759. data/third_party/boringssl/ssl/ssl_transcript.cc +0 -398
  1760. data/third_party/boringssl/ssl/ssl_versions.cc +0 -399
  1761. data/third_party/boringssl/ssl/ssl_x509.cc +0 -1297
  1762. data/third_party/boringssl/ssl/t1_enc.cc +0 -452
  1763. data/third_party/boringssl/ssl/t1_lib.cc +0 -3783
  1764. data/third_party/boringssl/ssl/tls13_both.cc +0 -559
  1765. data/third_party/boringssl/ssl/tls13_client.cc +0 -891
  1766. data/third_party/boringssl/ssl/tls13_enc.cc +0 -493
  1767. data/third_party/boringssl/ssl/tls13_server.cc +0 -1022
  1768. data/third_party/boringssl/ssl/tls_method.cc +0 -274
  1769. data/third_party/boringssl/ssl/tls_record.cc +0 -703
  1770. data/third_party/boringssl/third_party/fiat/curve25519.c +0 -3230
  1771. data/third_party/boringssl/third_party/fiat/curve25519_tables.h +0 -7880
  1772. data/third_party/boringssl/third_party/fiat/internal.h +0 -154
  1773. data/third_party/boringssl/third_party/fiat/p256.c +0 -1824
  1774. data/third_party/nanopb/pb.h +0 -579
  1775. data/third_party/nanopb/pb_common.c +0 -97
  1776. data/third_party/nanopb/pb_common.h +0 -42
  1777. data/third_party/nanopb/pb_decode.c +0 -1347
  1778. data/third_party/nanopb/pb_decode.h +0 -149
  1779. data/third_party/nanopb/pb_encode.c +0 -696
  1780. data/third_party/nanopb/pb_encode.h +0 -154
@@ -44,34 +44,27 @@ class SliceWeakHashTable : public RefCounted<SliceWeakHashTable<T, Size>> {
44
44
  return MakeRefCounted<SliceWeakHashTable<T, Size>>();
45
45
  }
46
46
 
47
+ /// Use Create function instead of using this directly.
48
+ SliceWeakHashTable() = default;
49
+ ~SliceWeakHashTable() = default;
50
+
47
51
  /// Add a mapping from \a key to \a value, taking ownership of \a key. This
48
52
  /// operation will always succeed. It may discard older entries.
49
- void Add(grpc_slice key, T value) {
50
- const size_t idx = grpc_slice_hash(key) % Size;
53
+ void Add(const grpc_slice& key, T value) {
54
+ const size_t idx = grpc_slice_hash_internal(key) % Size;
51
55
  entries_[idx].Set(key, std::move(value));
52
56
  return;
53
57
  }
54
58
 
55
59
  /// Returns the value from the table associated with / \a key or null if not
56
60
  /// found.
57
- const T* Get(const grpc_slice key) const {
58
- const size_t idx = grpc_slice_hash(key) % Size;
61
+ const T* Get(const grpc_slice& key) const {
62
+ const size_t idx = grpc_slice_hash_internal(key) % Size;
59
63
  const auto& entry = entries_[idx];
60
64
  return grpc_slice_eq(entry.key(), key) ? entry.value() : nullptr;
61
65
  }
62
66
 
63
67
  private:
64
- // So New() can call our private ctor.
65
- template <typename T2, typename... Args>
66
- friend T2* New(Args&&... args);
67
-
68
- // So Delete() can call our private dtor.
69
- template <typename T2>
70
- friend void Delete(T2*);
71
-
72
- SliceWeakHashTable() = default;
73
- ~SliceWeakHashTable() = default;
74
-
75
68
  /// The type of the table "rows".
76
69
  class Entry {
77
70
  public:
@@ -79,7 +72,7 @@ class SliceWeakHashTable : public RefCounted<SliceWeakHashTable<T, Size>> {
79
72
  ~Entry() {
80
73
  if (is_set_) grpc_slice_unref_internal(key_);
81
74
  }
82
- grpc_slice key() const { return key_; }
75
+ const grpc_slice& key() const { return key_; }
83
76
 
84
77
  /// Return the entry's value, or null if unset.
85
78
  const T* value() const {
@@ -88,7 +81,7 @@ class SliceWeakHashTable : public RefCounted<SliceWeakHashTable<T, Size>> {
88
81
  }
89
82
 
90
83
  /// Set the \a key and \a value (which is moved) for the entry.
91
- void Set(grpc_slice key, T&& value) {
84
+ void Set(const grpc_slice& key, T&& value) {
92
85
  if (is_set_) grpc_slice_unref_internal(key_);
93
86
  key_ = key;
94
87
  value_ = std::move(value);
@@ -45,7 +45,7 @@ extern grpc_core::TraceFlag grpc_api_trace;
45
45
  /* Due to the limitations of C89's preprocessor, the arity of the var-arg list
46
46
  'nargs' must be specified. */
47
47
  #define GRPC_API_TRACE(fmt, nargs, args) \
48
- if (grpc_api_trace.enabled()) { \
48
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace)) { \
49
49
  gpr_log(GPR_INFO, fmt GRPC_API_TRACE_UNWRAP##nargs args); \
50
50
  }
51
51
 
@@ -22,73 +22,45 @@
22
22
  #include <string.h>
23
23
 
24
24
  #include <grpc/byte_buffer.h>
25
- #include <grpc/compression.h>
26
25
  #include <grpc/grpc.h>
27
26
  #include <grpc/slice_buffer.h>
28
27
  #include <grpc/support/alloc.h>
29
28
  #include <grpc/support/log.h>
30
29
 
31
- #include "src/core/lib/compression/message_compress.h"
32
30
  #include "src/core/lib/iomgr/exec_ctx.h"
33
31
  #include "src/core/lib/slice/slice_internal.h"
34
32
 
35
- static int is_compressed(grpc_byte_buffer* buffer) {
36
- switch (buffer->type) {
37
- case GRPC_BB_RAW:
38
- if (buffer->data.raw.compression == GRPC_COMPRESS_NONE) {
39
- return 0 /* GPR_FALSE */;
40
- }
41
- break;
42
- }
43
- return 1 /* GPR_TRUE */;
44
- }
45
-
46
33
  int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
47
34
  grpc_byte_buffer* buffer) {
48
- grpc_core::ExecCtx exec_ctx;
49
- grpc_slice_buffer decompressed_slices_buffer;
50
35
  reader->buffer_in = buffer;
51
36
  switch (reader->buffer_in->type) {
52
37
  case GRPC_BB_RAW:
53
- grpc_slice_buffer_init(&decompressed_slices_buffer);
54
- if (is_compressed(reader->buffer_in)) {
55
- if (grpc_msg_decompress(
56
-
57
- grpc_compression_algorithm_to_message_compression_algorithm(
58
- reader->buffer_in->data.raw.compression),
59
- &reader->buffer_in->data.raw.slice_buffer,
60
- &decompressed_slices_buffer) == 0) {
61
- gpr_log(GPR_ERROR,
62
- "Unexpected error decompressing data for algorithm with enum "
63
- "value '%d'.",
64
- reader->buffer_in->data.raw.compression);
65
- memset(reader, 0, sizeof(*reader));
66
- return 0;
67
- } else { /* all fine */
68
- reader->buffer_out =
69
- grpc_raw_byte_buffer_create(decompressed_slices_buffer.slices,
70
- decompressed_slices_buffer.count);
71
- }
72
- grpc_slice_buffer_destroy_internal(&decompressed_slices_buffer);
73
- } else { /* not compressed, use the input buffer as output */
74
- reader->buffer_out = reader->buffer_in;
75
- }
38
+ reader->buffer_out = reader->buffer_in;
76
39
  reader->current.index = 0;
77
40
  break;
78
41
  }
79
-
80
42
  return 1;
81
43
  }
82
44
 
83
45
  void grpc_byte_buffer_reader_destroy(grpc_byte_buffer_reader* reader) {
46
+ reader->buffer_out = nullptr;
47
+ }
48
+
49
+ int grpc_byte_buffer_reader_peek(grpc_byte_buffer_reader* reader,
50
+ grpc_slice** slice) {
84
51
  switch (reader->buffer_in->type) {
85
- case GRPC_BB_RAW:
86
- /* keeping the same if-else structure as in the init function */
87
- if (is_compressed(reader->buffer_in)) {
88
- grpc_byte_buffer_destroy(reader->buffer_out);
52
+ case GRPC_BB_RAW: {
53
+ grpc_slice_buffer* slice_buffer;
54
+ slice_buffer = &reader->buffer_out->data.raw.slice_buffer;
55
+ if (reader->current.index < slice_buffer->count) {
56
+ *slice = &slice_buffer->slices[reader->current.index];
57
+ reader->current.index += 1;
58
+ return 1;
89
59
  }
90
60
  break;
61
+ }
91
62
  }
63
+ return 0;
92
64
  }
93
65
 
94
66
  int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
@@ -35,19 +35,22 @@
35
35
  #include "src/core/lib/compression/algorithm_metadata.h"
36
36
  #include "src/core/lib/debug/stats.h"
37
37
  #include "src/core/lib/gpr/alloc.h"
38
- #include "src/core/lib/gpr/arena.h"
39
38
  #include "src/core/lib/gpr/string.h"
39
+ #include "src/core/lib/gpr/time_precise.h"
40
40
  #include "src/core/lib/gpr/useful.h"
41
+ #include "src/core/lib/gprpp/arena.h"
41
42
  #include "src/core/lib/gprpp/manual_constructor.h"
43
+ #include "src/core/lib/gprpp/ref_counted.h"
42
44
  #include "src/core/lib/iomgr/timer.h"
43
45
  #include "src/core/lib/profiling/timers.h"
44
- #include "src/core/lib/slice/slice_internal.h"
45
46
  #include "src/core/lib/slice/slice_string_helpers.h"
47
+ #include "src/core/lib/slice/slice_utils.h"
46
48
  #include "src/core/lib/surface/api_trace.h"
47
49
  #include "src/core/lib/surface/call.h"
48
50
  #include "src/core/lib/surface/call_test_only.h"
49
51
  #include "src/core/lib/surface/channel.h"
50
52
  #include "src/core/lib/surface/completion_queue.h"
53
+ #include "src/core/lib/surface/server.h"
51
54
  #include "src/core/lib/surface/validate_metadata.h"
52
55
  #include "src/core/lib/transport/error_utils.h"
53
56
  #include "src/core/lib/transport/metadata.h"
@@ -71,48 +74,11 @@
71
74
  // Used to create arena for the first call.
72
75
  #define ESTIMATED_MDELEM_COUNT 16
73
76
 
74
- /* Status data for a request can come from several sources; this
75
- enumerates them all, and acts as a priority sorting for which
76
- status to return to the application - earlier entries override
77
- later ones */
78
- typedef enum {
79
- /* Status came from the application layer overriding whatever
80
- the wire says */
81
- STATUS_FROM_API_OVERRIDE = 0,
82
- /* Status came from 'the wire' - or somewhere below the surface
83
- layer */
84
- STATUS_FROM_WIRE,
85
- /* Status was created by some internal channel stack operation: must come via
86
- add_batch_error */
87
- STATUS_FROM_CORE,
88
- /* Status was created by some surface error */
89
- STATUS_FROM_SURFACE,
90
- /* Status came from the server sending status */
91
- STATUS_FROM_SERVER_STATUS,
92
- STATUS_SOURCE_COUNT
93
- } status_source;
94
-
95
- typedef struct {
96
- bool is_set;
97
- grpc_error* error;
98
- } received_status;
99
-
100
- static gpr_atm pack_received_status(received_status r) {
101
- return r.is_set ? (1 | (gpr_atm)r.error) : 0;
102
- }
77
+ struct batch_control {
78
+ batch_control() = default;
103
79
 
104
- static received_status unpack_received_status(gpr_atm atm) {
105
- if ((atm & 1) == 0) {
106
- return {false, GRPC_ERROR_NONE};
107
- } else {
108
- return {true, (grpc_error*)(atm & ~static_cast<gpr_atm>(1))};
109
- }
110
- }
111
-
112
- #define MAX_ERRORS_PER_BATCH 4
113
-
114
- typedef struct batch_control {
115
- grpc_call* call;
80
+ grpc_call* call = nullptr;
81
+ grpc_transport_stream_op_batch op;
116
82
  /* Share memory for cq_completion and notify_tag as they are never needed
117
83
  simultaneously. Each byte used in this data structure count as six bytes
118
84
  per call, so any savings we can make are worthwhile,
@@ -134,91 +100,114 @@ typedef struct batch_control {
134
100
  } completion_data;
135
101
  grpc_closure start_batch;
136
102
  grpc_closure finish_batch;
137
- gpr_refcount steps_to_complete;
138
-
139
- grpc_error* errors[MAX_ERRORS_PER_BATCH];
140
- gpr_atm num_errors;
103
+ grpc_core::Atomic<intptr_t> steps_to_complete;
104
+ gpr_atm batch_error = reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE);
105
+ void set_num_steps_to_complete(uintptr_t steps) {
106
+ steps_to_complete.Store(steps, grpc_core::MemoryOrder::RELEASE);
107
+ }
108
+ bool completed_batch_step() {
109
+ return steps_to_complete.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1;
110
+ }
111
+ };
141
112
 
142
- grpc_transport_stream_op_batch op;
143
- } batch_control;
113
+ struct parent_call {
114
+ parent_call() { gpr_mu_init(&child_list_mu); }
115
+ ~parent_call() { gpr_mu_destroy(&child_list_mu); }
144
116
 
145
- typedef struct {
146
117
  gpr_mu child_list_mu;
147
- grpc_call* first_child;
148
- } parent_call;
118
+ grpc_call* first_child = nullptr;
119
+ };
149
120
 
150
- typedef struct {
121
+ struct child_call {
122
+ child_call(grpc_call* parent) : parent(parent) {}
151
123
  grpc_call* parent;
152
124
  /** siblings: children of the same parent form a list, and this list is
153
125
  protected under
154
126
  parent->mu */
155
- grpc_call* sibling_next;
156
- grpc_call* sibling_prev;
157
- } child_call;
127
+ grpc_call* sibling_next = nullptr;
128
+ grpc_call* sibling_prev = nullptr;
129
+ };
158
130
 
159
131
  #define RECV_NONE ((gpr_atm)0)
160
132
  #define RECV_INITIAL_METADATA_FIRST ((gpr_atm)1)
161
133
 
162
134
  struct grpc_call {
163
- gpr_refcount ext_ref;
164
- gpr_arena* arena;
165
- grpc_call_combiner call_combiner;
135
+ grpc_call(grpc_core::Arena* arena, const grpc_call_create_args& args)
136
+ : arena(arena),
137
+ cq(args.cq),
138
+ channel(args.channel),
139
+ is_client(args.server_transport_data == nullptr),
140
+ stream_op_payload(context) {
141
+ for (int i = 0; i < 2; i++) {
142
+ for (int j = 0; j < 2; j++) {
143
+ metadata_batch[i][j].deadline = GRPC_MILLIS_INF_FUTURE;
144
+ }
145
+ }
146
+ }
147
+
148
+ ~grpc_call() {
149
+ gpr_free(static_cast<void*>(const_cast<char*>(final_info.error_string)));
150
+ }
151
+
152
+ grpc_core::RefCount ext_ref;
153
+ grpc_core::Arena* arena;
154
+ grpc_core::CallCombiner call_combiner;
166
155
  grpc_completion_queue* cq;
167
156
  grpc_polling_entity pollent;
168
157
  grpc_channel* channel;
169
- gpr_timespec start_time;
170
- /* parent_call* */ gpr_atm parent_call_atm;
171
- child_call* child;
158
+ gpr_cycle_counter start_time = gpr_get_cycle_counter();
159
+ /* parent_call* */ gpr_atm parent_call_atm = 0;
160
+ child_call* child = nullptr;
172
161
 
173
162
  /* client or server call */
174
163
  bool is_client;
175
164
  /** has grpc_call_unref been called */
176
- bool destroy_called;
165
+ bool destroy_called = false;
177
166
  /** flag indicating that cancellation is inherited */
178
- bool cancellation_is_inherited;
167
+ bool cancellation_is_inherited = false;
179
168
  /** which ops are in-flight */
180
- bool sent_initial_metadata;
181
- bool sending_message;
182
- bool sent_final_op;
183
- bool received_initial_metadata;
184
- bool receiving_message;
185
- bool requested_final_op;
186
- gpr_atm any_ops_sent_atm;
187
- gpr_atm received_final_op_atm;
188
-
189
- batch_control* active_batches[MAX_CONCURRENT_BATCHES];
169
+ bool sent_initial_metadata = false;
170
+ bool sending_message = false;
171
+ bool sent_final_op = false;
172
+ bool received_initial_metadata = false;
173
+ bool receiving_message = false;
174
+ bool requested_final_op = false;
175
+ gpr_atm any_ops_sent_atm = 0;
176
+ gpr_atm received_final_op_atm = 0;
177
+
178
+ batch_control* active_batches[MAX_CONCURRENT_BATCHES] = {};
190
179
  grpc_transport_stream_op_batch_payload stream_op_payload;
191
180
 
192
181
  /* first idx: is_receiving, second idx: is_trailing */
193
- grpc_metadata_batch metadata_batch[2][2];
182
+ grpc_metadata_batch metadata_batch[2][2] = {};
194
183
 
195
184
  /* Buffered read metadata waiting to be returned to the application.
196
185
  Element 0 is initial metadata, element 1 is trailing metadata. */
197
- grpc_metadata_array* buffered_metadata[2];
186
+ grpc_metadata_array* buffered_metadata[2] = {};
198
187
 
199
188
  grpc_metadata compression_md;
200
189
 
201
190
  // A char* indicating the peer name.
202
- gpr_atm peer_string;
203
-
204
- /* Packed received call statuses from various sources */
205
- gpr_atm status[STATUS_SOURCE_COUNT];
191
+ gpr_atm peer_string = 0;
206
192
 
207
193
  /* Call data useful used for reporting. Only valid after the call has
208
194
  * completed */
209
195
  grpc_call_final_info final_info;
210
196
 
211
197
  /* Compression algorithm for *incoming* data */
212
- grpc_message_compression_algorithm incoming_message_compression_algorithm;
198
+ grpc_message_compression_algorithm incoming_message_compression_algorithm =
199
+ GRPC_MESSAGE_COMPRESS_NONE;
213
200
  /* Stream compression algorithm for *incoming* data */
214
- grpc_stream_compression_algorithm incoming_stream_compression_algorithm;
215
- /* Supported encodings (compression algorithms), a bitset */
216
- uint32_t encodings_accepted_by_peer;
201
+ grpc_stream_compression_algorithm incoming_stream_compression_algorithm =
202
+ GRPC_STREAM_COMPRESS_NONE;
203
+ /* Supported encodings (compression algorithms), a bitset.
204
+ * Always support no compression. */
205
+ uint32_t encodings_accepted_by_peer = 1 << GRPC_MESSAGE_COMPRESS_NONE;
217
206
  /* Supported stream encodings (stream compression algorithms), a bitset */
218
- uint32_t stream_encodings_accepted_by_peer;
207
+ uint32_t stream_encodings_accepted_by_peer = 0;
219
208
 
220
209
  /* Contexts for various subsystems (security, tracing, ...). */
221
- grpc_call_context_element context[GRPC_CONTEXT_COUNT];
210
+ grpc_call_context_element context[GRPC_CONTEXT_COUNT] = {};
222
211
 
223
212
  /* for the client, extra metadata is initial metadata; for the
224
213
  server, it's trailing metadata */
@@ -229,13 +218,14 @@ struct grpc_call {
229
218
  grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sending_stream;
230
219
 
231
220
  grpc_core::OrphanablePtr<grpc_core::ByteStream> receiving_stream;
232
- grpc_byte_buffer** receiving_buffer;
233
- grpc_slice receiving_slice;
221
+ grpc_byte_buffer** receiving_buffer = nullptr;
222
+ grpc_slice receiving_slice = grpc_empty_slice();
234
223
  grpc_closure receiving_slice_ready;
235
224
  grpc_closure receiving_stream_ready;
236
225
  grpc_closure receiving_initial_metadata_ready;
237
226
  grpc_closure receiving_trailing_metadata_ready;
238
- uint32_t test_only_last_message_flags;
227
+ uint32_t test_only_last_message_flags = 0;
228
+ gpr_atm cancelled = 0;
239
229
 
240
230
  grpc_closure release_call;
241
231
 
@@ -247,8 +237,11 @@ struct grpc_call {
247
237
  } client;
248
238
  struct {
249
239
  int* cancelled;
240
+ // backpointer to owning server if this is a server side call.
241
+ grpc_server* server;
250
242
  } server;
251
243
  } final_op;
244
+ gpr_atm status_error = 0;
252
245
 
253
246
  /* recv_state can contain one of the following values:
254
247
  RECV_NONE : : no initial metadata and messages received
@@ -266,7 +259,7 @@ struct grpc_call {
266
259
 
267
260
  For 1, 4: See receiving_initial_metadata_ready() function
268
261
  For 2, 3: See receiving_stream_ready() function */
269
- gpr_atm recv_state;
262
+ gpr_atm recv_state = 0;
270
263
  };
271
264
 
272
265
  grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
@@ -286,23 +279,15 @@ grpc_core::TraceFlag grpc_compression_trace(false, "compression");
286
279
 
287
280
  static void execute_batch(grpc_call* call, grpc_transport_stream_op_batch* op,
288
281
  grpc_closure* start_batch_closure);
289
- static void cancel_with_status(grpc_call* c, status_source source,
290
- grpc_status_code status,
282
+
283
+ static void cancel_with_status(grpc_call* c, grpc_status_code status,
291
284
  const char* description);
292
- static void cancel_with_error(grpc_call* c, status_source source,
293
- grpc_error* error);
285
+ static void cancel_with_error(grpc_call* c, grpc_error* error);
294
286
  static void destroy_call(void* call_stack, grpc_error* error);
295
287
  static void receiving_slice_ready(void* bctlp, grpc_error* error);
296
- static void get_final_status(
297
- grpc_call* call, void (*set_value)(grpc_status_code code, void* user_data),
298
- void* set_value_user_data, grpc_slice* details, const char** error_string);
299
- static void set_status_value_directly(grpc_status_code status, void* dest);
300
- static void set_status_from_error(grpc_call* call, status_source source,
301
- grpc_error* error);
288
+ static void set_final_status(grpc_call* call, grpc_error* error);
302
289
  static void process_data_after_md(batch_control* bctl);
303
290
  static void post_batch_completion(batch_control* bctl);
304
- static void add_batch_error(batch_control* bctl, grpc_error* error,
305
- bool has_cancelled);
306
291
 
307
292
  static void add_init_error(grpc_error** composite, grpc_error* new_err) {
308
293
  if (new_err == GRPC_ERROR_NONE) return;
@@ -312,17 +297,16 @@ static void add_init_error(grpc_error** composite, grpc_error* new_err) {
312
297
  }
313
298
 
314
299
  void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
315
- return gpr_arena_alloc(call->arena, size);
300
+ return call->arena->Alloc(size);
316
301
  }
317
302
 
318
303
  static parent_call* get_or_create_parent_call(grpc_call* call) {
319
304
  parent_call* p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
320
305
  if (p == nullptr) {
321
- p = static_cast<parent_call*>(gpr_arena_alloc(call->arena, sizeof(*p)));
322
- gpr_mu_init(&p->child_list_mu);
306
+ p = call->arena->New<parent_call>();
323
307
  if (!gpr_atm_rel_cas(&call->parent_call_atm, (gpr_atm) nullptr,
324
308
  (gpr_atm)p)) {
325
- gpr_mu_destroy(&p->child_list_mu);
309
+ p->~parent_call();
326
310
  p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
327
311
  }
328
312
  }
@@ -341,41 +325,39 @@ size_t grpc_call_get_initial_size_estimate() {
341
325
  grpc_error* grpc_call_create(const grpc_call_create_args* args,
342
326
  grpc_call** out_call) {
343
327
  GPR_TIMER_SCOPE("grpc_call_create", 0);
344
- size_t i, j;
328
+
329
+ GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
330
+
331
+ grpc_core::Arena* arena;
332
+ grpc_call* call;
345
333
  grpc_error* error = GRPC_ERROR_NONE;
346
334
  grpc_channel_stack* channel_stack =
347
335
  grpc_channel_get_channel_stack(args->channel);
348
- grpc_call* call;
349
336
  size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
350
337
  GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
351
- gpr_arena* arena = gpr_arena_create(initial_size);
352
- call = static_cast<grpc_call*>(
353
- gpr_arena_alloc(arena, GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
354
- channel_stack->call_stack_size));
355
- gpr_ref_init(&call->ext_ref, 1);
356
- call->arena = arena;
357
- grpc_call_combiner_init(&call->call_combiner);
338
+ size_t call_and_stack_size =
339
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
340
+ channel_stack->call_stack_size;
341
+ size_t call_alloc_size =
342
+ call_and_stack_size + (args->parent ? sizeof(child_call) : 0);
343
+
344
+ std::pair<grpc_core::Arena*, void*> arena_with_call =
345
+ grpc_core::Arena::CreateWithAlloc(initial_size, call_alloc_size);
346
+ arena = arena_with_call.first;
347
+ call = new (arena_with_call.second) grpc_call(arena, *args);
358
348
  *out_call = call;
359
- call->channel = args->channel;
360
- call->cq = args->cq;
361
- call->start_time = gpr_now(GPR_CLOCK_MONOTONIC);
362
- /* Always support no compression */
363
- GPR_BITSET(&call->encodings_accepted_by_peer, GRPC_MESSAGE_COMPRESS_NONE);
364
- call->is_client = args->server_transport_data == nullptr;
365
- if (call->is_client) {
366
- GRPC_STATS_INC_CLIENT_CALLS_CREATED();
367
- } else {
368
- GRPC_STATS_INC_SERVER_CALLS_CREATED();
369
- }
370
- call->stream_op_payload.context = call->context;
371
349
  grpc_slice path = grpc_empty_slice();
372
350
  if (call->is_client) {
351
+ call->final_op.client.status_details = nullptr;
352
+ call->final_op.client.status = nullptr;
353
+ call->final_op.client.error_string = nullptr;
354
+ GRPC_STATS_INC_CLIENT_CALLS_CREATED();
373
355
  GPR_ASSERT(args->add_initial_metadata_count <
374
356
  MAX_SEND_EXTRA_METADATA_COUNT);
375
- for (i = 0; i < args->add_initial_metadata_count; i++) {
357
+ for (size_t i = 0; i < args->add_initial_metadata_count; i++) {
376
358
  call->send_extra_metadata[i].md = args->add_initial_metadata[i];
377
- if (grpc_slice_eq(GRPC_MDKEY(args->add_initial_metadata[i]),
378
- GRPC_MDSTR_PATH)) {
359
+ if (grpc_slice_eq_static_interned(
360
+ GRPC_MDKEY(args->add_initial_metadata[i]), GRPC_MDSTR_PATH)) {
379
361
  path = grpc_slice_ref_internal(
380
362
  GRPC_MDVALUE(args->add_initial_metadata[i]));
381
363
  }
@@ -383,22 +365,19 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
383
365
  call->send_extra_metadata_count =
384
366
  static_cast<int>(args->add_initial_metadata_count);
385
367
  } else {
368
+ GRPC_STATS_INC_SERVER_CALLS_CREATED();
369
+ call->final_op.server.cancelled = nullptr;
370
+ call->final_op.server.server = args->server;
386
371
  GPR_ASSERT(args->add_initial_metadata_count == 0);
387
372
  call->send_extra_metadata_count = 0;
388
373
  }
389
- for (i = 0; i < 2; i++) {
390
- for (j = 0; j < 2; j++) {
391
- call->metadata_batch[i][j].deadline = GRPC_MILLIS_INF_FUTURE;
392
- }
393
- }
394
- grpc_millis send_deadline = args->send_deadline;
395
374
 
375
+ grpc_millis send_deadline = args->send_deadline;
396
376
  bool immediately_cancel = false;
397
377
 
398
378
  if (args->parent != nullptr) {
399
- call->child =
400
- static_cast<child_call*>(gpr_arena_alloc(arena, sizeof(child_call)));
401
- call->child->parent = args->parent;
379
+ call->child = new (reinterpret_cast<char*>(arena_with_call.second) +
380
+ call_and_stack_size) child_call(args->parent);
402
381
 
403
382
  GRPC_CALL_INTERNAL_REF(args->parent, "child");
404
383
  GPR_ASSERT(call->is_client);
@@ -432,10 +411,7 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
432
411
  }
433
412
  }
434
413
  }
435
-
436
414
  call->send_deadline = send_deadline;
437
-
438
- GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
439
415
  /* initial refcount dropped by grpc_call_unref */
440
416
  grpc_call_element_args call_args = {CALL_STACK_FROM_CALL(call),
441
417
  args->server_transport_data,
@@ -463,11 +439,12 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
463
439
  }
464
440
  gpr_mu_unlock(&pc->child_list_mu);
465
441
  }
442
+
466
443
  if (error != GRPC_ERROR_NONE) {
467
- cancel_with_error(call, STATUS_FROM_SURFACE, GRPC_ERROR_REF(error));
444
+ cancel_with_error(call, GRPC_ERROR_REF(error));
468
445
  }
469
446
  if (immediately_cancel) {
470
- cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED);
447
+ cancel_with_error(call, GRPC_ERROR_CANCELLED);
471
448
  }
472
449
  if (args->cq != nullptr) {
473
450
  GPR_ASSERT(args->pollset_set_alternative == nullptr &&
@@ -486,10 +463,18 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
486
463
  &call->pollent);
487
464
  }
488
465
 
489
- grpc_core::channelz::ChannelNode* channelz_channel =
490
- grpc_channel_get_channelz_node(call->channel);
491
- if (channelz_channel != nullptr) {
492
- channelz_channel->RecordCallStarted();
466
+ if (call->is_client) {
467
+ grpc_core::channelz::ChannelNode* channelz_channel =
468
+ grpc_channel_get_channelz_node(call->channel);
469
+ if (channelz_channel != nullptr) {
470
+ channelz_channel->RecordCallStarted();
471
+ }
472
+ } else {
473
+ grpc_core::channelz::ServerNode* channelz_server =
474
+ grpc_server_get_channelz_node(call->final_op.server.server);
475
+ if (channelz_server != nullptr) {
476
+ channelz_server->RecordCallStarted();
477
+ }
493
478
  }
494
479
 
495
480
  grpc_slice_unref_internal(path);
@@ -526,16 +511,16 @@ void grpc_call_internal_unref(grpc_call* c REF_ARG) {
526
511
  GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
527
512
  }
528
513
 
529
- static void release_call(void* call, grpc_error* error) {
514
+ static void release_call(void* call, grpc_error* /*error*/) {
530
515
  grpc_call* c = static_cast<grpc_call*>(call);
531
516
  grpc_channel* channel = c->channel;
532
- gpr_free(static_cast<void*>(const_cast<char*>(c->final_info.error_string)));
533
- grpc_call_combiner_destroy(&c->call_combiner);
534
- grpc_channel_update_call_size_estimate(channel, gpr_arena_destroy(c->arena));
517
+ grpc_core::Arena* arena = c->arena;
518
+ c->~grpc_call();
519
+ grpc_channel_update_call_size_estimate(channel, arena->Destroy());
535
520
  GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
536
521
  }
537
522
 
538
- static void destroy_call(void* call, grpc_error* error) {
523
+ static void destroy_call(void* call, grpc_error* /*error*/) {
539
524
  GPR_TIMER_SCOPE("destroy_call", 0);
540
525
  size_t i;
541
526
  int ii;
@@ -547,7 +532,7 @@ static void destroy_call(void* call, grpc_error* error) {
547
532
  c->receiving_stream.reset();
548
533
  parent_call* pc = get_parent_call(c);
549
534
  if (pc != nullptr) {
550
- gpr_mu_destroy(&pc->child_list_mu);
535
+ pc->~parent_call();
551
536
  }
552
537
  for (ii = 0; ii < c->send_extra_metadata_count; ii++) {
553
538
  GRPC_MDELEM_UNREF(c->send_extra_metadata[ii].md);
@@ -561,29 +546,28 @@ static void destroy_call(void* call, grpc_error* error) {
561
546
  GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
562
547
  }
563
548
 
564
- get_final_status(c, set_status_value_directly, &c->final_info.final_status,
565
- nullptr, &(c->final_info.error_string));
549
+ grpc_error* status_error =
550
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&c->status_error));
551
+ grpc_error_get_status(status_error, c->send_deadline,
552
+ &c->final_info.final_status, nullptr, nullptr,
553
+ &(c->final_info.error_string));
554
+ GRPC_ERROR_UNREF(status_error);
566
555
  c->final_info.stats.latency =
567
- gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), c->start_time);
568
-
569
- for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
570
- GRPC_ERROR_UNREF(
571
- unpack_received_status(gpr_atm_acq_load(&c->status[i])).error);
572
- }
573
-
556
+ gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time);
574
557
  grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
575
558
  GRPC_CLOSURE_INIT(&c->release_call, release_call, c,
576
559
  grpc_schedule_on_exec_ctx));
577
560
  }
578
561
 
579
- void grpc_call_ref(grpc_call* c) { gpr_ref(&c->ext_ref); }
562
+ void grpc_call_ref(grpc_call* c) { c->ext_ref.Ref(); }
580
563
 
581
564
  void grpc_call_unref(grpc_call* c) {
582
- if (!gpr_unref(&c->ext_ref)) return;
565
+ if (GPR_LIKELY(!c->ext_ref.Unref())) return;
583
566
 
584
567
  GPR_TIMER_SCOPE("grpc_call_unref", 0);
585
568
 
586
569
  child_call* cc = c->child;
570
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
587
571
  grpc_core::ExecCtx exec_ctx;
588
572
 
589
573
  GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
@@ -608,7 +592,7 @@ void grpc_call_unref(grpc_call* c) {
608
592
  bool cancel = gpr_atm_acq_load(&c->any_ops_sent_atm) != 0 &&
609
593
  gpr_atm_acq_load(&c->received_final_op_atm) == 0;
610
594
  if (cancel) {
611
- cancel_with_error(c, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED);
595
+ cancel_with_error(c, GRPC_ERROR_CANCELLED);
612
596
  } else {
613
597
  // Unset the call combiner cancellation closure. This has the
614
598
  // effect of scheduling the previously set cancellation closure, if
@@ -616,7 +600,7 @@ void grpc_call_unref(grpc_call* c) {
616
600
  // holding to the call stack. Also flush the closures on exec_ctx so that
617
601
  // filters that schedule cancel notification closures on exec_ctx do not
618
602
  // need to take a ref of the call stack to guarantee closure liveness.
619
- grpc_call_combiner_set_notify_on_cancel(&c->call_combiner, nullptr);
603
+ c->call_combiner.SetNotifyOnCancel(nullptr);
620
604
  grpc_core::ExecCtx::Get()->Flush();
621
605
  }
622
606
  GRPC_CALL_INTERNAL_UNREF(c, "destroy");
@@ -625,15 +609,15 @@ void grpc_call_unref(grpc_call* c) {
625
609
  grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
626
610
  GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
627
611
  GPR_ASSERT(!reserved);
612
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
628
613
  grpc_core::ExecCtx exec_ctx;
629
- cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED);
630
-
614
+ cancel_with_error(call, GRPC_ERROR_CANCELLED);
631
615
  return GRPC_CALL_OK;
632
616
  }
633
617
 
634
618
  // This is called via the call combiner to start sending a batch down
635
619
  // the filter stack.
636
- static void execute_batch_in_call_combiner(void* arg, grpc_error* ignored) {
620
+ static void execute_batch_in_call_combiner(void* arg, grpc_error* /*ignored*/) {
637
621
  GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
638
622
  grpc_transport_stream_op_batch* batch =
639
623
  static_cast<grpc_transport_stream_op_batch*>(arg);
@@ -675,26 +659,25 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
675
659
  grpc_status_code status,
676
660
  const char* description,
677
661
  void* reserved) {
662
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
678
663
  grpc_core::ExecCtx exec_ctx;
679
664
  GRPC_API_TRACE(
680
665
  "grpc_call_cancel_with_status("
681
666
  "c=%p, status=%d, description=%s, reserved=%p)",
682
667
  4, (c, (int)status, description, reserved));
683
668
  GPR_ASSERT(reserved == nullptr);
684
- cancel_with_status(c, STATUS_FROM_API_OVERRIDE, status, description);
685
-
669
+ cancel_with_status(c, status, description);
686
670
  return GRPC_CALL_OK;
687
671
  }
688
672
 
689
- typedef struct {
673
+ struct cancel_state {
690
674
  grpc_call* call;
691
675
  grpc_closure start_batch;
692
676
  grpc_closure finish_batch;
693
- } cancel_state;
694
-
677
+ };
695
678
  // The on_complete callback used when sending a cancel_stream batch down
696
679
  // the filter stack. Yields the call combiner when the batch is done.
697
- static void done_termination(void* arg, grpc_error* error) {
680
+ static void done_termination(void* arg, grpc_error* /*error*/) {
698
681
  cancel_state* state = static_cast<cancel_state*>(arg);
699
682
  GRPC_CALL_COMBINER_STOP(&state->call->call_combiner,
700
683
  "on_complete for cancel_stream op");
@@ -702,15 +685,17 @@ static void done_termination(void* arg, grpc_error* error) {
702
685
  gpr_free(state);
703
686
  }
704
687
 
705
- static void cancel_with_error(grpc_call* c, status_source source,
706
- grpc_error* error) {
688
+ static void cancel_with_error(grpc_call* c, grpc_error* error) {
689
+ if (!gpr_atm_rel_cas(&c->cancelled, 0, 1)) {
690
+ GRPC_ERROR_UNREF(error);
691
+ return;
692
+ }
707
693
  GRPC_CALL_INTERNAL_REF(c, "termination");
708
694
  // Inform the call combiner of the cancellation, so that it can cancel
709
695
  // any in-flight asynchronous actions that may be holding the call
710
696
  // combiner. This ensures that the cancel_stream batch can be sent
711
697
  // down the filter stack in a timely manner.
712
- grpc_call_combiner_cancel(&c->call_combiner, GRPC_ERROR_REF(error));
713
- set_status_from_error(c, source, GRPC_ERROR_REF(error));
698
+ c->call_combiner.Cancel(GRPC_ERROR_REF(error));
714
699
  cancel_state* state = static_cast<cancel_state*>(gpr_malloc(sizeof(*state)));
715
700
  state->call = c;
716
701
  GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
@@ -722,6 +707,10 @@ static void cancel_with_error(grpc_call* c, status_source source,
722
707
  execute_batch(c, op, &state->start_batch);
723
708
  }
724
709
 
710
+ void grpc_call_cancel_internal(grpc_call* call) {
711
+ cancel_with_error(call, GRPC_ERROR_CANCELLED);
712
+ }
713
+
725
714
  static grpc_error* error_from_status(grpc_status_code status,
726
715
  const char* description) {
727
716
  // copying 'description' is needed to ensure the grpc_call_cancel_with_status
@@ -733,90 +722,47 @@ static grpc_error* error_from_status(grpc_status_code status,
733
722
  GRPC_ERROR_INT_GRPC_STATUS, status);
734
723
  }
735
724
 
736
- static void cancel_with_status(grpc_call* c, status_source source,
737
- grpc_status_code status,
725
+ static void cancel_with_status(grpc_call* c, grpc_status_code status,
738
726
  const char* description) {
739
- cancel_with_error(c, source, error_from_status(status, description));
727
+ cancel_with_error(c, error_from_status(status, description));
740
728
  }
741
729
 
742
- /*******************************************************************************
743
- * FINAL STATUS CODE MANIPULATION
744
- */
745
-
746
- static bool get_final_status_from(
747
- grpc_call* call, grpc_error* error, bool allow_ok_status,
748
- void (*set_value)(grpc_status_code code, void* user_data),
749
- void* set_value_user_data, grpc_slice* details, const char** error_string) {
750
- grpc_status_code code;
751
- grpc_slice slice = grpc_empty_slice();
752
- grpc_error_get_status(error, call->send_deadline, &code, &slice, nullptr,
753
- error_string);
754
- if (code == GRPC_STATUS_OK && !allow_ok_status) {
755
- return false;
730
+ static void set_final_status(grpc_call* call, grpc_error* error) {
731
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
732
+ gpr_log(GPR_DEBUG, "set_final_status %s", call->is_client ? "CLI" : "SVR");
733
+ gpr_log(GPR_DEBUG, "%s", grpc_error_string(error));
756
734
  }
757
-
758
- set_value(code, set_value_user_data);
759
- if (details != nullptr) {
760
- *details = grpc_slice_ref_internal(slice);
761
- }
762
- return true;
763
- }
764
-
765
- static void get_final_status(
766
- grpc_call* call, void (*set_value)(grpc_status_code code, void* user_data),
767
- void* set_value_user_data, grpc_slice* details, const char** error_string) {
768
- int i;
769
- received_status status[STATUS_SOURCE_COUNT];
770
- for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
771
- status[i] = unpack_received_status(gpr_atm_acq_load(&call->status[i]));
772
- }
773
- if (grpc_call_error_trace.enabled()) {
774
- gpr_log(GPR_INFO, "get_final_status %s", call->is_client ? "CLI" : "SVR");
775
- for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
776
- if (status[i].is_set) {
777
- gpr_log(GPR_INFO, " %d: %s", i, grpc_error_string(status[i].error));
778
- }
779
- }
780
- }
781
- /* first search through ignoring "OK" statuses: if something went wrong,
782
- * ensure we report it */
783
- for (int allow_ok_status = 0; allow_ok_status < 2; allow_ok_status++) {
784
- /* search for the best status we can present: ideally the error we use has a
785
- clearly defined grpc-status, and we'll prefer that. */
786
- for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
787
- if (status[i].is_set &&
788
- grpc_error_has_clear_grpc_status(status[i].error)) {
789
- if (get_final_status_from(call, status[i].error, allow_ok_status != 0,
790
- set_value, set_value_user_data, details,
791
- error_string)) {
792
- return;
793
- }
735
+ if (call->is_client) {
736
+ grpc_error_get_status(error, call->send_deadline,
737
+ call->final_op.client.status,
738
+ call->final_op.client.status_details, nullptr,
739
+ call->final_op.client.error_string);
740
+ // explicitly take a ref
741
+ grpc_slice_ref_internal(*call->final_op.client.status_details);
742
+ gpr_atm_rel_store(&call->status_error, reinterpret_cast<gpr_atm>(error));
743
+ grpc_core::channelz::ChannelNode* channelz_channel =
744
+ grpc_channel_get_channelz_node(call->channel);
745
+ if (channelz_channel != nullptr) {
746
+ if (*call->final_op.client.status != GRPC_STATUS_OK) {
747
+ channelz_channel->RecordCallFailed();
748
+ } else {
749
+ channelz_channel->RecordCallSucceeded();
794
750
  }
795
751
  }
796
- /* If no clearly defined status exists, search for 'anything' */
797
- for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
798
- if (status[i].is_set) {
799
- if (get_final_status_from(call, status[i].error, allow_ok_status != 0,
800
- set_value, set_value_user_data, details,
801
- error_string)) {
802
- return;
803
- }
752
+ } else {
753
+ *call->final_op.server.cancelled =
754
+ error != GRPC_ERROR_NONE ||
755
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&call->status_error)) !=
756
+ GRPC_ERROR_NONE;
757
+ grpc_core::channelz::ServerNode* channelz_server =
758
+ grpc_server_get_channelz_node(call->final_op.server.server);
759
+ if (channelz_server != nullptr) {
760
+ if (*call->final_op.server.cancelled) {
761
+ channelz_server->RecordCallFailed();
762
+ } else {
763
+ channelz_server->RecordCallSucceeded();
804
764
  }
805
765
  }
806
- }
807
- /* If nothing exists, set some default */
808
- if (call->is_client) {
809
- set_value(GRPC_STATUS_UNKNOWN, set_value_user_data);
810
- } else {
811
- set_value(GRPC_STATUS_OK, set_value_user_data);
812
- }
813
- }
814
-
815
- static void set_status_from_error(grpc_call* call, status_source source,
816
- grpc_error* error) {
817
- if (!gpr_atm_rel_cas(&call->status[source],
818
- pack_received_status({false, GRPC_ERROR_NONE}),
819
- pack_received_status({true, error}))) {
820
766
  GRPC_ERROR_UNREF(error);
821
767
  }
822
768
  }
@@ -858,9 +804,10 @@ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
858
804
  return flags;
859
805
  }
860
806
 
861
- static void destroy_encodings_accepted_by_peer(void* p) { return; }
807
+ static void destroy_encodings_accepted_by_peer(void* /*p*/) { return; }
862
808
 
863
- static void set_encodings_accepted_by_peer(grpc_call* call, grpc_mdelem mdel,
809
+ static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
810
+ grpc_mdelem mdel,
864
811
  uint32_t* encodings_accepted_by_peer,
865
812
  bool stream_encoding) {
866
813
  size_t i;
@@ -958,11 +905,14 @@ static int prepare_application_metadata(grpc_call* call, int count,
958
905
  if (!GRPC_LOG_IF_ERROR("validate_metadata",
959
906
  grpc_validate_header_key_is_legal(md->key))) {
960
907
  break;
961
- } else if (!grpc_is_binary_header(md->key) &&
908
+ } else if (!grpc_is_binary_header_internal(md->key) &&
962
909
  !GRPC_LOG_IF_ERROR(
963
910
  "validate_metadata",
964
911
  grpc_validate_header_nonbin_value_is_legal(md->value))) {
965
912
  break;
913
+ } else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
914
+ // HTTP2 hpack encoding has a maximum limit.
915
+ break;
966
916
  }
967
917
  l->md = grpc_mdelem_from_grpc_metadata(const_cast<grpc_metadata*>(md));
968
918
  }
@@ -1035,6 +985,7 @@ static grpc_stream_compression_algorithm decode_stream_compression(
1035
985
  static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
1036
986
  int is_trailing) {
1037
987
  if (b->list.count == 0) return;
988
+ if (!call->is_client && is_trailing) return;
1038
989
  if (is_trailing && call->buffered_metadata[1] == nullptr) return;
1039
990
  GPR_TIMER_SCOPE("publish_app_metadata", 0);
1040
991
  grpc_metadata_array* dest;
@@ -1059,13 +1010,13 @@ static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
1059
1010
  GPR_TIMER_SCOPE("incoming_stream_compression_algorithm", 0);
1060
1011
  set_incoming_stream_compression_algorithm(
1061
1012
  call, decode_stream_compression(b->idx.named.content_encoding->md));
1062
- grpc_metadata_batch_remove(b, b->idx.named.content_encoding);
1013
+ grpc_metadata_batch_remove(b, GRPC_BATCH_CONTENT_ENCODING);
1063
1014
  }
1064
1015
  if (b->idx.named.grpc_encoding != nullptr) {
1065
1016
  GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
1066
1017
  set_incoming_message_compression_algorithm(
1067
1018
  call, decode_message_compression(b->idx.named.grpc_encoding->md));
1068
- grpc_metadata_batch_remove(b, b->idx.named.grpc_encoding);
1019
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ENCODING);
1069
1020
  }
1070
1021
  uint32_t message_encodings_accepted_by_peer = 1u;
1071
1022
  uint32_t stream_encodings_accepted_by_peer = 1u;
@@ -1073,13 +1024,13 @@ static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
1073
1024
  GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
1074
1025
  set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md,
1075
1026
  &message_encodings_accepted_by_peer, false);
1076
- grpc_metadata_batch_remove(b, b->idx.named.grpc_accept_encoding);
1027
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ACCEPT_ENCODING);
1077
1028
  }
1078
1029
  if (b->idx.named.accept_encoding != nullptr) {
1079
1030
  GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
1080
1031
  set_encodings_accepted_by_peer(call, b->idx.named.accept_encoding->md,
1081
1032
  &stream_encodings_accepted_by_peer, true);
1082
- grpc_metadata_batch_remove(b, b->idx.named.accept_encoding);
1033
+ grpc_metadata_batch_remove(b, GRPC_BATCH_ACCEPT_ENCODING);
1083
1034
  }
1084
1035
  call->encodings_accepted_by_peer =
1085
1036
  grpc_compression_bitset_from_message_stream_compression_bitset(
@@ -1088,33 +1039,51 @@ static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
1088
1039
  publish_app_metadata(call, b, false);
1089
1040
  }
1090
1041
 
1091
- static void recv_trailing_filter(void* args, grpc_metadata_batch* b) {
1042
+ static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
1043
+ grpc_error* batch_error) {
1092
1044
  grpc_call* call = static_cast<grpc_call*>(args);
1093
- if (b->idx.named.grpc_status != nullptr) {
1045
+ if (batch_error != GRPC_ERROR_NONE) {
1046
+ set_final_status(call, batch_error);
1047
+ } else if (b->idx.named.grpc_status != nullptr) {
1094
1048
  grpc_status_code status_code =
1095
1049
  grpc_get_status_code_from_metadata(b->idx.named.grpc_status->md);
1096
1050
  grpc_error* error = GRPC_ERROR_NONE;
1097
1051
  if (status_code != GRPC_STATUS_OK) {
1098
- error = grpc_error_set_int(
1099
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error received from peer"),
1100
- GRPC_ERROR_INT_GRPC_STATUS, static_cast<intptr_t>(status_code));
1052
+ char* peer_msg = nullptr;
1053
+ char* peer = grpc_call_get_peer(call);
1054
+ gpr_asprintf(&peer_msg, "Error received from peer %s", peer);
1055
+ error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(peer_msg),
1056
+ GRPC_ERROR_INT_GRPC_STATUS,
1057
+ static_cast<intptr_t>(status_code));
1058
+ gpr_free(peer);
1059
+ gpr_free(peer_msg);
1101
1060
  }
1102
1061
  if (b->idx.named.grpc_message != nullptr) {
1103
1062
  error = grpc_error_set_str(
1104
1063
  error, GRPC_ERROR_STR_GRPC_MESSAGE,
1105
1064
  grpc_slice_ref_internal(GRPC_MDVALUE(b->idx.named.grpc_message->md)));
1106
- grpc_metadata_batch_remove(b, b->idx.named.grpc_message);
1065
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_MESSAGE);
1107
1066
  } else if (error != GRPC_ERROR_NONE) {
1108
1067
  error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
1109
1068
  grpc_empty_slice());
1110
1069
  }
1111
- set_status_from_error(call, STATUS_FROM_WIRE, error);
1112
- grpc_metadata_batch_remove(b, b->idx.named.grpc_status);
1070
+ set_final_status(call, GRPC_ERROR_REF(error));
1071
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_STATUS);
1072
+ GRPC_ERROR_UNREF(error);
1073
+ } else if (!call->is_client) {
1074
+ set_final_status(call, GRPC_ERROR_NONE);
1075
+ } else {
1076
+ gpr_log(GPR_DEBUG,
1077
+ "Received trailing metadata with no error and no status");
1078
+ set_final_status(
1079
+ call, grpc_error_set_int(
1080
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
1081
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
1113
1082
  }
1114
1083
  publish_app_metadata(call, b, true);
1115
1084
  }
1116
1085
 
1117
- gpr_arena* grpc_call_get_arena(grpc_call* call) { return call->arena; }
1086
+ grpc_core::Arena* grpc_call_get_arena(grpc_call* call) { return call->arena; }
1118
1087
 
1119
1088
  grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
1120
1089
  return CALL_STACK_FROM_CALL(call);
@@ -1124,14 +1093,6 @@ grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
1124
1093
  * BATCH API IMPLEMENTATION
1125
1094
  */
1126
1095
 
1127
- static void set_status_value_directly(grpc_status_code status, void* dest) {
1128
- *static_cast<grpc_status_code*>(dest) = status;
1129
- }
1130
-
1131
- static void set_cancelled_value(grpc_status_code status, void* dest) {
1132
- *static_cast<int*>(dest) = (status != GRPC_STATUS_OK);
1133
- }
1134
-
1135
1096
  static bool are_write_flags_valid(uint32_t flags) {
1136
1097
  /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
1137
1098
  const uint32_t allowed_write_positions =
@@ -1170,8 +1131,7 @@ static size_t batch_slot_for_op(grpc_op_type type) {
1170
1131
  }
1171
1132
 
1172
1133
  static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
1173
- const grpc_op* ops,
1174
- size_t num_ops) {
1134
+ const grpc_op* ops) {
1175
1135
  size_t slot_idx = batch_slot_for_op(ops[0].op);
1176
1136
  batch_control** pslot = &call->active_batches[slot_idx];
1177
1137
  batch_control* bctl;
@@ -1180,10 +1140,10 @@ static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
1180
1140
  if (bctl->call != nullptr) {
1181
1141
  return nullptr;
1182
1142
  }
1183
- memset(bctl, 0, sizeof(*bctl));
1143
+ bctl->~batch_control();
1144
+ bctl->op = {};
1184
1145
  } else {
1185
- bctl = static_cast<batch_control*>(
1186
- gpr_arena_alloc(call->arena, sizeof(batch_control)));
1146
+ bctl = call->arena->New<batch_control>();
1187
1147
  *pslot = bctl;
1188
1148
  }
1189
1149
  bctl->call = call;
@@ -1192,44 +1152,37 @@ static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
1192
1152
  }
1193
1153
 
1194
1154
  static void finish_batch_completion(void* user_data,
1195
- grpc_cq_completion* storage) {
1155
+ grpc_cq_completion* /*storage*/) {
1196
1156
  batch_control* bctl = static_cast<batch_control*>(user_data);
1197
1157
  grpc_call* call = bctl->call;
1198
1158
  bctl->call = nullptr;
1199
1159
  GRPC_CALL_INTERNAL_UNREF(call, "completion");
1200
1160
  }
1201
1161
 
1202
- static grpc_error* consolidate_batch_errors(batch_control* bctl) {
1203
- size_t n = static_cast<size_t>(gpr_atm_acq_load(&bctl->num_errors));
1204
- if (n == 0) {
1205
- return GRPC_ERROR_NONE;
1206
- } else if (n == 1) {
1207
- /* Skip creating a composite error in the case that only one error was
1208
- logged */
1209
- grpc_error* e = bctl->errors[0];
1210
- bctl->errors[0] = nullptr;
1211
- return e;
1212
- } else {
1213
- grpc_error* error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1214
- "Call batch failed", bctl->errors, n);
1215
- for (size_t i = 0; i < n; i++) {
1216
- GRPC_ERROR_UNREF(bctl->errors[i]);
1217
- bctl->errors[i] = nullptr;
1218
- }
1219
- return error;
1220
- }
1162
+ static void reset_batch_errors(batch_control* bctl) {
1163
+ GRPC_ERROR_UNREF(
1164
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1165
+ gpr_atm_rel_store(&bctl->batch_error,
1166
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE));
1221
1167
  }
1222
1168
 
1223
1169
  static void post_batch_completion(batch_control* bctl) {
1224
1170
  grpc_call* next_child_call;
1225
1171
  grpc_call* call = bctl->call;
1226
- grpc_error* error = consolidate_batch_errors(bctl);
1172
+ grpc_error* error = GRPC_ERROR_REF(
1173
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1227
1174
 
1228
1175
  if (bctl->op.send_initial_metadata) {
1229
1176
  grpc_metadata_batch_destroy(
1230
1177
  &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
1231
1178
  }
1232
1179
  if (bctl->op.send_message) {
1180
+ if (bctl->op.payload->send_message.stream_write_closed &&
1181
+ error == GRPC_ERROR_NONE) {
1182
+ error = grpc_error_add_child(
1183
+ error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1184
+ "Attempt to send message after stream was closed."));
1185
+ }
1233
1186
  call->sending_message = false;
1234
1187
  }
1235
1188
  if (bctl->op.send_trailing_metadata) {
@@ -1249,8 +1202,7 @@ static void post_batch_completion(batch_control* bctl) {
1249
1202
  next_child_call = child->child->sibling_next;
1250
1203
  if (child->cancellation_is_inherited) {
1251
1204
  GRPC_CALL_INTERNAL_REF(child, "propagate_cancel");
1252
- cancel_with_error(child, STATUS_FROM_API_OVERRIDE,
1253
- GRPC_ERROR_CANCELLED);
1205
+ cancel_with_error(child, GRPC_ERROR_CANCELLED);
1254
1206
  GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel");
1255
1207
  }
1256
1208
  child = next_child_call;
@@ -1258,24 +1210,6 @@ static void post_batch_completion(batch_control* bctl) {
1258
1210
  }
1259
1211
  gpr_mu_unlock(&pc->child_list_mu);
1260
1212
  }
1261
- if (call->is_client) {
1262
- get_final_status(call, set_status_value_directly,
1263
- call->final_op.client.status,
1264
- call->final_op.client.status_details,
1265
- call->final_op.client.error_string);
1266
- } else {
1267
- get_final_status(call, set_cancelled_value,
1268
- call->final_op.server.cancelled, nullptr, nullptr);
1269
- }
1270
- grpc_core::channelz::ChannelNode* channelz_channel =
1271
- grpc_channel_get_channelz_node(call->channel);
1272
- if (channelz_channel != nullptr) {
1273
- if (*call->final_op.client.status != GRPC_STATUS_OK) {
1274
- channelz_channel->RecordCallFailed();
1275
- } else {
1276
- channelz_channel->RecordCallSucceeded();
1277
- }
1278
- }
1279
1213
  GRPC_ERROR_UNREF(error);
1280
1214
  error = GRPC_ERROR_NONE;
1281
1215
  }
@@ -1284,19 +1218,17 @@ static void post_batch_completion(batch_control* bctl) {
1284
1218
  grpc_byte_buffer_destroy(*call->receiving_buffer);
1285
1219
  *call->receiving_buffer = nullptr;
1286
1220
  }
1221
+ reset_batch_errors(bctl);
1287
1222
 
1288
1223
  if (bctl->completion_data.notify_tag.is_closure) {
1289
- /* unrefs bctl->error */
1224
+ /* unrefs error */
1290
1225
  bctl->call = nullptr;
1291
- /* This closure may be meant to be run within some combiner. Since we aren't
1292
- * running in any combiner here, we need to use GRPC_CLOSURE_SCHED instead
1293
- * of GRPC_CLOSURE_RUN.
1294
- */
1295
- GRPC_CLOSURE_SCHED((grpc_closure*)bctl->completion_data.notify_tag.tag,
1296
- error);
1226
+ grpc_core::Closure::Run(DEBUG_LOCATION,
1227
+ (grpc_closure*)bctl->completion_data.notify_tag.tag,
1228
+ error);
1297
1229
  GRPC_CALL_INTERNAL_UNREF(call, "completion");
1298
1230
  } else {
1299
- /* unrefs bctl->error */
1231
+ /* unrefs error */
1300
1232
  grpc_cq_end_op(bctl->call->cq, bctl->completion_data.notify_tag.tag, error,
1301
1233
  finish_batch_completion, bctl,
1302
1234
  &bctl->completion_data.cq_completion);
@@ -1304,7 +1236,7 @@ static void post_batch_completion(batch_control* bctl) {
1304
1236
  }
1305
1237
 
1306
1238
  static void finish_batch_step(batch_control* bctl) {
1307
- if (gpr_unref(&bctl->steps_to_complete)) {
1239
+ if (GPR_UNLIKELY(bctl->completed_batch_step())) {
1308
1240
  post_batch_completion(bctl);
1309
1241
  }
1310
1242
  }
@@ -1332,6 +1264,7 @@ static void continue_receiving_slices(batch_control* bctl) {
1332
1264
  *call->receiving_buffer = nullptr;
1333
1265
  call->receiving_message = 0;
1334
1266
  finish_batch_step(bctl);
1267
+ GRPC_ERROR_UNREF(error);
1335
1268
  return;
1336
1269
  }
1337
1270
  } else {
@@ -1359,7 +1292,7 @@ static void receiving_slice_ready(void* bctlp, grpc_error* error) {
1359
1292
  }
1360
1293
 
1361
1294
  if (error != GRPC_ERROR_NONE) {
1362
- if (grpc_trace_operation_failures.enabled()) {
1295
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
1363
1296
  GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
1364
1297
  }
1365
1298
  call->receiving_stream.reset();
@@ -1405,8 +1338,12 @@ static void receiving_stream_ready(void* bctlp, grpc_error* error) {
1405
1338
  grpc_call* call = bctl->call;
1406
1339
  if (error != GRPC_ERROR_NONE) {
1407
1340
  call->receiving_stream.reset();
1408
- add_batch_error(bctl, GRPC_ERROR_REF(error), true);
1409
- cancel_with_error(call, STATUS_FROM_SURFACE, GRPC_ERROR_REF(error));
1341
+ if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1342
+ GRPC_ERROR_NONE) {
1343
+ gpr_atm_rel_store(&bctl->batch_error,
1344
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1345
+ }
1346
+ cancel_with_error(call, GRPC_ERROR_REF(error));
1410
1347
  }
1411
1348
  /* If recv_state is RECV_NONE, we will save the batch_control
1412
1349
  * object with rel_cas, and will not use it after the cas. Its corresponding
@@ -1428,90 +1365,106 @@ static void receiving_stream_ready_in_call_combiner(void* bctlp,
1428
1365
  receiving_stream_ready(bctlp, error);
1429
1366
  }
1430
1367
 
1368
+ static void GPR_ATTRIBUTE_NOINLINE
1369
+ handle_both_stream_and_msg_compression_set(grpc_call* call) {
1370
+ char* error_msg = nullptr;
1371
+ gpr_asprintf(&error_msg,
1372
+ "Incoming stream has both stream compression (%d) and message "
1373
+ "compression (%d).",
1374
+ call->incoming_stream_compression_algorithm,
1375
+ call->incoming_message_compression_algorithm);
1376
+ gpr_log(GPR_ERROR, "%s", error_msg);
1377
+ cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg);
1378
+ gpr_free(error_msg);
1379
+ }
1380
+
1381
+ static void GPR_ATTRIBUTE_NOINLINE
1382
+ handle_error_parsing_compression_algorithm(grpc_call* call) {
1383
+ char* error_msg = nullptr;
1384
+ gpr_asprintf(&error_msg,
1385
+ "Error in incoming message compression (%d) or stream "
1386
+ "compression (%d).",
1387
+ call->incoming_stream_compression_algorithm,
1388
+ call->incoming_message_compression_algorithm);
1389
+ cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg);
1390
+ gpr_free(error_msg);
1391
+ }
1392
+
1393
+ static void GPR_ATTRIBUTE_NOINLINE handle_invalid_compression(
1394
+ grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1395
+ char* error_msg = nullptr;
1396
+ gpr_asprintf(&error_msg, "Invalid compression algorithm value '%d'.",
1397
+ compression_algorithm);
1398
+ gpr_log(GPR_ERROR, "%s", error_msg);
1399
+ cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg);
1400
+ gpr_free(error_msg);
1401
+ }
1402
+
1403
+ static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
1404
+ grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1405
+ char* error_msg = nullptr;
1406
+ const char* algo_name = nullptr;
1407
+ grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1408
+ gpr_asprintf(&error_msg, "Compression algorithm '%s' is disabled.",
1409
+ algo_name);
1410
+ gpr_log(GPR_ERROR, "%s", error_msg);
1411
+ cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg);
1412
+ gpr_free(error_msg);
1413
+ }
1414
+
1415
+ static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_not_accepted(
1416
+ grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1417
+ const char* algo_name = nullptr;
1418
+ grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1419
+ gpr_log(GPR_ERROR,
1420
+ "Compression algorithm ('%s') not present in the bitset of "
1421
+ "accepted encodings ('0x%x')",
1422
+ algo_name, call->encodings_accepted_by_peer);
1423
+ }
1424
+
1431
1425
  static void validate_filtered_metadata(batch_control* bctl) {
1432
1426
  grpc_compression_algorithm compression_algorithm;
1433
1427
  grpc_call* call = bctl->call;
1434
- if (call->incoming_stream_compression_algorithm !=
1435
- GRPC_STREAM_COMPRESS_NONE &&
1436
- call->incoming_message_compression_algorithm !=
1437
- GRPC_MESSAGE_COMPRESS_NONE) {
1438
- char* error_msg = nullptr;
1439
- gpr_asprintf(&error_msg,
1440
- "Incoming stream has both stream compression (%d) and message "
1441
- "compression (%d).",
1442
- call->incoming_stream_compression_algorithm,
1443
- call->incoming_message_compression_algorithm);
1444
- gpr_log(GPR_ERROR, "%s", error_msg);
1445
- cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_INTERNAL,
1446
- error_msg);
1447
- gpr_free(error_msg);
1428
+ if (GPR_UNLIKELY(call->incoming_stream_compression_algorithm !=
1429
+ GRPC_STREAM_COMPRESS_NONE &&
1430
+ call->incoming_message_compression_algorithm !=
1431
+ GRPC_MESSAGE_COMPRESS_NONE)) {
1432
+ handle_both_stream_and_msg_compression_set(call);
1448
1433
  } else if (
1449
- grpc_compression_algorithm_from_message_stream_compression_algorithm(
1450
- &compression_algorithm, call->incoming_message_compression_algorithm,
1451
- call->incoming_stream_compression_algorithm) == 0) {
1452
- char* error_msg = nullptr;
1453
- gpr_asprintf(&error_msg,
1454
- "Error in incoming message compression (%d) or stream "
1455
- "compression (%d).",
1456
- call->incoming_stream_compression_algorithm,
1457
- call->incoming_message_compression_algorithm);
1458
- cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_INTERNAL,
1459
- error_msg);
1460
- gpr_free(error_msg);
1434
+ GPR_UNLIKELY(
1435
+ grpc_compression_algorithm_from_message_stream_compression_algorithm(
1436
+ &compression_algorithm,
1437
+ call->incoming_message_compression_algorithm,
1438
+ call->incoming_stream_compression_algorithm) == 0)) {
1439
+ handle_error_parsing_compression_algorithm(call);
1461
1440
  } else {
1462
- char* error_msg = nullptr;
1463
1441
  const grpc_compression_options compression_options =
1464
1442
  grpc_channel_compression_options(call->channel);
1465
- if (compression_algorithm >= GRPC_COMPRESS_ALGORITHMS_COUNT) {
1466
- gpr_asprintf(&error_msg, "Invalid compression algorithm value '%d'.",
1467
- compression_algorithm);
1468
- gpr_log(GPR_ERROR, "%s", error_msg);
1469
- cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED,
1470
- error_msg);
1471
- } else if (grpc_compression_options_is_algorithm_enabled(
1472
- &compression_options, compression_algorithm) == 0) {
1443
+ if (GPR_UNLIKELY(compression_algorithm >= GRPC_COMPRESS_ALGORITHMS_COUNT)) {
1444
+ handle_invalid_compression(call, compression_algorithm);
1445
+ } else if (GPR_UNLIKELY(
1446
+ grpc_compression_options_is_algorithm_enabled_internal(
1447
+ &compression_options, compression_algorithm) == 0)) {
1473
1448
  /* check if algorithm is supported by current channel config */
1474
- const char* algo_name = nullptr;
1475
- grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1476
- gpr_asprintf(&error_msg, "Compression algorithm '%s' is disabled.",
1477
- algo_name);
1478
- gpr_log(GPR_ERROR, "%s", error_msg);
1479
- cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED,
1480
- error_msg);
1449
+ handle_compression_algorithm_disabled(call, compression_algorithm);
1481
1450
  }
1482
- gpr_free(error_msg);
1483
-
1484
- GPR_ASSERT(call->encodings_accepted_by_peer != 0);
1485
- if (!GPR_BITGET(call->encodings_accepted_by_peer, compression_algorithm)) {
1486
- if (grpc_compression_trace.enabled()) {
1487
- const char* algo_name = nullptr;
1488
- grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1489
- gpr_log(GPR_ERROR,
1490
- "Compression algorithm ('%s') not present in the bitset of "
1491
- "accepted encodings ('0x%x')",
1492
- algo_name, call->encodings_accepted_by_peer);
1451
+ /* GRPC_COMPRESS_NONE is always set. */
1452
+ GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
1453
+ if (GPR_UNLIKELY(!GPR_BITGET(call->encodings_accepted_by_peer,
1454
+ compression_algorithm))) {
1455
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
1456
+ handle_compression_algorithm_not_accepted(call, compression_algorithm);
1493
1457
  }
1494
1458
  }
1495
1459
  }
1496
1460
  }
1497
1461
 
1498
- static void add_batch_error(batch_control* bctl, grpc_error* error,
1499
- bool has_cancelled) {
1500
- if (error == GRPC_ERROR_NONE) return;
1501
- int idx = static_cast<int>(gpr_atm_full_fetch_add(&bctl->num_errors, 1));
1502
- if (idx == 0 && !has_cancelled) {
1503
- cancel_with_error(bctl->call, STATUS_FROM_CORE, GRPC_ERROR_REF(error));
1504
- }
1505
- bctl->errors[idx] = error;
1506
- }
1507
-
1508
1462
  static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1509
1463
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1510
1464
  grpc_call* call = bctl->call;
1511
1465
 
1512
1466
  GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready");
1513
1467
 
1514
- add_batch_error(bctl, GRPC_ERROR_REF(error), false);
1515
1468
  if (error == GRPC_ERROR_NONE) {
1516
1469
  grpc_metadata_batch* md =
1517
1470
  &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
@@ -1524,6 +1477,13 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1524
1477
  if (md->deadline != GRPC_MILLIS_INF_FUTURE && !call->is_client) {
1525
1478
  call->send_deadline = md->deadline;
1526
1479
  }
1480
+ } else {
1481
+ if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1482
+ GRPC_ERROR_NONE) {
1483
+ gpr_atm_rel_store(&bctl->batch_error,
1484
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1485
+ }
1486
+ cancel_with_error(call, GRPC_ERROR_REF(error));
1527
1487
  }
1528
1488
 
1529
1489
  grpc_closure* saved_rsr_closure = nullptr;
@@ -1551,7 +1511,8 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1551
1511
  }
1552
1512
  }
1553
1513
  if (saved_rsr_closure != nullptr) {
1554
- GRPC_CLOSURE_RUN(saved_rsr_closure, GRPC_ERROR_REF(error));
1514
+ grpc_core::Closure::Run(DEBUG_LOCATION, saved_rsr_closure,
1515
+ GRPC_ERROR_REF(error));
1555
1516
  }
1556
1517
 
1557
1518
  finish_batch_step(bctl);
@@ -1561,10 +1522,9 @@ static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) {
1561
1522
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1562
1523
  grpc_call* call = bctl->call;
1563
1524
  GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready");
1564
- add_batch_error(bctl, GRPC_ERROR_REF(error), false);
1565
1525
  grpc_metadata_batch* md =
1566
1526
  &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1567
- recv_trailing_filter(call, md);
1527
+ recv_trailing_filter(call, md, GRPC_ERROR_REF(error));
1568
1528
  finish_batch_step(bctl);
1569
1529
  }
1570
1530
 
@@ -1572,11 +1532,18 @@ static void finish_batch(void* bctlp, grpc_error* error) {
1572
1532
  batch_control* bctl = static_cast<batch_control*>(bctlp);
1573
1533
  grpc_call* call = bctl->call;
1574
1534
  GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
1575
- add_batch_error(bctl, GRPC_ERROR_REF(error), false);
1535
+ if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1536
+ GRPC_ERROR_NONE) {
1537
+ gpr_atm_rel_store(&bctl->batch_error,
1538
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1539
+ }
1540
+ if (error != GRPC_ERROR_NONE) {
1541
+ cancel_with_error(call, GRPC_ERROR_REF(error));
1542
+ }
1576
1543
  finish_batch_step(bctl);
1577
1544
  }
1578
1545
 
1579
- static void free_no_op_completion(void* p, grpc_cq_completion* completion) {
1546
+ static void free_no_op_completion(void* /*p*/, grpc_cq_completion* completion) {
1580
1547
  gpr_free(completion);
1581
1548
  }
1582
1549
 
@@ -1594,7 +1561,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1594
1561
  grpc_transport_stream_op_batch* stream_op;
1595
1562
  grpc_transport_stream_op_batch_payload* stream_op_payload;
1596
1563
 
1597
- GRPC_CALL_LOG_BATCH(GPR_INFO, call, ops, nops, notify_tag);
1564
+ GRPC_CALL_LOG_BATCH(GPR_INFO, ops, nops);
1598
1565
 
1599
1566
  if (nops == 0) {
1600
1567
  if (!is_notify_tag_closure) {
@@ -1604,13 +1571,14 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1604
1571
  static_cast<grpc_cq_completion*>(
1605
1572
  gpr_malloc(sizeof(grpc_cq_completion))));
1606
1573
  } else {
1607
- GRPC_CLOSURE_SCHED((grpc_closure*)notify_tag, GRPC_ERROR_NONE);
1574
+ grpc_core::Closure::Run(DEBUG_LOCATION, (grpc_closure*)notify_tag,
1575
+ GRPC_ERROR_NONE);
1608
1576
  }
1609
1577
  error = GRPC_CALL_OK;
1610
1578
  goto done;
1611
1579
  }
1612
1580
 
1613
- bctl = reuse_or_allocate_batch_control(call, ops, nops);
1581
+ bctl = reuse_or_allocate_batch_control(call, ops);
1614
1582
  if (bctl == nullptr) {
1615
1583
  return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1616
1584
  }
@@ -1639,8 +1607,15 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1639
1607
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1640
1608
  goto done_with_error;
1641
1609
  }
1610
+ // TODO(juanlishen): If the user has already specified a compression
1611
+ // algorithm by setting the initial metadata with key of
1612
+ // GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
1613
+ // with the compression algorithm mapped from compression level.
1642
1614
  /* process compression level */
1643
- memset(&call->compression_md, 0, sizeof(call->compression_md));
1615
+ grpc_metadata& compression_md = call->compression_md;
1616
+ compression_md.key = grpc_empty_slice();
1617
+ compression_md.value = grpc_empty_slice();
1618
+ compression_md.flags = 0;
1644
1619
  size_t additional_metadata_count = 0;
1645
1620
  grpc_compression_level effective_compression_level =
1646
1621
  GRPC_COMPRESS_LEVEL_NONE;
@@ -1657,17 +1632,18 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1657
1632
  effective_compression_level = copts.default_level.level;
1658
1633
  }
1659
1634
  }
1635
+ // Currently, only server side supports compression level setting.
1660
1636
  if (level_set && !call->is_client) {
1661
1637
  const grpc_compression_algorithm calgo =
1662
1638
  compression_algorithm_for_level_locked(
1663
1639
  call, effective_compression_level);
1664
- /* the following will be picked up by the compress filter and used
1665
- * as the call's compression algorithm. */
1666
- call->compression_md.key = GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST;
1667
- call->compression_md.value = grpc_compression_algorithm_slice(calgo);
1640
+ // The following metadata will be checked and removed by the message
1641
+ // compression filter. It will be used as the call's compression
1642
+ // algorithm.
1643
+ compression_md.key = GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST;
1644
+ compression_md.value = grpc_compression_algorithm_slice(calgo);
1668
1645
  additional_metadata_count++;
1669
1646
  }
1670
-
1671
1647
  if (op->data.send_initial_metadata.count + additional_metadata_count >
1672
1648
  INT_MAX) {
1673
1649
  error = GRPC_CALL_ERROR_INVALID_METADATA;
@@ -1678,8 +1654,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1678
1654
  if (!prepare_application_metadata(
1679
1655
  call, static_cast<int>(op->data.send_initial_metadata.count),
1680
1656
  op->data.send_initial_metadata.metadata, 0, call->is_client,
1681
- &call->compression_md,
1682
- static_cast<int>(additional_metadata_count))) {
1657
+ &compression_md, static_cast<int>(additional_metadata_count))) {
1683
1658
  error = GRPC_CALL_ERROR_INVALID_METADATA;
1684
1659
  goto done_with_error;
1685
1660
  }
@@ -1772,30 +1747,35 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1772
1747
  call->sent_final_op = true;
1773
1748
  GPR_ASSERT(call->send_extra_metadata_count == 0);
1774
1749
  call->send_extra_metadata_count = 1;
1775
- call->send_extra_metadata[0].md = grpc_channel_get_reffed_status_elem(
1776
- call->channel, op->data.send_status_from_server.status);
1777
- {
1778
- grpc_error* override_error = GRPC_ERROR_NONE;
1779
- if (op->data.send_status_from_server.status != GRPC_STATUS_OK) {
1780
- override_error =
1781
- error_from_status(op->data.send_status_from_server.status,
1782
- "Returned non-ok status");
1783
- }
1784
- if (op->data.send_status_from_server.status_details != nullptr) {
1785
- call->send_extra_metadata[1].md = grpc_mdelem_from_slices(
1786
- GRPC_MDSTR_GRPC_MESSAGE,
1787
- grpc_slice_ref_internal(
1788
- *op->data.send_status_from_server.status_details));
1789
- call->send_extra_metadata_count++;
1750
+ call->send_extra_metadata[0].md = grpc_get_reffed_status_elem(
1751
+ op->data.send_status_from_server.status);
1752
+ grpc_error* status_error =
1753
+ op->data.send_status_from_server.status == GRPC_STATUS_OK
1754
+ ? GRPC_ERROR_NONE
1755
+ : grpc_error_set_int(
1756
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1757
+ "Server returned error"),
1758
+ GRPC_ERROR_INT_GRPC_STATUS,
1759
+ static_cast<intptr_t>(
1760
+ op->data.send_status_from_server.status));
1761
+ if (op->data.send_status_from_server.status_details != nullptr) {
1762
+ call->send_extra_metadata[1].md = grpc_mdelem_from_slices(
1763
+ GRPC_MDSTR_GRPC_MESSAGE,
1764
+ grpc_slice_ref_internal(
1765
+ *op->data.send_status_from_server.status_details));
1766
+ call->send_extra_metadata_count++;
1767
+ if (status_error != GRPC_ERROR_NONE) {
1790
1768
  char* msg = grpc_slice_to_c_string(
1791
1769
  GRPC_MDVALUE(call->send_extra_metadata[1].md));
1792
- override_error =
1793
- grpc_error_set_str(override_error, GRPC_ERROR_STR_GRPC_MESSAGE,
1770
+ status_error =
1771
+ grpc_error_set_str(status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
1794
1772
  grpc_slice_from_copied_string(msg));
1795
1773
  gpr_free(msg);
1796
1774
  }
1797
- set_status_from_error(call, STATUS_FROM_API_OVERRIDE, override_error);
1798
1775
  }
1776
+
1777
+ gpr_atm_rel_store(&call->status_error,
1778
+ reinterpret_cast<gpr_atm>(status_error));
1799
1779
  if (!prepare_application_metadata(
1800
1780
  call,
1801
1781
  static_cast<int>(
@@ -1936,7 +1916,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1936
1916
  if (!is_notify_tag_closure) {
1937
1917
  GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
1938
1918
  }
1939
- gpr_ref_init(&bctl->steps_to_complete, (has_send_ops ? 1 : 0) + num_recv_ops);
1919
+ bctl->set_num_steps_to_complete((has_send_ops ? 1 : 0) + num_recv_ops);
1940
1920
 
1941
1921
  if (has_send_ops) {
1942
1922
  GRPC_CLOSURE_INIT(&bctl->finish_batch, finish_batch, bctl,
@@ -1978,7 +1958,6 @@ done_with_error:
1978
1958
 
1979
1959
  grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
1980
1960
  size_t nops, void* tag, void* reserved) {
1981
- grpc_core::ExecCtx exec_ctx;
1982
1961
  grpc_call_error err;
1983
1962
 
1984
1963
  GRPC_API_TRACE(
@@ -1989,6 +1968,8 @@ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
1989
1968
  if (reserved != nullptr) {
1990
1969
  err = GRPC_CALL_ERROR;
1991
1970
  } else {
1971
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1972
+ grpc_core::ExecCtx exec_ctx;
1992
1973
  err = call_start_batch(call, ops, nops, tag, 0);
1993
1974
  }
1994
1975