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
@@ -67,7 +67,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
67
67
  s->included[id] = 0;
68
68
  }
69
69
  *stream = s;
70
- if (s && grpc_trace_http2_stream_state.enabled()) {
70
+ if (s && GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
71
71
  gpr_log(GPR_INFO, "%p[%d][%s]: pop from %s", t, s->id,
72
72
  t->is_client ? "cli" : "svr", stream_list_id_string(id));
73
73
  }
@@ -89,7 +89,7 @@ static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
89
89
  } else {
90
90
  t->lists[id].tail = s->links[id].prev;
91
91
  }
92
- if (grpc_trace_http2_stream_state.enabled()) {
92
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
93
93
  gpr_log(GPR_INFO, "%p[%d][%s]: remove from %s", t, s->id,
94
94
  t->is_client ? "cli" : "svr", stream_list_id_string(id));
95
95
  }
@@ -121,7 +121,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
121
121
  }
122
122
  t->lists[id].tail = s;
123
123
  s->included[id] = 1;
124
- if (grpc_trace_http2_stream_state.enabled()) {
124
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
125
125
  gpr_log(GPR_INFO, "%p[%d][%s]: add to %s", t, s->id,
126
126
  t->is_client ? "cli" : "svr", stream_list_id_string(id));
127
127
  }
@@ -27,7 +27,7 @@
27
27
 
28
28
  void grpc_chttp2_stream_map_init(grpc_chttp2_stream_map* map,
29
29
  size_t initial_capacity) {
30
- GPR_ASSERT(initial_capacity > 1);
30
+ GPR_DEBUG_ASSERT(initial_capacity > 1);
31
31
  map->keys =
32
32
  static_cast<uint32_t*>(gpr_malloc(sizeof(uint32_t) * initial_capacity));
33
33
  map->values =
@@ -63,9 +63,17 @@ void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map* map, uint32_t key,
63
63
  uint32_t* keys = map->keys;
64
64
  void** values = map->values;
65
65
 
66
+ // The first assertion ensures that the table is monotonically increasing.
66
67
  GPR_ASSERT(count == 0 || keys[count - 1] < key);
67
- GPR_ASSERT(value);
68
- GPR_ASSERT(grpc_chttp2_stream_map_find(map, key) == nullptr);
68
+ GPR_DEBUG_ASSERT(value);
69
+ // Asserting that the key is not already in the map can be a debug assertion.
70
+ // Why: we're already checking that the map elements are monotonically
71
+ // increasing. If we re-add a key, i.e. if the key is already present, then
72
+ // either it is the most recently added key in the map (in which case the
73
+ // first assertion fails due to key == last_key) or there is a more recently
74
+ // added (larger) key at the end of the map: in which case the first assertion
75
+ // still fails due to key < last_key.
76
+ GPR_DEBUG_ASSERT(grpc_chttp2_stream_map_find(map, key) == nullptr);
69
77
 
70
78
  if (count == capacity) {
71
79
  if (map->free > capacity / 4) {
@@ -74,7 +82,7 @@ void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map* map, uint32_t key,
74
82
  } else {
75
83
  /* resize when less than 25% of the table is free, because compaction
76
84
  won't help much */
77
- map->capacity = capacity = 3 * capacity / 2;
85
+ map->capacity = capacity = 2 * capacity;
78
86
  map->keys = keys = static_cast<uint32_t*>(
79
87
  gpr_realloc(keys, capacity * sizeof(uint32_t)));
80
88
  map->values = values =
@@ -87,6 +95,7 @@ void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map* map, uint32_t key,
87
95
  map->count = count + 1;
88
96
  }
89
97
 
98
+ template <bool strict_find>
90
99
  static void** find(grpc_chttp2_stream_map* map, uint32_t key) {
91
100
  size_t min_idx = 0;
92
101
  size_t max_idx = map->count;
@@ -95,7 +104,8 @@ static void** find(grpc_chttp2_stream_map* map, uint32_t key) {
95
104
  void** values = map->values;
96
105
  uint32_t mid_key;
97
106
 
98
- if (max_idx == 0) return nullptr;
107
+ GPR_DEBUG_ASSERT(!strict_find || max_idx > 0);
108
+ if (!strict_find && max_idx == 0) return nullptr;
99
109
 
100
110
  while (min_idx < max_idx) {
101
111
  /* find the midpoint, avoiding overflow */
@@ -112,28 +122,28 @@ static void** find(grpc_chttp2_stream_map* map, uint32_t key) {
112
122
  }
113
123
  }
114
124
 
125
+ GPR_DEBUG_ASSERT(!strict_find);
115
126
  return nullptr;
116
127
  }
117
128
 
118
129
  void* grpc_chttp2_stream_map_delete(grpc_chttp2_stream_map* map, uint32_t key) {
119
- void** pvalue = find(map, key);
120
- void* out = nullptr;
121
- if (pvalue != nullptr) {
122
- out = *pvalue;
123
- *pvalue = nullptr;
124
- map->free += (out != nullptr);
125
- /* recognize complete emptyness and ensure we can skip
126
- * defragmentation later */
127
- if (map->free == map->count) {
128
- map->free = map->count = 0;
129
- }
130
- GPR_ASSERT(grpc_chttp2_stream_map_find(map, key) == nullptr);
130
+ void** pvalue = find<true>(map, key);
131
+ GPR_DEBUG_ASSERT(pvalue != nullptr);
132
+ void* out = *pvalue;
133
+ GPR_DEBUG_ASSERT(out != nullptr);
134
+ *pvalue = nullptr;
135
+ map->free++;
136
+ /* recognize complete emptyness and ensure we can skip
137
+ defragmentation later */
138
+ if (map->free == map->count) {
139
+ map->free = map->count = 0;
131
140
  }
141
+ GPR_DEBUG_ASSERT(grpc_chttp2_stream_map_find(map, key) == nullptr);
132
142
  return out;
133
143
  }
134
144
 
135
145
  void* grpc_chttp2_stream_map_find(grpc_chttp2_stream_map* map, uint32_t key) {
136
- void** pvalue = find(map, key);
146
+ void** pvalue = find<false>(map, key);
137
147
  return pvalue != nullptr ? *pvalue : nullptr;
138
148
  }
139
149
 
@@ -29,14 +29,13 @@
29
29
  Lookups are performed with binary search.
30
30
  Adds are restricted to strictly higher keys than previously seen (this is
31
31
  guaranteed by http2). */
32
- typedef struct {
32
+ struct grpc_chttp2_stream_map {
33
33
  uint32_t* keys;
34
34
  void** values;
35
35
  size_t count;
36
36
  size_t free;
37
37
  size_t capacity;
38
- } grpc_chttp2_stream_map;
39
-
38
+ };
40
39
  void grpc_chttp2_stream_map_init(grpc_chttp2_stream_map* map,
41
40
  size_t initial_capacity);
42
41
  void grpc_chttp2_stream_map_destroy(grpc_chttp2_stream_map* map);
@@ -18,12 +18,15 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
+ #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
22
+ #include "src/core/ext/transport/chttp2/transport/context_list.h"
21
23
  #include "src/core/ext/transport/chttp2/transport/internal.h"
22
24
 
23
25
  #include <limits.h>
24
26
 
25
27
  #include <grpc/support/log.h>
26
28
 
29
+ #include "src/core/lib/compression/stream_compression.h"
27
30
  #include "src/core/lib/debug/stats.h"
28
31
  #include "src/core/lib/profiling/timers.h"
29
32
  #include "src/core/lib/slice/slice_internal.h"
@@ -51,8 +54,10 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
51
54
  }
52
55
  if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
53
56
  /* ping already in-flight: wait */
54
- if (grpc_http_trace.enabled() || grpc_bdp_estimator_trace.enabled()) {
55
- gpr_log(GPR_INFO, "%s: Ping delayed [%p]: already pinging",
57
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
58
+ GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
59
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
60
+ gpr_log(GPR_INFO, "%s: Ping delayed [%s]: already pinging",
56
61
  t->is_client ? "CLIENT" : "SERVER", t->peer_string);
57
62
  }
58
63
  return;
@@ -60,8 +65,10 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
60
65
  if (t->ping_state.pings_before_data_required == 0 &&
61
66
  t->ping_policy.max_pings_without_data != 0) {
62
67
  /* need to receive something of substance before sending a ping again */
63
- if (grpc_http_trace.enabled() || grpc_bdp_estimator_trace.enabled()) {
64
- gpr_log(GPR_INFO, "%s: Ping delayed [%p]: too many recent pings: %d/%d",
68
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
69
+ GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
70
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
71
+ gpr_log(GPR_INFO, "%s: Ping delayed [%s]: too many recent pings: %d/%d",
65
72
  t->is_client ? "CLIENT" : "SERVER", t->peer_string,
66
73
  t->ping_state.pings_before_data_required,
67
74
  t->ping_policy.max_pings_without_data);
@@ -74,15 +81,19 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
74
81
  (t->keepalive_permit_without_calls == 0 &&
75
82
  grpc_chttp2_stream_map_size(&t->stream_map) == 0)
76
83
  ? 7200 * GPR_MS_PER_SEC
77
- : t->ping_policy.min_sent_ping_interval_without_data;
84
+ : (t->ping_policy.min_sent_ping_interval_without_data +
85
+ GPR_MS_PER_SEC); /* A second is added to deal with network delays
86
+ and timing imprecision */
78
87
  grpc_millis next_allowed_ping =
79
88
  t->ping_state.last_ping_sent_time + next_allowed_ping_interval;
80
89
 
81
90
  if (next_allowed_ping > now) {
82
91
  /* not enough elapsed time between successive pings */
83
- if (grpc_http_trace.enabled() || grpc_bdp_estimator_trace.enabled()) {
92
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
93
+ GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
94
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
84
95
  gpr_log(GPR_INFO,
85
- "%s: Ping delayed [%p]: not enough time elapsed since last ping. "
96
+ "%s: Ping delayed [%s]: not enough time elapsed since last ping. "
86
97
  " Last ping %f: Next ping %f: Now %f",
87
98
  t->is_client ? "CLIENT" : "SERVER", t->peer_string,
88
99
  static_cast<double>(t->ping_state.last_ping_sent_time),
@@ -91,6 +102,9 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
91
102
  if (!t->ping_state.is_delayed_ping_timer_set) {
92
103
  t->ping_state.is_delayed_ping_timer_set = true;
93
104
  GRPC_CHTTP2_REF_TRANSPORT(t, "retry_initiate_ping_locked");
105
+ GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
106
+ grpc_chttp2_retry_initiate_ping, t,
107
+ grpc_schedule_on_exec_ctx);
94
108
  grpc_timer_init(&t->ping_state.delayed_ping_timer, next_allowed_ping,
95
109
  &t->retry_initiate_ping_locked);
96
110
  }
@@ -99,15 +113,18 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
99
113
 
100
114
  pq->inflight_id = t->ping_ctr;
101
115
  t->ping_ctr++;
102
- GRPC_CLOSURE_LIST_SCHED(&pq->lists[GRPC_CHTTP2_PCL_INITIATE]);
116
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
117
+ &pq->lists[GRPC_CHTTP2_PCL_INITIATE]);
103
118
  grpc_closure_list_move(&pq->lists[GRPC_CHTTP2_PCL_NEXT],
104
119
  &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]);
105
120
  grpc_slice_buffer_add(&t->outbuf,
106
121
  grpc_chttp2_ping_create(false, pq->inflight_id));
107
122
  GRPC_STATS_INC_HTTP2_PINGS_SENT();
108
123
  t->ping_state.last_ping_sent_time = now;
109
- if (grpc_http_trace.enabled() || grpc_bdp_estimator_trace.enabled()) {
110
- gpr_log(GPR_INFO, "%s: Ping sent [%p]: %d/%d",
124
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
125
+ GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
126
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
127
+ gpr_log(GPR_INFO, "%s: Ping sent [%s]: %d/%d",
111
128
  t->is_client ? "CLIENT" : "SERVER", t->peer_string,
112
129
  t->ping_state.pings_before_data_required,
113
130
  t->ping_policy.max_pings_without_data);
@@ -139,7 +156,7 @@ static bool update_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
139
156
 
140
157
  static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
141
158
  const char* staller) {
142
- if (grpc_flowctl_trace.enabled()) {
159
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_flowctl_trace)) {
143
160
  gpr_log(
144
161
  GPR_DEBUG,
145
162
  "%s:%p stream %d moved to stalled list by %s. This is FULLY expected "
@@ -149,7 +166,11 @@ static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
149
166
  ":flowed=%" PRId64 ":peer_initwin=%d:t_win=%" PRId64
150
167
  ":s_win=%d:s_delta=%" PRId64 "]",
151
168
  t->peer_string, t, s->id, staller, s->flow_controlled_buffer.length,
152
- s->compressed_data_buffer.length, s->flow_controlled_bytes_flowed,
169
+ s->stream_compression_method ==
170
+ GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS
171
+ ? 0
172
+ : s->compressed_data_buffer.length,
173
+ s->flow_controlled_bytes_flowed,
153
174
  t->settings[GRPC_ACKED_SETTINGS]
154
175
  [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
155
176
  t->flow_control->remote_window(),
@@ -162,17 +183,8 @@ static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
162
183
  }
163
184
  }
164
185
 
165
- static bool stream_ref_if_not_destroyed(gpr_refcount* r) {
166
- gpr_atm count;
167
- do {
168
- count = gpr_atm_acq_load(&r->count);
169
- if (count == 0) return false;
170
- } while (!gpr_atm_rel_cas(&r->count, count, count + 1));
171
- return true;
172
- }
173
-
174
186
  /* How many bytes would we like to put on the wire during a single syscall */
175
- static uint32_t target_write_size(grpc_chttp2_transport* t) {
187
+ static uint32_t target_write_size(grpc_chttp2_transport* /*t*/) {
176
188
  return 1024 * 1024;
177
189
  }
178
190
 
@@ -218,6 +230,7 @@ class WriteContext {
218
230
  void FlushQueuedBuffers() {
219
231
  /* simple writes are queued to qbuf, and flushed here */
220
232
  grpc_slice_buffer_move_into(&t_->qbuf, &t_->outbuf);
233
+ t_->num_pending_induced_frames = 0;
221
234
  GPR_ASSERT(t_->qbuf.count == 0);
222
235
  }
223
236
 
@@ -253,7 +266,7 @@ class WriteContext {
253
266
  while (grpc_chttp2_list_pop_stalled_by_transport(t_, &s)) {
254
267
  if (t_->closed_with_error == GRPC_ERROR_NONE &&
255
268
  grpc_chttp2_list_add_writable_stream(t_, s)) {
256
- if (!stream_ref_if_not_destroyed(&s->refcount->refs)) {
269
+ if (!s->refcount->refs.RefIfNonZero()) {
257
270
  grpc_chttp2_list_remove_writable_stream(t_, s);
258
271
  }
259
272
  }
@@ -333,7 +346,23 @@ class DataSendContext {
333
346
 
334
347
  bool AnyOutgoing() const { return max_outgoing() > 0; }
335
348
 
349
+ void FlushUncompressedBytes() {
350
+ uint32_t send_bytes = static_cast<uint32_t> GPR_MIN(
351
+ max_outgoing(), s_->flow_controlled_buffer.length);
352
+ is_last_frame_ = send_bytes == s_->flow_controlled_buffer.length &&
353
+ s_->fetching_send_message == nullptr &&
354
+ s_->send_trailing_metadata != nullptr &&
355
+ grpc_metadata_batch_is_empty(s_->send_trailing_metadata);
356
+ grpc_chttp2_encode_data(s_->id, &s_->flow_controlled_buffer, send_bytes,
357
+ is_last_frame_, &s_->stats.outgoing, &t_->outbuf);
358
+ s_->flow_control->SentData(send_bytes);
359
+ s_->sending_bytes += send_bytes;
360
+ }
361
+
336
362
  void FlushCompressedBytes() {
363
+ GPR_DEBUG_ASSERT(s_->stream_compression_method !=
364
+ GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS);
365
+
337
366
  uint32_t send_bytes = static_cast<uint32_t> GPR_MIN(
338
367
  max_outgoing(), s_->compressed_data_buffer.length);
339
368
  bool is_last_data_frame =
@@ -368,6 +397,9 @@ class DataSendContext {
368
397
  }
369
398
 
370
399
  void CompressMoreBytes() {
400
+ GPR_DEBUG_ASSERT(s_->stream_compression_method !=
401
+ GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS);
402
+
371
403
  if (s_->stream_compression_ctx == nullptr) {
372
404
  s_->stream_compression_ctx =
373
405
  grpc_stream_compression_context_create(s_->stream_compression_method);
@@ -425,7 +457,7 @@ class StreamWriteContext {
425
457
  // https://github.com/grpc/proposal/blob/master/A6-client-retries.md#when-retries-are-valid
426
458
  if (!t_->is_client && s_->fetching_send_message == nullptr &&
427
459
  s_->flow_controlled_buffer.length == 0 &&
428
- s_->compressed_data_buffer.length == 0 &&
460
+ compressed_data_buffer_len() == 0 &&
429
461
  s_->send_trailing_metadata != nullptr &&
430
462
  is_default_initial_metadata(s_->send_initial_metadata)) {
431
463
  ConvertInitialMetadataToTrailingMetadata();
@@ -454,6 +486,13 @@ class StreamWriteContext {
454
486
  "send_initial_metadata_finished");
455
487
  }
456
488
 
489
+ size_t compressed_data_buffer_len() {
490
+ return s_->stream_compression_method ==
491
+ GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS
492
+ ? 0
493
+ : s_->compressed_data_buffer.length;
494
+ }
495
+
457
496
  void FlushWindowUpdates() {
458
497
  /* send any window updates */
459
498
  const uint32_t stream_announce = s_->flow_control->MaybeSendUpdate();
@@ -470,7 +509,7 @@ class StreamWriteContext {
470
509
  if (!s_->sent_initial_metadata) return;
471
510
 
472
511
  if (s_->flow_controlled_buffer.length == 0 &&
473
- s_->compressed_data_buffer.length == 0) {
512
+ compressed_data_buffer_len() == 0) {
474
513
  return; // early out: nothing to do
475
514
  }
476
515
 
@@ -487,13 +526,21 @@ class StreamWriteContext {
487
526
  return; // early out: nothing to do
488
527
  }
489
528
 
490
- while ((s_->flow_controlled_buffer.length > 0 ||
491
- s_->compressed_data_buffer.length > 0) &&
492
- data_send_context.max_outgoing() > 0) {
493
- if (s_->compressed_data_buffer.length > 0) {
494
- data_send_context.FlushCompressedBytes();
495
- } else {
496
- data_send_context.CompressMoreBytes();
529
+ if (s_->stream_compression_method ==
530
+ GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS) {
531
+ while (s_->flow_controlled_buffer.length > 0 &&
532
+ data_send_context.max_outgoing() > 0) {
533
+ data_send_context.FlushUncompressedBytes();
534
+ }
535
+ } else {
536
+ while ((s_->flow_controlled_buffer.length > 0 ||
537
+ s_->compressed_data_buffer.length > 0) &&
538
+ data_send_context.max_outgoing() > 0) {
539
+ if (s_->compressed_data_buffer.length > 0) {
540
+ data_send_context.FlushCompressedBytes();
541
+ } else {
542
+ data_send_context.CompressMoreBytes();
543
+ }
497
544
  }
498
545
  }
499
546
  write_context_->ResetPingClock();
@@ -503,7 +550,7 @@ class StreamWriteContext {
503
550
  data_send_context.CallCallbacks();
504
551
  stream_became_writable_ = true;
505
552
  if (s_->flow_controlled_buffer.length > 0 ||
506
- s_->compressed_data_buffer.length > 0) {
553
+ compressed_data_buffer_len() > 0) {
507
554
  GRPC_CHTTP2_STREAM_REF(s_, "chttp2_writing:fork");
508
555
  grpc_chttp2_list_add_writable_stream(t_, s_);
509
556
  }
@@ -516,7 +563,7 @@ class StreamWriteContext {
516
563
  if (s_->send_trailing_metadata == nullptr) return;
517
564
  if (s_->fetching_send_message != nullptr) return;
518
565
  if (s_->flow_controlled_buffer.length != 0) return;
519
- if (s_->compressed_data_buffer.length != 0) return;
566
+ if (compressed_data_buffer_len() != 0) return;
520
567
 
521
568
  GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "sending trailing_metadata"));
522
569
  if (grpc_metadata_batch_is_empty(s_->send_trailing_metadata)) {
@@ -569,6 +616,7 @@ class StreamWriteContext {
569
616
  void SentLastFrame() {
570
617
  s_->send_trailing_metadata = nullptr;
571
618
  s_->sent_trailing_metadata = true;
619
+ s_->eos_sent = true;
572
620
 
573
621
  if (!t_->is_client && !s_->read_closed) {
574
622
  grpc_slice_buffer_add(
@@ -604,11 +652,18 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write(
604
652
  (according to available window sizes) and add to the output buffer */
605
653
  while (grpc_chttp2_stream* s = ctx.NextStream()) {
606
654
  StreamWriteContext stream_ctx(&ctx, s);
655
+ size_t orig_len = t->outbuf.length;
607
656
  stream_ctx.FlushInitialMetadata();
608
657
  stream_ctx.FlushWindowUpdates();
609
658
  stream_ctx.FlushData();
610
659
  stream_ctx.FlushTrailingMetadata();
611
-
660
+ if (t->outbuf.length > orig_len) {
661
+ /* Add this stream to the list of the contexts to be traced at TCP */
662
+ s->byte_counter += t->outbuf.length - orig_len;
663
+ if (s->traced && grpc_endpoint_can_track_err(t->ep)) {
664
+ grpc_core::ContextList::Append(&t->cl, s);
665
+ }
666
+ }
612
667
  if (stream_ctx.stream_became_writable()) {
613
668
  if (!grpc_chttp2_list_add_writing_stream(t, s)) {
614
669
  /* already in writing list: drop ref */
@@ -632,6 +687,11 @@ void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error* error) {
632
687
  GPR_TIMER_SCOPE("grpc_chttp2_end_write", 0);
633
688
  grpc_chttp2_stream* s;
634
689
 
690
+ if (t->channelz_socket != nullptr) {
691
+ t->channelz_socket->RecordMessagesSent(t->num_messages_in_next_write);
692
+ }
693
+ t->num_messages_in_next_write = 0;
694
+
635
695
  while (grpc_chttp2_list_pop_writing_stream(t, &s)) {
636
696
  if (s->sending_bytes != 0) {
637
697
  update_list(t, s, static_cast<int64_t>(s->sending_bytes),
@@ -35,153 +35,253 @@
35
35
  #include "src/core/lib/transport/error_utils.h"
36
36
  #include "src/core/lib/transport/transport_impl.h"
37
37
 
38
- #define INPROC_LOG(...) \
39
- do { \
40
- if (grpc_inproc_trace.enabled()) gpr_log(__VA_ARGS__); \
38
+ #define INPROC_LOG(...) \
39
+ do { \
40
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) { \
41
+ gpr_log(__VA_ARGS__); \
42
+ } \
41
43
  } while (0)
42
44
 
43
- static grpc_slice g_empty_slice;
44
- static grpc_slice g_fake_path_key;
45
- static grpc_slice g_fake_path_value;
46
- static grpc_slice g_fake_auth_key;
47
- static grpc_slice g_fake_auth_value;
45
+ namespace {
46
+ grpc_slice g_empty_slice;
47
+ grpc_slice g_fake_path_key;
48
+ grpc_slice g_fake_path_value;
49
+ grpc_slice g_fake_auth_key;
50
+ grpc_slice g_fake_auth_value;
51
+
52
+ struct inproc_stream;
53
+ bool cancel_stream_locked(inproc_stream* s, grpc_error* error);
54
+ void maybe_process_ops_locked(inproc_stream* s, grpc_error* error);
55
+ void op_state_machine_locked(inproc_stream* s, grpc_error* error);
56
+ void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
57
+ bool is_initial);
58
+ grpc_error* fill_in_metadata(inproc_stream* s,
59
+ const grpc_metadata_batch* metadata,
60
+ uint32_t flags, grpc_metadata_batch* out_md,
61
+ uint32_t* outflags, bool* markfilled);
62
+
63
+ struct shared_mu {
64
+ shared_mu() {
65
+ // Share one lock between both sides since both sides get affected
66
+ gpr_mu_init(&mu);
67
+ gpr_ref_init(&refs, 2);
68
+ }
69
+
70
+ ~shared_mu() { gpr_mu_destroy(&mu); }
48
71
 
49
- typedef struct {
50
72
  gpr_mu mu;
51
73
  gpr_refcount refs;
52
- } shared_mu;
74
+ };
75
+
76
+ struct inproc_transport {
77
+ inproc_transport(const grpc_transport_vtable* vtable, shared_mu* mu,
78
+ bool is_client)
79
+ : mu(mu),
80
+ is_client(is_client),
81
+ state_tracker(is_client ? "inproc_client" : "inproc_server",
82
+ GRPC_CHANNEL_READY) {
83
+ base.vtable = vtable;
84
+ // Start each side of transport with 2 refs since they each have a ref
85
+ // to the other
86
+ gpr_ref_init(&refs, 2);
87
+ }
88
+
89
+ ~inproc_transport() {
90
+ if (gpr_unref(&mu->refs)) {
91
+ mu->~shared_mu();
92
+ gpr_free(mu);
93
+ }
94
+ }
95
+
96
+ void ref() {
97
+ INPROC_LOG(GPR_INFO, "ref_transport %p", this);
98
+ gpr_ref(&refs);
99
+ }
100
+
101
+ void unref() {
102
+ INPROC_LOG(GPR_INFO, "unref_transport %p", this);
103
+ if (!gpr_unref(&refs)) {
104
+ return;
105
+ }
106
+ INPROC_LOG(GPR_INFO, "really_destroy_transport %p", this);
107
+ this->~inproc_transport();
108
+ gpr_free(this);
109
+ }
53
110
 
54
- typedef struct inproc_transport {
55
111
  grpc_transport base;
56
112
  shared_mu* mu;
57
113
  gpr_refcount refs;
58
114
  bool is_client;
59
- grpc_connectivity_state_tracker connectivity;
115
+ grpc_core::ConnectivityStateTracker state_tracker;
60
116
  void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
61
117
  const void* server_data);
62
118
  void* accept_stream_data;
63
- bool is_closed;
119
+ bool is_closed = false;
64
120
  struct inproc_transport* other_side;
65
- struct inproc_stream* stream_list;
66
- } inproc_transport;
121
+ struct inproc_stream* stream_list = nullptr;
122
+ };
123
+
124
+ struct inproc_stream {
125
+ inproc_stream(inproc_transport* t, grpc_stream_refcount* refcount,
126
+ const void* server_data, grpc_core::Arena* arena)
127
+ : t(t), refs(refcount), arena(arena) {
128
+ // Ref this stream right now for ctor and list.
129
+ ref("inproc_init_stream:init");
130
+ ref("inproc_init_stream:list");
131
+
132
+ grpc_metadata_batch_init(&to_read_initial_md);
133
+ grpc_metadata_batch_init(&to_read_trailing_md);
134
+ grpc_metadata_batch_init(&write_buffer_initial_md);
135
+ grpc_metadata_batch_init(&write_buffer_trailing_md);
136
+
137
+ stream_list_prev = nullptr;
138
+ gpr_mu_lock(&t->mu->mu);
139
+ stream_list_next = t->stream_list;
140
+ if (t->stream_list) {
141
+ t->stream_list->stream_list_prev = this;
142
+ }
143
+ t->stream_list = this;
144
+ gpr_mu_unlock(&t->mu->mu);
145
+
146
+ if (!server_data) {
147
+ t->ref();
148
+ inproc_transport* st = t->other_side;
149
+ st->ref();
150
+ other_side = nullptr; // will get filled in soon
151
+ // Pass the client-side stream address to the server-side for a ref
152
+ ref("inproc_init_stream:clt"); // ref it now on behalf of server
153
+ // side to avoid destruction
154
+ INPROC_LOG(GPR_INFO, "calling accept stream cb %p %p",
155
+ st->accept_stream_cb, st->accept_stream_data);
156
+ (*st->accept_stream_cb)(st->accept_stream_data, &st->base, (void*)this);
157
+ } else {
158
+ // This is the server-side and is being called through accept_stream_cb
159
+ inproc_stream* cs = (inproc_stream*)server_data;
160
+ other_side = cs;
161
+ // Ref the server-side stream on behalf of the client now
162
+ ref("inproc_init_stream:srv");
163
+
164
+ // Now we are about to affect the other side, so lock the transport
165
+ // to make sure that it doesn't get destroyed
166
+ gpr_mu_lock(&t->mu->mu);
167
+ cs->other_side = this;
168
+ // Now transfer from the other side's write_buffer if any to the to_read
169
+ // buffer
170
+ if (cs->write_buffer_initial_md_filled) {
171
+ fill_in_metadata(this, &cs->write_buffer_initial_md,
172
+ cs->write_buffer_initial_md_flags, &to_read_initial_md,
173
+ &to_read_initial_md_flags, &to_read_initial_md_filled);
174
+ deadline = GPR_MIN(deadline, cs->write_buffer_deadline);
175
+ grpc_metadata_batch_clear(&cs->write_buffer_initial_md);
176
+ cs->write_buffer_initial_md_filled = false;
177
+ }
178
+ if (cs->write_buffer_trailing_md_filled) {
179
+ fill_in_metadata(this, &cs->write_buffer_trailing_md, 0,
180
+ &to_read_trailing_md, nullptr,
181
+ &to_read_trailing_md_filled);
182
+ grpc_metadata_batch_clear(&cs->write_buffer_trailing_md);
183
+ cs->write_buffer_trailing_md_filled = false;
184
+ }
185
+ if (cs->write_buffer_cancel_error != GRPC_ERROR_NONE) {
186
+ cancel_other_error = cs->write_buffer_cancel_error;
187
+ cs->write_buffer_cancel_error = GRPC_ERROR_NONE;
188
+ maybe_process_ops_locked(this, cancel_other_error);
189
+ }
190
+
191
+ gpr_mu_unlock(&t->mu->mu);
192
+ }
193
+ }
194
+
195
+ ~inproc_stream() {
196
+ GRPC_ERROR_UNREF(write_buffer_cancel_error);
197
+ GRPC_ERROR_UNREF(cancel_self_error);
198
+ GRPC_ERROR_UNREF(cancel_other_error);
199
+
200
+ if (recv_inited) {
201
+ grpc_slice_buffer_destroy_internal(&recv_message);
202
+ }
203
+
204
+ t->unref();
205
+
206
+ if (closure_at_destroy) {
207
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure_at_destroy,
208
+ GRPC_ERROR_NONE);
209
+ }
210
+ }
211
+
212
+ #ifndef NDEBUG
213
+ #define STREAM_REF(refs, reason) grpc_stream_ref(refs, reason)
214
+ #define STREAM_UNREF(refs, reason) grpc_stream_unref(refs, reason)
215
+ #else
216
+ #define STREAM_REF(refs, reason) grpc_stream_ref(refs)
217
+ #define STREAM_UNREF(refs, reason) grpc_stream_unref(refs)
218
+ #endif
219
+ void ref(const char* reason) {
220
+ INPROC_LOG(GPR_INFO, "ref_stream %p %s", this, reason);
221
+ STREAM_REF(refs, reason);
222
+ }
223
+
224
+ void unref(const char* reason) {
225
+ INPROC_LOG(GPR_INFO, "unref_stream %p %s", this, reason);
226
+ STREAM_UNREF(refs, reason);
227
+ }
228
+ #undef STREAM_REF
229
+ #undef STREAM_UNREF
67
230
 
68
- typedef struct inproc_stream {
69
231
  inproc_transport* t;
70
232
  grpc_metadata_batch to_read_initial_md;
71
- uint32_t to_read_initial_md_flags;
72
- bool to_read_initial_md_filled;
233
+ uint32_t to_read_initial_md_flags = 0;
234
+ bool to_read_initial_md_filled = false;
73
235
  grpc_metadata_batch to_read_trailing_md;
74
- bool to_read_trailing_md_filled;
75
- bool ops_needed;
76
- bool op_closure_scheduled;
77
- grpc_closure op_closure;
236
+ bool to_read_trailing_md_filled = false;
237
+ bool ops_needed = false;
78
238
  // Write buffer used only during gap at init time when client-side
79
239
  // stream is set up but server side stream is not yet set up
80
240
  grpc_metadata_batch write_buffer_initial_md;
81
- bool write_buffer_initial_md_filled;
82
- uint32_t write_buffer_initial_md_flags;
83
- grpc_millis write_buffer_deadline;
241
+ bool write_buffer_initial_md_filled = false;
242
+ uint32_t write_buffer_initial_md_flags = 0;
243
+ grpc_millis write_buffer_deadline = GRPC_MILLIS_INF_FUTURE;
84
244
  grpc_metadata_batch write_buffer_trailing_md;
85
- bool write_buffer_trailing_md_filled;
86
- grpc_error* write_buffer_cancel_error;
245
+ bool write_buffer_trailing_md_filled = false;
246
+ grpc_error* write_buffer_cancel_error = GRPC_ERROR_NONE;
87
247
 
88
248
  struct inproc_stream* other_side;
89
- bool other_side_closed; // won't talk anymore
90
- bool write_buffer_other_side_closed; // on hold
249
+ bool other_side_closed = false; // won't talk anymore
250
+ bool write_buffer_other_side_closed = false; // on hold
91
251
  grpc_stream_refcount* refs;
92
- grpc_closure* closure_at_destroy;
252
+ grpc_closure* closure_at_destroy = nullptr;
93
253
 
94
- gpr_arena* arena;
254
+ grpc_core::Arena* arena;
95
255
 
96
- grpc_transport_stream_op_batch* send_message_op;
97
- grpc_transport_stream_op_batch* send_trailing_md_op;
98
- grpc_transport_stream_op_batch* recv_initial_md_op;
99
- grpc_transport_stream_op_batch* recv_message_op;
100
- grpc_transport_stream_op_batch* recv_trailing_md_op;
256
+ grpc_transport_stream_op_batch* send_message_op = nullptr;
257
+ grpc_transport_stream_op_batch* send_trailing_md_op = nullptr;
258
+ grpc_transport_stream_op_batch* recv_initial_md_op = nullptr;
259
+ grpc_transport_stream_op_batch* recv_message_op = nullptr;
260
+ grpc_transport_stream_op_batch* recv_trailing_md_op = nullptr;
101
261
 
102
262
  grpc_slice_buffer recv_message;
103
263
  grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> recv_stream;
104
- bool recv_inited;
264
+ bool recv_inited = false;
105
265
 
106
- bool initial_md_sent;
107
- bool trailing_md_sent;
108
- bool initial_md_recvd;
109
- bool trailing_md_recvd;
266
+ bool initial_md_sent = false;
267
+ bool trailing_md_sent = false;
268
+ bool initial_md_recvd = false;
269
+ bool trailing_md_recvd = false;
110
270
 
111
- bool closed;
271
+ bool closed = false;
112
272
 
113
- grpc_error* cancel_self_error;
114
- grpc_error* cancel_other_error;
273
+ grpc_error* cancel_self_error = GRPC_ERROR_NONE;
274
+ grpc_error* cancel_other_error = GRPC_ERROR_NONE;
115
275
 
116
- grpc_millis deadline;
276
+ grpc_millis deadline = GRPC_MILLIS_INF_FUTURE;
117
277
 
118
- bool listed;
278
+ bool listed = true;
119
279
  struct inproc_stream* stream_list_prev;
120
280
  struct inproc_stream* stream_list_next;
121
- } inproc_stream;
122
-
123
- static bool cancel_stream_locked(inproc_stream* s, grpc_error* error);
124
- static void op_state_machine(void* arg, grpc_error* error);
125
-
126
- static void ref_transport(inproc_transport* t) {
127
- INPROC_LOG(GPR_INFO, "ref_transport %p", t);
128
- gpr_ref(&t->refs);
129
- }
130
-
131
- static void really_destroy_transport(inproc_transport* t) {
132
- INPROC_LOG(GPR_INFO, "really_destroy_transport %p", t);
133
- grpc_connectivity_state_destroy(&t->connectivity);
134
- if (gpr_unref(&t->mu->refs)) {
135
- gpr_free(t->mu);
136
- }
137
- gpr_free(t);
138
- }
139
-
140
- static void unref_transport(inproc_transport* t) {
141
- INPROC_LOG(GPR_INFO, "unref_transport %p", t);
142
- if (gpr_unref(&t->refs)) {
143
- really_destroy_transport(t);
144
- }
145
- }
146
-
147
- #ifndef NDEBUG
148
- #define STREAM_REF(refs, reason) grpc_stream_ref(refs, reason)
149
- #define STREAM_UNREF(refs, reason) grpc_stream_unref(refs, reason)
150
- #else
151
- #define STREAM_REF(refs, reason) grpc_stream_ref(refs)
152
- #define STREAM_UNREF(refs, reason) grpc_stream_unref(refs)
153
- #endif
154
-
155
- static void ref_stream(inproc_stream* s, const char* reason) {
156
- INPROC_LOG(GPR_INFO, "ref_stream %p %s", s, reason);
157
- STREAM_REF(s->refs, reason);
158
- }
159
-
160
- static void unref_stream(inproc_stream* s, const char* reason) {
161
- INPROC_LOG(GPR_INFO, "unref_stream %p %s", s, reason);
162
- STREAM_UNREF(s->refs, reason);
163
- }
164
-
165
- static void really_destroy_stream(inproc_stream* s) {
166
- INPROC_LOG(GPR_INFO, "really_destroy_stream %p", s);
167
-
168
- GRPC_ERROR_UNREF(s->write_buffer_cancel_error);
169
- GRPC_ERROR_UNREF(s->cancel_self_error);
170
- GRPC_ERROR_UNREF(s->cancel_other_error);
171
-
172
- if (s->recv_inited) {
173
- grpc_slice_buffer_destroy_internal(&s->recv_message);
174
- }
175
-
176
- unref_transport(s->t);
177
-
178
- if (s->closure_at_destroy) {
179
- GRPC_CLOSURE_SCHED(s->closure_at_destroy, GRPC_ERROR_NONE);
180
- }
181
- }
281
+ };
182
282
 
183
- static void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
184
- bool is_initial) {
283
+ void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
284
+ bool is_initial) {
185
285
  for (grpc_linked_mdelem* md = md_batch->list.head; md != nullptr;
186
286
  md = md->next) {
187
287
  char* key = grpc_slice_to_c_string(GRPC_MDKEY(md->md));
@@ -193,11 +293,11 @@ static void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
193
293
  }
194
294
  }
195
295
 
196
- static grpc_error* fill_in_metadata(inproc_stream* s,
197
- const grpc_metadata_batch* metadata,
198
- uint32_t flags, grpc_metadata_batch* out_md,
199
- uint32_t* outflags, bool* markfilled) {
200
- if (grpc_inproc_trace.enabled()) {
296
+ grpc_error* fill_in_metadata(inproc_stream* s,
297
+ const grpc_metadata_batch* metadata,
298
+ uint32_t flags, grpc_metadata_batch* out_md,
299
+ uint32_t* outflags, bool* markfilled) {
300
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) {
201
301
  log_metadata(metadata, s->t->is_client, outflags != nullptr);
202
302
  }
203
303
 
@@ -210,8 +310,8 @@ static grpc_error* fill_in_metadata(inproc_stream* s,
210
310
  grpc_error* error = GRPC_ERROR_NONE;
211
311
  for (grpc_linked_mdelem* elem = metadata->list.head;
212
312
  (elem != nullptr) && (error == GRPC_ERROR_NONE); elem = elem->next) {
213
- grpc_linked_mdelem* nelem = static_cast<grpc_linked_mdelem*>(
214
- gpr_arena_alloc(s->arena, sizeof(*nelem)));
313
+ grpc_linked_mdelem* nelem =
314
+ static_cast<grpc_linked_mdelem*>(s->arena->Alloc(sizeof(*nelem)));
215
315
  nelem->md =
216
316
  grpc_mdelem_from_slices(grpc_slice_intern(GRPC_MDKEY(elem->md)),
217
317
  grpc_slice_intern(GRPC_MDVALUE(elem->md)));
@@ -221,109 +321,16 @@ static grpc_error* fill_in_metadata(inproc_stream* s,
221
321
  return error;
222
322
  }
223
323
 
224
- static int init_stream(grpc_transport* gt, grpc_stream* gs,
225
- grpc_stream_refcount* refcount, const void* server_data,
226
- gpr_arena* arena) {
324
+ int init_stream(grpc_transport* gt, grpc_stream* gs,
325
+ grpc_stream_refcount* refcount, const void* server_data,
326
+ grpc_core::Arena* arena) {
227
327
  INPROC_LOG(GPR_INFO, "init_stream %p %p %p", gt, gs, server_data);
228
328
  inproc_transport* t = reinterpret_cast<inproc_transport*>(gt);
229
- inproc_stream* s = reinterpret_cast<inproc_stream*>(gs);
230
- s->arena = arena;
231
-
232
- s->refs = refcount;
233
- // Ref this stream right now
234
- ref_stream(s, "inproc_init_stream:init");
235
-
236
- grpc_metadata_batch_init(&s->to_read_initial_md);
237
- s->to_read_initial_md_flags = 0;
238
- s->to_read_initial_md_filled = false;
239
- grpc_metadata_batch_init(&s->to_read_trailing_md);
240
- s->to_read_trailing_md_filled = false;
241
- grpc_metadata_batch_init(&s->write_buffer_initial_md);
242
- s->write_buffer_initial_md_flags = 0;
243
- s->write_buffer_initial_md_filled = false;
244
- grpc_metadata_batch_init(&s->write_buffer_trailing_md);
245
- s->write_buffer_trailing_md_filled = false;
246
- s->ops_needed = false;
247
- s->op_closure_scheduled = false;
248
- GRPC_CLOSURE_INIT(&s->op_closure, op_state_machine, s,
249
- grpc_schedule_on_exec_ctx);
250
- s->t = t;
251
- s->closure_at_destroy = nullptr;
252
- s->other_side_closed = false;
253
-
254
- s->initial_md_sent = s->trailing_md_sent = s->initial_md_recvd =
255
- s->trailing_md_recvd = false;
256
-
257
- s->closed = false;
258
-
259
- s->cancel_self_error = GRPC_ERROR_NONE;
260
- s->cancel_other_error = GRPC_ERROR_NONE;
261
- s->write_buffer_cancel_error = GRPC_ERROR_NONE;
262
- s->deadline = GRPC_MILLIS_INF_FUTURE;
263
- s->write_buffer_deadline = GRPC_MILLIS_INF_FUTURE;
264
-
265
- s->stream_list_prev = nullptr;
266
- gpr_mu_lock(&t->mu->mu);
267
- s->listed = true;
268
- ref_stream(s, "inproc_init_stream:list");
269
- s->stream_list_next = t->stream_list;
270
- if (t->stream_list) {
271
- t->stream_list->stream_list_prev = s;
272
- }
273
- t->stream_list = s;
274
- gpr_mu_unlock(&t->mu->mu);
275
-
276
- if (!server_data) {
277
- ref_transport(t);
278
- inproc_transport* st = t->other_side;
279
- ref_transport(st);
280
- s->other_side = nullptr; // will get filled in soon
281
- // Pass the client-side stream address to the server-side for a ref
282
- ref_stream(s, "inproc_init_stream:clt"); // ref it now on behalf of server
283
- // side to avoid destruction
284
- INPROC_LOG(GPR_INFO, "calling accept stream cb %p %p", st->accept_stream_cb,
285
- st->accept_stream_data);
286
- (*st->accept_stream_cb)(st->accept_stream_data, &st->base, (void*)s);
287
- } else {
288
- // This is the server-side and is being called through accept_stream_cb
289
- inproc_stream* cs = (inproc_stream*)server_data;
290
- s->other_side = cs;
291
- // Ref the server-side stream on behalf of the client now
292
- ref_stream(s, "inproc_init_stream:srv");
293
-
294
- // Now we are about to affect the other side, so lock the transport
295
- // to make sure that it doesn't get destroyed
296
- gpr_mu_lock(&s->t->mu->mu);
297
- cs->other_side = s;
298
- // Now transfer from the other side's write_buffer if any to the to_read
299
- // buffer
300
- if (cs->write_buffer_initial_md_filled) {
301
- fill_in_metadata(s, &cs->write_buffer_initial_md,
302
- cs->write_buffer_initial_md_flags,
303
- &s->to_read_initial_md, &s->to_read_initial_md_flags,
304
- &s->to_read_initial_md_filled);
305
- s->deadline = GPR_MIN(s->deadline, cs->write_buffer_deadline);
306
- grpc_metadata_batch_clear(&cs->write_buffer_initial_md);
307
- cs->write_buffer_initial_md_filled = false;
308
- }
309
- if (cs->write_buffer_trailing_md_filled) {
310
- fill_in_metadata(s, &cs->write_buffer_trailing_md, 0,
311
- &s->to_read_trailing_md, nullptr,
312
- &s->to_read_trailing_md_filled);
313
- grpc_metadata_batch_clear(&cs->write_buffer_trailing_md);
314
- cs->write_buffer_trailing_md_filled = false;
315
- }
316
- if (cs->write_buffer_cancel_error != GRPC_ERROR_NONE) {
317
- s->cancel_other_error = cs->write_buffer_cancel_error;
318
- cs->write_buffer_cancel_error = GRPC_ERROR_NONE;
319
- }
320
-
321
- gpr_mu_unlock(&s->t->mu->mu);
322
- }
329
+ new (gs) inproc_stream(t, refcount, server_data, arena);
323
330
  return 0; // return value is not important
324
331
  }
325
332
 
326
- static void close_stream_locked(inproc_stream* s) {
333
+ void close_stream_locked(inproc_stream* s) {
327
334
  if (!s->closed) {
328
335
  // Release the metadata that we would have written out
329
336
  grpc_metadata_batch_destroy(&s->write_buffer_initial_md);
@@ -341,21 +348,21 @@ static void close_stream_locked(inproc_stream* s) {
341
348
  n->stream_list_prev = p;
342
349
  }
343
350
  s->listed = false;
344
- unref_stream(s, "close_stream:list");
351
+ s->unref("close_stream:list");
345
352
  }
346
353
  s->closed = true;
347
- unref_stream(s, "close_stream:closing");
354
+ s->unref("close_stream:closing");
348
355
  }
349
356
  }
350
357
 
351
358
  // This function means that we are done talking/listening to the other side
352
- static void close_other_side_locked(inproc_stream* s, const char* reason) {
359
+ void close_other_side_locked(inproc_stream* s, const char* reason) {
353
360
  if (s->other_side != nullptr) {
354
361
  // First release the metadata that came from the other side's arena
355
362
  grpc_metadata_batch_destroy(&s->to_read_initial_md);
356
363
  grpc_metadata_batch_destroy(&s->to_read_trailing_md);
357
364
 
358
- unref_stream(s->other_side, reason);
365
+ s->other_side->unref(reason);
359
366
  s->other_side_closed = true;
360
367
  s->other_side = nullptr;
361
368
  } else if (!s->other_side_closed) {
@@ -367,9 +374,9 @@ static void close_other_side_locked(inproc_stream* s, const char* reason) {
367
374
  // this stream_op_batch is only one of the pending operations for this
368
375
  // stream. This is called when one of the pending operations for the stream
369
376
  // is done and about to be NULLed out
370
- static void complete_if_batch_end_locked(inproc_stream* s, grpc_error* error,
371
- grpc_transport_stream_op_batch* op,
372
- const char* msg) {
377
+ void complete_if_batch_end_locked(inproc_stream* s, grpc_error* error,
378
+ grpc_transport_stream_op_batch* op,
379
+ const char* msg) {
373
380
  int is_sm = static_cast<int>(op == s->send_message_op);
374
381
  int is_stm = static_cast<int>(op == s->send_trailing_md_op);
375
382
  // TODO(vjpai): We should not consider the recv ops here, since they
@@ -382,20 +389,19 @@ static void complete_if_batch_end_locked(inproc_stream* s, grpc_error* error,
382
389
 
383
390
  if ((is_sm + is_stm + is_rim + is_rm + is_rtm) == 1) {
384
391
  INPROC_LOG(GPR_INFO, "%s %p %p %p", msg, s, op, error);
385
- GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_REF(error));
392
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_complete,
393
+ GRPC_ERROR_REF(error));
386
394
  }
387
395
  }
388
396
 
389
- static void maybe_schedule_op_closure_locked(inproc_stream* s,
390
- grpc_error* error) {
391
- if (s && s->ops_needed && !s->op_closure_scheduled) {
392
- GRPC_CLOSURE_SCHED(&s->op_closure, GRPC_ERROR_REF(error));
393
- s->op_closure_scheduled = true;
397
+ void maybe_process_ops_locked(inproc_stream* s, grpc_error* error) {
398
+ if (s && (error != GRPC_ERROR_NONE || s->ops_needed)) {
394
399
  s->ops_needed = false;
400
+ op_state_machine_locked(s, error);
395
401
  }
396
402
  }
397
403
 
398
- static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
404
+ void fail_helper_locked(inproc_stream* s, grpc_error* error) {
399
405
  INPROC_LOG(GPR_INFO, "op_state_machine %p fail_helper", s);
400
406
  // If we're failing this side, we need to make sure that
401
407
  // we also send or have already sent trailing metadata
@@ -419,7 +425,7 @@ static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
419
425
  if (other->cancel_other_error == GRPC_ERROR_NONE) {
420
426
  other->cancel_other_error = GRPC_ERROR_REF(error);
421
427
  }
422
- maybe_schedule_op_closure_locked(other, error);
428
+ maybe_process_ops_locked(other, error);
423
429
  } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) {
424
430
  s->write_buffer_cancel_error = GRPC_ERROR_REF(error);
425
431
  }
@@ -431,13 +437,13 @@ static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
431
437
  // since it expects that as well as no error yet
432
438
  grpc_metadata_batch fake_md;
433
439
  grpc_metadata_batch_init(&fake_md);
434
- grpc_linked_mdelem* path_md = static_cast<grpc_linked_mdelem*>(
435
- gpr_arena_alloc(s->arena, sizeof(*path_md)));
440
+ grpc_linked_mdelem* path_md =
441
+ static_cast<grpc_linked_mdelem*>(s->arena->Alloc(sizeof(*path_md)));
436
442
  path_md->md = grpc_mdelem_from_slices(g_fake_path_key, g_fake_path_value);
437
443
  GPR_ASSERT(grpc_metadata_batch_link_tail(&fake_md, path_md) ==
438
444
  GRPC_ERROR_NONE);
439
- grpc_linked_mdelem* auth_md = static_cast<grpc_linked_mdelem*>(
440
- gpr_arena_alloc(s->arena, sizeof(*auth_md)));
445
+ grpc_linked_mdelem* auth_md =
446
+ static_cast<grpc_linked_mdelem*>(s->arena->Alloc(sizeof(*auth_md)));
441
447
  auth_md->md = grpc_mdelem_from_slices(g_fake_auth_key, g_fake_auth_value);
442
448
  GPR_ASSERT(grpc_metadata_batch_link_tail(&fake_md, auth_md) ==
443
449
  GRPC_ERROR_NONE);
@@ -464,9 +470,11 @@ static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
464
470
  INPROC_LOG(GPR_INFO,
465
471
  "fail_helper %p scheduling initial-metadata-ready %p %p", s,
466
472
  error, err);
467
- GRPC_CLOSURE_SCHED(s->recv_initial_md_op->payload->recv_initial_metadata
468
- .recv_initial_metadata_ready,
469
- err);
473
+ grpc_core::ExecCtx::Run(
474
+ DEBUG_LOCATION,
475
+ s->recv_initial_md_op->payload->recv_initial_metadata
476
+ .recv_initial_metadata_ready,
477
+ err);
470
478
  // Last use of err so no need to REF and then UNREF it
471
479
 
472
480
  complete_if_batch_end_locked(
@@ -477,7 +485,8 @@ static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
477
485
  if (s->recv_message_op) {
478
486
  INPROC_LOG(GPR_INFO, "fail_helper %p scheduling message-ready %p", s,
479
487
  error);
480
- GRPC_CLOSURE_SCHED(
488
+ grpc_core::ExecCtx::Run(
489
+ DEBUG_LOCATION,
481
490
  s->recv_message_op->payload->recv_message.recv_message_ready,
482
491
  GRPC_ERROR_REF(error));
483
492
  complete_if_batch_end_locked(
@@ -501,9 +510,11 @@ static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
501
510
  if (s->recv_trailing_md_op) {
502
511
  INPROC_LOG(GPR_INFO, "fail_helper %p scheduling trailing-metadata-ready %p",
503
512
  s, error);
504
- GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->payload->recv_trailing_metadata
505
- .recv_trailing_metadata_ready,
506
- GRPC_ERROR_REF(error));
513
+ grpc_core::ExecCtx::Run(
514
+ DEBUG_LOCATION,
515
+ s->recv_trailing_md_op->payload->recv_trailing_metadata
516
+ .recv_trailing_metadata_ready,
517
+ GRPC_ERROR_REF(error));
507
518
  INPROC_LOG(GPR_INFO, "fail_helper %p scheduling trailing-md-on-complete %p",
508
519
  s, error);
509
520
  complete_if_batch_end_locked(
@@ -525,8 +536,7 @@ static void fail_helper_locked(inproc_stream* s, grpc_error* error) {
525
536
  // that the incoming byte stream's next() call will always return
526
537
  // synchronously. That assumption is true today but may not always be
527
538
  // true in the future.
528
- static void message_transfer_locked(inproc_stream* sender,
529
- inproc_stream* receiver) {
539
+ void message_transfer_locked(inproc_stream* sender, inproc_stream* receiver) {
530
540
  size_t remaining =
531
541
  sender->send_message_op->payload->send_message.send_message->length();
532
542
  if (receiver->recv_inited) {
@@ -558,7 +568,8 @@ static void message_transfer_locked(inproc_stream* sender,
558
568
  receiver->recv_stream.get());
559
569
  INPROC_LOG(GPR_INFO, "message_transfer_locked %p scheduling message-ready",
560
570
  receiver);
561
- GRPC_CLOSURE_SCHED(
571
+ grpc_core::ExecCtx::Run(
572
+ DEBUG_LOCATION,
562
573
  receiver->recv_message_op->payload->recv_message.recv_message_ready,
563
574
  GRPC_ERROR_NONE);
564
575
  complete_if_batch_end_locked(
@@ -572,23 +583,17 @@ static void message_transfer_locked(inproc_stream* sender,
572
583
  sender->send_message_op = nullptr;
573
584
  }
574
585
 
575
- static void op_state_machine(void* arg, grpc_error* error) {
586
+ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
576
587
  // This function gets called when we have contents in the unprocessed reads
577
588
  // Get what we want based on our ops wanted
578
589
  // Schedule our appropriate closures
579
590
  // and then return to ops_needed state if still needed
580
591
 
581
- // Since this is a closure directly invoked by the combiner, it should not
582
- // unref the error parameter explicitly; the combiner will do that implicitly
583
592
  grpc_error* new_err = GRPC_ERROR_NONE;
584
593
 
585
594
  bool needs_close = false;
586
595
 
587
- INPROC_LOG(GPR_INFO, "op_state_machine %p", arg);
588
- inproc_stream* s = static_cast<inproc_stream*>(arg);
589
- gpr_mu* mu = &s->t->mu->mu; // keep aside in case s gets closed
590
- gpr_mu_lock(mu);
591
- s->op_closure_scheduled = false;
596
+ INPROC_LOG(GPR_INFO, "op_state_machine %p", s);
592
597
  // cancellation takes precedence
593
598
  inproc_stream* other = s->other_side;
594
599
 
@@ -606,11 +611,9 @@ static void op_state_machine(void* arg, grpc_error* error) {
606
611
  if (s->send_message_op && other) {
607
612
  if (other->recv_message_op) {
608
613
  message_transfer_locked(s, other);
609
- maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE);
610
- } else if (!s->t->is_client &&
611
- (s->trailing_md_sent || other->recv_trailing_md_op)) {
612
- // A server send will never be matched if the client is waiting
613
- // for trailing metadata already
614
+ maybe_process_ops_locked(other, GRPC_ERROR_NONE);
615
+ } else if (!s->t->is_client && s->trailing_md_sent) {
616
+ // A server send will never be matched if the server already sent status
614
617
  s->send_message_op->payload->send_message.send_message.reset();
615
618
  complete_if_batch_end_locked(
616
619
  s, GRPC_ERROR_NONE, s->send_message_op,
@@ -621,11 +624,15 @@ static void op_state_machine(void* arg, grpc_error* error) {
621
624
  // Pause a send trailing metadata if there is still an outstanding
622
625
  // send message unless we know that the send message will never get
623
626
  // matched to a receive. This happens on the client if the server has
624
- // already sent status.
627
+ // already sent status or on the server if the client has requested
628
+ // status
625
629
  if (s->send_trailing_md_op &&
626
630
  (!s->send_message_op ||
627
631
  (s->t->is_client &&
628
- (s->trailing_md_recvd || s->to_read_trailing_md_filled)))) {
632
+ (s->trailing_md_recvd || s->to_read_trailing_md_filled)) ||
633
+ (!s->t->is_client && other &&
634
+ (other->trailing_md_recvd || other->to_read_trailing_md_filled ||
635
+ other->recv_trailing_md_op)))) {
629
636
  grpc_metadata_batch* dest = (other == nullptr)
630
637
  ? &s->write_buffer_trailing_md
631
638
  : &other->to_read_trailing_md;
@@ -648,19 +655,21 @@ static void op_state_machine(void* arg, grpc_error* error) {
648
655
  if (!s->t->is_client && s->trailing_md_recvd && s->recv_trailing_md_op) {
649
656
  INPROC_LOG(GPR_INFO,
650
657
  "op_state_machine %p scheduling trailing-metadata-ready", s);
651
- GRPC_CLOSURE_SCHED(
658
+ grpc_core::ExecCtx::Run(
659
+ DEBUG_LOCATION,
652
660
  s->recv_trailing_md_op->payload->recv_trailing_metadata
653
661
  .recv_trailing_metadata_ready,
654
662
  GRPC_ERROR_NONE);
655
663
  INPROC_LOG(GPR_INFO,
656
664
  "op_state_machine %p scheduling trailing-md-on-complete", s);
657
- GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->on_complete,
658
- GRPC_ERROR_NONE);
665
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION,
666
+ s->recv_trailing_md_op->on_complete,
667
+ GRPC_ERROR_NONE);
659
668
  s->recv_trailing_md_op = nullptr;
660
669
  needs_close = true;
661
670
  }
662
671
  }
663
- maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE);
672
+ maybe_process_ops_locked(other, GRPC_ERROR_NONE);
664
673
  complete_if_batch_end_locked(
665
674
  s, GRPC_ERROR_NONE, s->send_trailing_md_op,
666
675
  "op_state_machine scheduling send-trailing-metadata-on-complete");
@@ -700,9 +709,11 @@ static void op_state_machine(void* arg, grpc_error* error) {
700
709
  INPROC_LOG(GPR_INFO,
701
710
  "op_state_machine %p scheduling initial-metadata-ready %p", s,
702
711
  new_err);
703
- GRPC_CLOSURE_SCHED(s->recv_initial_md_op->payload->recv_initial_metadata
704
- .recv_initial_metadata_ready,
705
- GRPC_ERROR_REF(new_err));
712
+ grpc_core::ExecCtx::Run(
713
+ DEBUG_LOCATION,
714
+ s->recv_initial_md_op->payload->recv_initial_metadata
715
+ .recv_initial_metadata_ready,
716
+ GRPC_ERROR_REF(new_err));
706
717
  complete_if_batch_end_locked(
707
718
  s, new_err, s->recv_initial_md_op,
708
719
  "op_state_machine scheduling recv-initial-metadata-on-complete");
@@ -720,19 +731,9 @@ static void op_state_machine(void* arg, grpc_error* error) {
720
731
  if (s->recv_message_op) {
721
732
  if (other && other->send_message_op) {
722
733
  message_transfer_locked(other, s);
723
- maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE);
734
+ maybe_process_ops_locked(other, GRPC_ERROR_NONE);
724
735
  }
725
736
  }
726
- if (s->recv_trailing_md_op && s->t->is_client && other &&
727
- other->send_message_op) {
728
- INPROC_LOG(GPR_INFO,
729
- "op_state_machine %p scheduling trailing-metadata-ready %p", s,
730
- GRPC_ERROR_NONE);
731
- GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->payload->recv_trailing_metadata
732
- .recv_trailing_metadata_ready,
733
- GRPC_ERROR_NONE);
734
- maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE);
735
- }
736
737
  if (s->to_read_trailing_md_filled) {
737
738
  if (s->trailing_md_recvd) {
738
739
  new_err =
@@ -748,8 +749,10 @@ static void op_state_machine(void* arg, grpc_error* error) {
748
749
  if (s->recv_message_op != nullptr) {
749
750
  // This message needs to be wrapped up because it will never be
750
751
  // satisfied
752
+ *s->recv_message_op->payload->recv_message.recv_message = nullptr;
751
753
  INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling message-ready", s);
752
- GRPC_CLOSURE_SCHED(
754
+ grpc_core::ExecCtx::Run(
755
+ DEBUG_LOCATION,
753
756
  s->recv_message_op->payload->recv_message.recv_message_ready,
754
757
  GRPC_ERROR_NONE);
755
758
  complete_if_batch_end_locked(
@@ -761,6 +764,7 @@ static void op_state_machine(void* arg, grpc_error* error) {
761
764
  // Nothing further will try to receive from this stream, so finish off
762
765
  // any outstanding send_message op
763
766
  s->send_message_op->payload->send_message.send_message.reset();
767
+ s->send_message_op->payload->send_message.stream_write_closed = true;
764
768
  complete_if_batch_end_locked(
765
769
  s, new_err, s->send_message_op,
766
770
  "op_state_machine scheduling send-message-on-complete");
@@ -786,14 +790,16 @@ static void op_state_machine(void* arg, grpc_error* error) {
786
790
  INPROC_LOG(GPR_INFO,
787
791
  "op_state_machine %p scheduling trailing-md-on-complete %p",
788
792
  s, new_err);
789
- GRPC_CLOSURE_SCHED(
793
+ grpc_core::ExecCtx::Run(
794
+ DEBUG_LOCATION,
790
795
  s->recv_trailing_md_op->payload->recv_trailing_metadata
791
796
  .recv_trailing_metadata_ready,
792
797
  GRPC_ERROR_REF(new_err));
793
- GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->on_complete,
794
- GRPC_ERROR_REF(new_err));
798
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION,
799
+ s->recv_trailing_md_op->on_complete,
800
+ GRPC_ERROR_REF(new_err));
795
801
  s->recv_trailing_md_op = nullptr;
796
- needs_close = true;
802
+ needs_close = s->trailing_md_sent;
797
803
  } else {
798
804
  INPROC_LOG(GPR_INFO,
799
805
  "op_state_machine %p server needs to delay handling "
@@ -806,11 +812,31 @@ static void op_state_machine(void* arg, grpc_error* error) {
806
812
  "op_state_machine %p has trailing md but not yet waiting for it", s);
807
813
  }
808
814
  }
815
+ if (!s->t->is_client && s->trailing_md_sent &&
816
+ (s->recv_trailing_md_op != nullptr)) {
817
+ // In this case, we don't care to receive the write-close from the client
818
+ // because we have already sent status and the RPC is over as far as we
819
+ // are concerned.
820
+ INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling trailing-md-ready %p",
821
+ s, new_err);
822
+ grpc_core::ExecCtx::Run(
823
+ DEBUG_LOCATION,
824
+ s->recv_trailing_md_op->payload->recv_trailing_metadata
825
+ .recv_trailing_metadata_ready,
826
+ GRPC_ERROR_REF(new_err));
827
+ complete_if_batch_end_locked(
828
+ s, new_err, s->recv_trailing_md_op,
829
+ "op_state_machine scheduling recv-trailing-md-on-complete");
830
+ s->trailing_md_recvd = true;
831
+ s->recv_trailing_md_op = nullptr;
832
+ }
809
833
  if (s->trailing_md_recvd && s->recv_message_op) {
810
834
  // No further message will come on this stream, so finish off the
811
835
  // recv_message_op
812
836
  INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling message-ready", s);
813
- GRPC_CLOSURE_SCHED(
837
+ *s->recv_message_op->payload->recv_message.recv_message = nullptr;
838
+ grpc_core::ExecCtx::Run(
839
+ DEBUG_LOCATION,
814
840
  s->recv_message_op->payload->recv_message.recv_message_ready,
815
841
  GRPC_ERROR_NONE);
816
842
  complete_if_batch_end_locked(
@@ -843,17 +869,18 @@ done:
843
869
  close_other_side_locked(s, "op_state_machine");
844
870
  close_stream_locked(s);
845
871
  }
846
- gpr_mu_unlock(mu);
847
872
  GRPC_ERROR_UNREF(new_err);
848
873
  }
849
874
 
850
- static bool cancel_stream_locked(inproc_stream* s, grpc_error* error) {
875
+ bool cancel_stream_locked(inproc_stream* s, grpc_error* error) {
851
876
  bool ret = false; // was the cancel accepted
852
877
  INPROC_LOG(GPR_INFO, "cancel_stream %p with %s", s, grpc_error_string(error));
853
878
  if (s->cancel_self_error == GRPC_ERROR_NONE) {
854
879
  ret = true;
855
880
  s->cancel_self_error = GRPC_ERROR_REF(error);
856
- maybe_schedule_op_closure_locked(s, s->cancel_self_error);
881
+ // Catch current value of other before it gets closed off
882
+ inproc_stream* other = s->other_side;
883
+ maybe_process_ops_locked(s, s->cancel_self_error);
857
884
  // Send trailing md to the other side indicating cancellation, even if we
858
885
  // already have
859
886
  s->trailing_md_sent = true;
@@ -861,7 +888,6 @@ static bool cancel_stream_locked(inproc_stream* s, grpc_error* error) {
861
888
  grpc_metadata_batch cancel_md;
862
889
  grpc_metadata_batch_init(&cancel_md);
863
890
 
864
- inproc_stream* other = s->other_side;
865
891
  grpc_metadata_batch* dest = (other == nullptr)
866
892
  ? &s->write_buffer_trailing_md
867
893
  : &other->to_read_trailing_md;
@@ -874,7 +900,7 @@ static bool cancel_stream_locked(inproc_stream* s, grpc_error* error) {
874
900
  if (other->cancel_other_error == GRPC_ERROR_NONE) {
875
901
  other->cancel_other_error = GRPC_ERROR_REF(s->cancel_self_error);
876
902
  }
877
- maybe_schedule_op_closure_locked(other, other->cancel_other_error);
903
+ maybe_process_ops_locked(other, other->cancel_other_error);
878
904
  } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) {
879
905
  s->write_buffer_cancel_error = GRPC_ERROR_REF(s->cancel_self_error);
880
906
  }
@@ -883,9 +909,11 @@ static bool cancel_stream_locked(inproc_stream* s, grpc_error* error) {
883
909
  // couldn't complete that because we hadn't yet sent out trailing
884
910
  // md, now's the chance
885
911
  if (!s->t->is_client && s->trailing_md_recvd && s->recv_trailing_md_op) {
886
- GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->payload->recv_trailing_metadata
887
- .recv_trailing_metadata_ready,
888
- GRPC_ERROR_REF(s->cancel_self_error));
912
+ grpc_core::ExecCtx::Run(
913
+ DEBUG_LOCATION,
914
+ s->recv_trailing_md_op->payload->recv_trailing_metadata
915
+ .recv_trailing_metadata_ready,
916
+ GRPC_ERROR_REF(s->cancel_self_error));
889
917
  complete_if_batch_end_locked(
890
918
  s, s->cancel_self_error, s->recv_trailing_md_op,
891
919
  "cancel_stream scheduling trailing-md-on-complete");
@@ -900,16 +928,16 @@ static bool cancel_stream_locked(inproc_stream* s, grpc_error* error) {
900
928
  return ret;
901
929
  }
902
930
 
903
- static void do_nothing(void* arg, grpc_error* error) {}
931
+ void do_nothing(void* /*arg*/, grpc_error* /*error*/) {}
904
932
 
905
- static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
906
- grpc_transport_stream_op_batch* op) {
933
+ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
934
+ grpc_transport_stream_op_batch* op) {
907
935
  INPROC_LOG(GPR_INFO, "perform_stream_op %p %p %p", gt, gs, op);
908
936
  inproc_stream* s = reinterpret_cast<inproc_stream*>(gs);
909
937
  gpr_mu* mu = &s->t->mu->mu; // save aside in case s gets closed
910
938
  gpr_mu_lock(mu);
911
939
 
912
- if (grpc_inproc_trace.enabled()) {
940
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) {
913
941
  if (op->send_initial_metadata) {
914
942
  log_metadata(op->payload->send_initial_metadata.send_initial_metadata,
915
943
  s->t->is_client, true);
@@ -950,8 +978,6 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
950
978
  op->recv_trailing_metadata ? " recv_trailing_metadata" : "");
951
979
  }
952
980
 
953
- bool needs_close = false;
954
-
955
981
  inproc_stream* other = s->other_side;
956
982
  if (error == GRPC_ERROR_NONE &&
957
983
  (op->send_initial_metadata || op->send_trailing_metadata)) {
@@ -972,7 +998,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
972
998
  INPROC_LOG(GPR_INFO, "Extra initial metadata %p", s);
973
999
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Extra initial metadata");
974
1000
  } else {
975
- if (!other || !other->closed) {
1001
+ if (!s->other_side_closed) {
976
1002
  fill_in_metadata(
977
1003
  s, op->payload->send_initial_metadata.send_initial_metadata,
978
1004
  op->payload->send_initial_metadata.send_initial_metadata_flags,
@@ -986,7 +1012,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
986
1012
  s->initial_md_sent = true;
987
1013
  }
988
1014
  }
989
- maybe_schedule_op_closure_locked(other, error);
1015
+ maybe_process_ops_locked(other, error);
990
1016
  }
991
1017
  }
992
1018
 
@@ -994,7 +1020,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
994
1020
  (op->send_message || op->send_trailing_metadata ||
995
1021
  op->recv_initial_metadata || op->recv_message ||
996
1022
  op->recv_trailing_metadata)) {
997
- // Mark ops that need to be processed by the closure
1023
+ // Mark ops that need to be processed by the state machine
998
1024
  if (op->send_message) {
999
1025
  s->send_message_op = op;
1000
1026
  }
@@ -1011,29 +1037,31 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1011
1037
  s->recv_trailing_md_op = op;
1012
1038
  }
1013
1039
 
1014
- // We want to initiate the closure if:
1015
- // 1. We want to send a message and the other side wants to receive or end
1040
+ // We want to initiate the state machine if:
1041
+ // 1. We want to send a message and the other side wants to receive
1016
1042
  // 2. We want to send trailing metadata and there isn't an unmatched send
1043
+ // or the other side wants trailing metadata
1017
1044
  // 3. We want initial metadata and the other side has sent it
1018
1045
  // 4. We want to receive a message and there is a message ready
1019
1046
  // 5. There is trailing metadata, even if nothing specifically wants
1020
1047
  // that because that can shut down the receive message as well
1021
- if ((op->send_message && other &&
1022
- ((other->recv_message_op != nullptr) ||
1023
- (other->recv_trailing_md_op != nullptr))) ||
1024
- (op->send_trailing_metadata && !op->send_message) ||
1048
+ if ((op->send_message && other && other->recv_message_op != nullptr) ||
1049
+ (op->send_trailing_metadata &&
1050
+ (!s->send_message_op || (other && other->recv_trailing_md_op))) ||
1025
1051
  (op->recv_initial_metadata && s->to_read_initial_md_filled) ||
1026
- (op->recv_message && other && (other->send_message_op != nullptr)) ||
1052
+ (op->recv_message && other && other->send_message_op != nullptr) ||
1027
1053
  (s->to_read_trailing_md_filled || s->trailing_md_recvd)) {
1028
- if (!s->op_closure_scheduled) {
1029
- GRPC_CLOSURE_SCHED(&s->op_closure, GRPC_ERROR_NONE);
1030
- s->op_closure_scheduled = true;
1031
- }
1054
+ op_state_machine_locked(s, error);
1032
1055
  } else {
1033
1056
  s->ops_needed = true;
1034
1057
  }
1035
1058
  } else {
1036
1059
  if (error != GRPC_ERROR_NONE) {
1060
+ // Consume any send message that was sent here but that we are not pushing
1061
+ // to the other side
1062
+ if (op->send_message) {
1063
+ op->payload->send_message.send_message.reset();
1064
+ }
1037
1065
  // Schedule op's closures that we didn't push to op state machine
1038
1066
  if (op->recv_initial_metadata) {
1039
1067
  if (op->payload->recv_initial_metadata.trailing_metadata_available !=
@@ -1049,7 +1077,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1049
1077
  GPR_INFO,
1050
1078
  "perform_stream_op error %p scheduling initial-metadata-ready %p",
1051
1079
  s, error);
1052
- GRPC_CLOSURE_SCHED(
1080
+ grpc_core::ExecCtx::Run(
1081
+ DEBUG_LOCATION,
1053
1082
  op->payload->recv_initial_metadata.recv_initial_metadata_ready,
1054
1083
  GRPC_ERROR_REF(error));
1055
1084
  }
@@ -1058,37 +1087,32 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1058
1087
  GPR_INFO,
1059
1088
  "perform_stream_op error %p scheduling recv message-ready %p", s,
1060
1089
  error);
1061
- GRPC_CLOSURE_SCHED(op->payload->recv_message.recv_message_ready,
1062
- GRPC_ERROR_REF(error));
1090
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION,
1091
+ op->payload->recv_message.recv_message_ready,
1092
+ GRPC_ERROR_REF(error));
1063
1093
  }
1064
1094
  if (op->recv_trailing_metadata) {
1065
1095
  INPROC_LOG(
1066
1096
  GPR_INFO,
1067
1097
  "perform_stream_op error %p scheduling trailing-metadata-ready %p",
1068
1098
  s, error);
1069
- GRPC_CLOSURE_SCHED(
1099
+ grpc_core::ExecCtx::Run(
1100
+ DEBUG_LOCATION,
1070
1101
  op->payload->recv_trailing_metadata.recv_trailing_metadata_ready,
1071
1102
  GRPC_ERROR_REF(error));
1072
1103
  }
1073
1104
  }
1074
1105
  INPROC_LOG(GPR_INFO, "perform_stream_op %p scheduling on_complete %p", s,
1075
1106
  error);
1076
- GRPC_CLOSURE_SCHED(on_complete, GRPC_ERROR_REF(error));
1077
- }
1078
- if (needs_close) {
1079
- close_other_side_locked(s, "perform_stream_op:other_side");
1080
- close_stream_locked(s);
1107
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_complete, GRPC_ERROR_REF(error));
1081
1108
  }
1082
1109
  gpr_mu_unlock(mu);
1083
1110
  GRPC_ERROR_UNREF(error);
1084
1111
  }
1085
1112
 
1086
- static void close_transport_locked(inproc_transport* t) {
1113
+ void close_transport_locked(inproc_transport* t) {
1087
1114
  INPROC_LOG(GPR_INFO, "close_transport %p %d", t, t->is_closed);
1088
- grpc_connectivity_state_set(
1089
- &t->connectivity, GRPC_CHANNEL_SHUTDOWN,
1090
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Closing transport."),
1091
- "close transport");
1115
+ t->state_tracker.SetState(GRPC_CHANNEL_SHUTDOWN, "close transport");
1092
1116
  if (!t->is_closed) {
1093
1117
  t->is_closed = true;
1094
1118
  /* Also end all streams on this transport */
@@ -1103,21 +1127,23 @@ static void close_transport_locked(inproc_transport* t) {
1103
1127
  }
1104
1128
  }
1105
1129
 
1106
- static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1130
+ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1107
1131
  inproc_transport* t = reinterpret_cast<inproc_transport*>(gt);
1108
1132
  INPROC_LOG(GPR_INFO, "perform_transport_op %p %p", t, op);
1109
1133
  gpr_mu_lock(&t->mu->mu);
1110
- if (op->on_connectivity_state_change) {
1111
- grpc_connectivity_state_notify_on_state_change(
1112
- &t->connectivity, op->connectivity_state,
1113
- op->on_connectivity_state_change);
1134
+ if (op->start_connectivity_watch != nullptr) {
1135
+ t->state_tracker.AddWatcher(op->start_connectivity_watch_state,
1136
+ std::move(op->start_connectivity_watch));
1137
+ }
1138
+ if (op->stop_connectivity_watch != nullptr) {
1139
+ t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
1114
1140
  }
1115
1141
  if (op->set_accept_stream) {
1116
1142
  t->accept_stream_cb = op->set_accept_stream_fn;
1117
1143
  t->accept_stream_data = op->set_accept_stream_user_data;
1118
1144
  }
1119
1145
  if (op->on_consumed) {
1120
- GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE);
1146
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
1121
1147
  }
1122
1148
 
1123
1149
  bool do_close = false;
@@ -1136,46 +1162,72 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1136
1162
  gpr_mu_unlock(&t->mu->mu);
1137
1163
  }
1138
1164
 
1139
- static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
1140
- grpc_closure* then_schedule_closure) {
1165
+ void destroy_stream(grpc_transport* /*gt*/, grpc_stream* gs,
1166
+ grpc_closure* then_schedule_closure) {
1141
1167
  INPROC_LOG(GPR_INFO, "destroy_stream %p %p", gs, then_schedule_closure);
1142
1168
  inproc_stream* s = reinterpret_cast<inproc_stream*>(gs);
1143
1169
  s->closure_at_destroy = then_schedule_closure;
1144
- really_destroy_stream(s);
1170
+ s->~inproc_stream();
1145
1171
  }
1146
1172
 
1147
- static void destroy_transport(grpc_transport* gt) {
1173
+ void destroy_transport(grpc_transport* gt) {
1148
1174
  inproc_transport* t = reinterpret_cast<inproc_transport*>(gt);
1149
1175
  INPROC_LOG(GPR_INFO, "destroy_transport %p", t);
1150
1176
  gpr_mu_lock(&t->mu->mu);
1151
1177
  close_transport_locked(t);
1152
1178
  gpr_mu_unlock(&t->mu->mu);
1153
- unref_transport(t->other_side);
1154
- unref_transport(t);
1179
+ t->other_side->unref();
1180
+ t->unref();
1155
1181
  }
1156
1182
 
1157
1183
  /*******************************************************************************
1158
1184
  * INTEGRATION GLUE
1159
1185
  */
1160
1186
 
1161
- static void set_pollset(grpc_transport* gt, grpc_stream* gs,
1162
- grpc_pollset* pollset) {
1187
+ void set_pollset(grpc_transport* /*gt*/, grpc_stream* /*gs*/,
1188
+ grpc_pollset* /*pollset*/) {
1163
1189
  // Nothing to do here
1164
1190
  }
1165
1191
 
1166
- static void set_pollset_set(grpc_transport* gt, grpc_stream* gs,
1167
- grpc_pollset_set* pollset_set) {
1192
+ void set_pollset_set(grpc_transport* /*gt*/, grpc_stream* /*gs*/,
1193
+ grpc_pollset_set* /*pollset_set*/) {
1168
1194
  // Nothing to do here
1169
1195
  }
1170
1196
 
1171
- static grpc_endpoint* get_endpoint(grpc_transport* t) { return nullptr; }
1197
+ grpc_endpoint* get_endpoint(grpc_transport* /*t*/) { return nullptr; }
1198
+
1199
+ const grpc_transport_vtable inproc_vtable = {
1200
+ sizeof(inproc_stream), "inproc", init_stream,
1201
+ set_pollset, set_pollset_set, perform_stream_op,
1202
+ perform_transport_op, destroy_stream, destroy_transport,
1203
+ get_endpoint};
1204
+
1205
+ /*******************************************************************************
1206
+ * Main inproc transport functions
1207
+ */
1208
+ void inproc_transports_create(grpc_transport** server_transport,
1209
+ const grpc_channel_args* /*server_args*/,
1210
+ grpc_transport** client_transport,
1211
+ const grpc_channel_args* /*client_args*/) {
1212
+ INPROC_LOG(GPR_INFO, "inproc_transports_create");
1213
+ shared_mu* mu = new (gpr_malloc(sizeof(*mu))) shared_mu();
1214
+ inproc_transport* st = new (gpr_malloc(sizeof(*st)))
1215
+ inproc_transport(&inproc_vtable, mu, /*is_client=*/false);
1216
+ inproc_transport* ct = new (gpr_malloc(sizeof(*ct)))
1217
+ inproc_transport(&inproc_vtable, mu, /*is_client=*/true);
1218
+ st->other_side = ct;
1219
+ ct->other_side = st;
1220
+ *server_transport = reinterpret_cast<grpc_transport*>(st);
1221
+ *client_transport = reinterpret_cast<grpc_transport*>(ct);
1222
+ }
1223
+ } // namespace
1172
1224
 
1173
1225
  /*******************************************************************************
1174
1226
  * GLOBAL INIT AND DESTROY
1175
1227
  */
1176
1228
  void grpc_inproc_transport_init(void) {
1177
1229
  grpc_core::ExecCtx exec_ctx;
1178
- g_empty_slice = grpc_slice_from_static_buffer(nullptr, 0);
1230
+ g_empty_slice = grpc_core::ExternallyManagedSlice();
1179
1231
 
1180
1232
  grpc_slice key_tmp = grpc_slice_from_static_string(":path");
1181
1233
  g_fake_path_key = grpc_slice_intern(key_tmp);
@@ -1190,60 +1242,23 @@ void grpc_inproc_transport_init(void) {
1190
1242
  g_fake_auth_value = grpc_slice_from_static_string("inproc-fail");
1191
1243
  }
1192
1244
 
1193
- static const grpc_transport_vtable inproc_vtable = {
1194
- sizeof(inproc_stream), "inproc", init_stream,
1195
- set_pollset, set_pollset_set, perform_stream_op,
1196
- perform_transport_op, destroy_stream, destroy_transport,
1197
- get_endpoint};
1198
-
1199
- /*******************************************************************************
1200
- * Main inproc transport functions
1201
- */
1202
- static void inproc_transports_create(grpc_transport** server_transport,
1203
- const grpc_channel_args* server_args,
1204
- grpc_transport** client_transport,
1205
- const grpc_channel_args* client_args) {
1206
- INPROC_LOG(GPR_INFO, "inproc_transports_create");
1207
- inproc_transport* st =
1208
- static_cast<inproc_transport*>(gpr_zalloc(sizeof(*st)));
1209
- inproc_transport* ct =
1210
- static_cast<inproc_transport*>(gpr_zalloc(sizeof(*ct)));
1211
- // Share one lock between both sides since both sides get affected
1212
- st->mu = ct->mu = static_cast<shared_mu*>(gpr_malloc(sizeof(*st->mu)));
1213
- gpr_mu_init(&st->mu->mu);
1214
- gpr_ref_init(&st->mu->refs, 2);
1215
- st->base.vtable = &inproc_vtable;
1216
- ct->base.vtable = &inproc_vtable;
1217
- // Start each side of transport with 2 refs since they each have a ref
1218
- // to the other
1219
- gpr_ref_init(&st->refs, 2);
1220
- gpr_ref_init(&ct->refs, 2);
1221
- st->is_client = false;
1222
- ct->is_client = true;
1223
- grpc_connectivity_state_init(&st->connectivity, GRPC_CHANNEL_READY,
1224
- "inproc_server");
1225
- grpc_connectivity_state_init(&ct->connectivity, GRPC_CHANNEL_READY,
1226
- "inproc_client");
1227
- st->other_side = ct;
1228
- ct->other_side = st;
1229
- st->stream_list = nullptr;
1230
- ct->stream_list = nullptr;
1231
- *server_transport = reinterpret_cast<grpc_transport*>(st);
1232
- *client_transport = reinterpret_cast<grpc_transport*>(ct);
1233
- }
1234
-
1235
1245
  grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1236
1246
  grpc_channel_args* args,
1237
- void* reserved) {
1247
+ void* /*reserved*/) {
1238
1248
  GRPC_API_TRACE("grpc_inproc_channel_create(server=%p, args=%p)", 2,
1239
1249
  (server, args));
1240
1250
 
1241
1251
  grpc_core::ExecCtx exec_ctx;
1242
1252
 
1243
- const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
1253
+ // Remove max_connection_idle and max_connection_age channel arguments since
1254
+ // those do not apply to inproc transports.
1255
+ const char* args_to_remove[] = {GRPC_ARG_MAX_CONNECTION_IDLE_MS,
1256
+ GRPC_ARG_MAX_CONNECTION_AGE_MS};
1257
+ const grpc_channel_args* server_args = grpc_channel_args_copy_and_remove(
1258
+ grpc_server_get_channel_args(server), args_to_remove,
1259
+ GPR_ARRAY_SIZE(args_to_remove));
1244
1260
 
1245
1261
  // Add a default authority channel argument for the client
1246
-
1247
1262
  grpc_arg default_authority_arg;
1248
1263
  default_authority_arg.type = GRPC_ARG_STRING;
1249
1264
  default_authority_arg.key = (char*)GRPC_ARG_DEFAULT_AUTHORITY;
@@ -1256,11 +1271,14 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1256
1271
  inproc_transports_create(&server_transport, server_args, &client_transport,
1257
1272
  client_args);
1258
1273
 
1259
- grpc_server_setup_transport(server, server_transport, nullptr, server_args);
1274
+ // TODO(ncteisen): design and support channelz GetSocket for inproc.
1275
+ grpc_server_setup_transport(server, server_transport, nullptr, server_args,
1276
+ nullptr);
1260
1277
  grpc_channel* channel = grpc_channel_create(
1261
1278
  "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
1262
1279
 
1263
1280
  // Free up created channel args
1281
+ grpc_channel_args_destroy(server_args);
1264
1282
  grpc_channel_args_destroy(client_args);
1265
1283
 
1266
1284
  // Now finish scheduled operations