grpc 1.24.0 → 1.25.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 (505) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +306 -243
  3. data/etc/roots.pem +0 -100
  4. data/include/grpc/grpc_security.h +44 -18
  5. data/include/grpc/impl/codegen/grpc_types.h +15 -0
  6. data/include/grpc/impl/codegen/port_platform.h +27 -11
  7. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  8. data/src/boringssl/err_data.c +695 -650
  9. data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
  10. data/src/core/ext/filters/client_channel/client_channel.h +24 -0
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
  12. data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
  13. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
  14. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
  17. data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
  21. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
  26. data/src/core/ext/filters/client_channel/resolver.cc +1 -2
  27. data/src/core/ext/filters/client_channel/resolver.h +8 -16
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
  41. data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
  42. data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
  47. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  48. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
  49. data/src/core/ext/filters/client_channel/service_config.h +8 -8
  50. data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
  51. data/src/core/ext/filters/client_channel/subchannel.h +7 -9
  52. data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
  53. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
  54. data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
  55. data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
  56. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
  57. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
  58. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
  59. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  60. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
  61. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
  62. data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
  63. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
  64. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
  67. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  68. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
  71. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
  73. data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
  74. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
  77. data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
  78. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
  79. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
  80. data/src/core/lib/channel/channel_args.cc +16 -0
  81. data/src/core/lib/channel/channel_args.h +22 -0
  82. data/src/core/lib/channel/channelz.cc +5 -6
  83. data/src/core/lib/channel/channelz.h +1 -1
  84. data/src/core/lib/channel/connected_channel.cc +20 -20
  85. data/src/core/lib/channel/handshaker.h +3 -4
  86. data/src/core/lib/channel/handshaker_factory.h +1 -3
  87. data/src/core/lib/debug/trace.h +3 -2
  88. data/src/core/lib/gprpp/arena.cc +3 -3
  89. data/src/core/lib/gprpp/arena.h +2 -3
  90. data/src/core/lib/gprpp/inlined_vector.h +9 -0
  91. data/src/core/lib/gprpp/map.h +3 -501
  92. data/src/core/lib/gprpp/memory.h +45 -41
  93. data/src/core/lib/gprpp/mpscq.cc +108 -0
  94. data/src/core/lib/gprpp/mpscq.h +98 -0
  95. data/src/core/lib/gprpp/orphanable.h +6 -11
  96. data/src/core/lib/gprpp/ref_counted.h +25 -19
  97. data/src/core/lib/gprpp/set.h +33 -0
  98. data/src/core/lib/gprpp/thd.h +2 -4
  99. data/src/core/lib/http/httpcli.cc +1 -1
  100. data/src/core/lib/http/httpcli_security_connector.cc +15 -11
  101. data/src/core/lib/http/parser.cc +1 -1
  102. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  103. data/src/core/lib/iomgr/buffer_list.h +5 -6
  104. data/src/core/lib/iomgr/call_combiner.cc +4 -5
  105. data/src/core/lib/iomgr/call_combiner.h +2 -2
  106. data/src/core/lib/iomgr/cfstream_handle.h +3 -5
  107. data/src/core/lib/iomgr/closure.h +8 -3
  108. data/src/core/lib/iomgr/combiner.cc +45 -82
  109. data/src/core/lib/iomgr/combiner.h +32 -8
  110. data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
  111. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
  112. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
  113. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  114. data/src/core/lib/iomgr/executor.cc +4 -2
  115. data/src/core/lib/iomgr/executor.h +3 -0
  116. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  117. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  118. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  119. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  120. data/src/core/lib/iomgr/resource_quota.h +13 -9
  121. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  122. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  123. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  124. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  125. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  126. data/src/core/lib/iomgr/tcp_server.h +1 -4
  127. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  128. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  129. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  130. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  131. data/src/core/lib/iomgr/udp_server.cc +3 -2
  132. data/src/core/lib/iomgr/udp_server.h +6 -12
  133. data/src/core/lib/json/json.h +1 -1
  134. data/src/core/lib/json/json_string.cc +2 -2
  135. data/src/core/lib/profiling/basic_timers.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  137. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  138. data/src/core/lib/security/credentials/credentials.h +4 -20
  139. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  140. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  141. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  142. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  143. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  144. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  145. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  146. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  147. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  148. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  149. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  150. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  152. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  153. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  154. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  155. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  156. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  157. data/src/core/lib/slice/slice.cc +2 -10
  158. data/src/core/lib/slice/slice_hash_table.h +4 -6
  159. data/src/core/lib/slice/slice_intern.cc +42 -39
  160. data/src/core/lib/slice/slice_internal.h +3 -3
  161. data/src/core/lib/slice/slice_utils.h +21 -4
  162. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  163. data/src/core/lib/surface/call.cc +3 -3
  164. data/src/core/lib/surface/channel.cc +7 -0
  165. data/src/core/lib/surface/completion_queue.cc +12 -11
  166. data/src/core/lib/surface/completion_queue.h +4 -2
  167. data/src/core/lib/surface/init.cc +1 -0
  168. data/src/core/lib/surface/lame_client.cc +33 -18
  169. data/src/core/lib/surface/server.cc +77 -76
  170. data/src/core/lib/surface/version.cc +1 -1
  171. data/src/core/lib/transport/byte_stream.h +3 -7
  172. data/src/core/lib/transport/connectivity_state.cc +112 -98
  173. data/src/core/lib/transport/connectivity_state.h +100 -50
  174. data/src/core/lib/transport/static_metadata.cc +276 -288
  175. data/src/core/lib/transport/static_metadata.h +73 -76
  176. data/src/core/lib/transport/status_conversion.cc +1 -1
  177. data/src/core/lib/transport/status_metadata.cc +1 -1
  178. data/src/core/lib/transport/transport.cc +2 -2
  179. data/src/core/lib/transport/transport.h +12 -4
  180. data/src/core/lib/transport/transport_op_string.cc +14 -11
  181. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  183. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  184. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  185. data/src/core/tsi/fake_transport_security.cc +7 -5
  186. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  187. data/src/core/tsi/local_transport_security.cc +8 -6
  188. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  189. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  191. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  192. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  193. data/src/core/tsi/ssl_transport_security.cc +12 -12
  194. data/src/core/tsi/ssl_transport_security.h +2 -2
  195. data/src/core/tsi/transport_security_grpc.cc +7 -0
  196. data/src/core/tsi/transport_security_grpc.h +6 -0
  197. data/src/ruby/ext/grpc/extconf.rb +1 -0
  198. data/src/ruby/ext/grpc/rb_call.c +1 -1
  199. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  200. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  201. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  202. data/src/ruby/lib/grpc/version.rb +1 -1
  203. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  204. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  205. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  206. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  207. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  208. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  209. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  210. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  211. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  212. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  213. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  214. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  215. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  216. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  217. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  218. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  219. data/third_party/boringssl/crypto/bio/file.c +5 -2
  220. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  221. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  222. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  223. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  224. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  225. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  226. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  227. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  228. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  229. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  230. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  233. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  234. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  235. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  236. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  237. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  238. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  239. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  240. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  241. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  242. data/third_party/boringssl/crypto/crypto.c +39 -22
  243. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  244. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  245. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  246. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  247. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  248. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  249. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  250. data/third_party/boringssl/crypto/err/err.c +2 -0
  251. data/third_party/boringssl/crypto/err/internal.h +2 -2
  252. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  253. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  254. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  255. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  256. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  257. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  258. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  259. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  260. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  261. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  262. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  264. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  265. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  266. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  267. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  268. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  269. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  270. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  271. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  273. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  275. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  276. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  278. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  279. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  281. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  282. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  283. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  284. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  286. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  287. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  291. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  292. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  293. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  294. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  297. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  298. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  299. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  300. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  304. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  307. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  308. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  309. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  310. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  311. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  312. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  313. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  314. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  315. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  316. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  318. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  319. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  320. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  321. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  322. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  324. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  325. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  326. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  329. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  330. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  331. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  334. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  335. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  336. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  337. data/third_party/boringssl/crypto/internal.h +95 -20
  338. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  339. data/third_party/boringssl/crypto/mem.c +39 -2
  340. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  341. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  342. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  343. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  344. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  345. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  347. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  348. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  349. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  351. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  352. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  353. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  354. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  355. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  356. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  357. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  358. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  359. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  360. data/third_party/boringssl/crypto/thread_none.c +2 -2
  361. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  362. data/third_party/boringssl/crypto/thread_win.c +38 -19
  363. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  364. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  365. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  366. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  367. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  368. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  369. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  370. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  372. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  373. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  374. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  375. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  376. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  377. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  378. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  379. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  380. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  381. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  382. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  383. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  384. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  387. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  389. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  390. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  391. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  392. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  393. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  395. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  396. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  397. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  398. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  399. data/third_party/boringssl/include/openssl/aead.h +45 -19
  400. data/third_party/boringssl/include/openssl/aes.h +32 -7
  401. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  402. data/third_party/boringssl/include/openssl/base.h +120 -6
  403. data/third_party/boringssl/include/openssl/base64.h +4 -1
  404. data/third_party/boringssl/include/openssl/bio.h +112 -81
  405. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  406. data/third_party/boringssl/include/openssl/bn.h +55 -29
  407. data/third_party/boringssl/include/openssl/buf.h +2 -2
  408. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  409. data/third_party/boringssl/include/openssl/cast.h +2 -2
  410. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  411. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  412. data/third_party/boringssl/include/openssl/conf.h +3 -6
  413. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  414. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  415. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  416. data/third_party/boringssl/include/openssl/dh.h +3 -2
  417. data/third_party/boringssl/include/openssl/digest.h +21 -7
  418. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  419. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  420. data/third_party/boringssl/include/openssl/ec.h +25 -21
  421. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  422. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  423. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  424. data/third_party/boringssl/include/openssl/engine.h +4 -4
  425. data/third_party/boringssl/include/openssl/err.h +3 -0
  426. data/third_party/boringssl/include/openssl/evp.h +199 -42
  427. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  428. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  429. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  430. data/third_party/boringssl/include/openssl/md4.h +6 -4
  431. data/third_party/boringssl/include/openssl/md5.h +6 -4
  432. data/third_party/boringssl/include/openssl/mem.h +6 -2
  433. data/third_party/boringssl/include/openssl/nid.h +3 -0
  434. data/third_party/boringssl/include/openssl/obj.h +3 -0
  435. data/third_party/boringssl/include/openssl/pem.h +102 -64
  436. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  437. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  438. data/third_party/boringssl/include/openssl/pool.h +13 -2
  439. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  440. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  441. data/third_party/boringssl/include/openssl/sha.h +40 -28
  442. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  443. data/third_party/boringssl/include/openssl/span.h +17 -9
  444. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  445. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  446. data/third_party/boringssl/include/openssl/stack.h +134 -77
  447. data/third_party/boringssl/include/openssl/thread.h +1 -1
  448. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  449. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  450. data/third_party/boringssl/include/openssl/x509.h +28 -3
  451. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  452. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  453. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  454. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  455. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  456. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  457. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  458. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  459. data/third_party/boringssl/ssl/handoff.cc +295 -91
  460. data/third_party/boringssl/ssl/handshake.cc +133 -72
  461. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  462. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  463. data/third_party/boringssl/ssl/internal.h +1413 -928
  464. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  465. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  466. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  467. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  468. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  469. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  470. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  471. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  472. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  473. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  474. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  475. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  476. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  477. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  478. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  479. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  480. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  481. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  482. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  483. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  484. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  485. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  486. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  487. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  488. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  489. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  490. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  491. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  492. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  493. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  494. data/third_party/upb/upb/port_def.inc +1 -1
  495. data/third_party/upb/upb/table.c +2 -1
  496. metadata +72 -44
  497. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  498. data/src/core/lib/gpr/mpscq.cc +0 -117
  499. data/src/core/lib/gpr/mpscq.h +0 -88
  500. data/src/core/lib/gprpp/abstract.h +0 -47
  501. data/src/core/lib/gprpp/pair.h +0 -38
  502. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  503. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  504. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  505. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -38,14 +38,10 @@
38
38
 
39
39
  extern grpc_core::TraceFlag grpc_http_trace;
40
40
 
41
- typedef struct {
42
- uint32_t filter_elems_sum;
41
+ struct grpc_chttp2_hpack_compressor {
43
42
  uint32_t max_table_size;
44
43
  uint32_t max_table_elems;
45
44
  uint32_t cap_table_elems;
46
- /** if non-zero, advertise to the decoder that we'll start using a table
47
- of this size */
48
- uint8_t advertise_table_size_change;
49
45
  /** maximum number of bytes we'll use for the decode table (to guard against
50
46
  peers ooming us by setting decode table size high) */
51
47
  uint32_t max_usable_size;
@@ -53,23 +49,39 @@ typedef struct {
53
49
  uint32_t tail_remote_index;
54
50
  uint32_t table_size;
55
51
  uint32_t table_elems;
52
+ uint16_t* table_elem_size;
53
+ /** if non-zero, advertise to the decoder that we'll start using a table
54
+ of this size */
55
+ uint8_t advertise_table_size_change;
56
56
 
57
57
  /* filter tables for elems: this tables provides an approximate
58
58
  popularity count for particular hashes, and are used to determine whether
59
59
  a new literal should be added to the compression table or not.
60
60
  They track a single integer that counts how often a particular value has
61
61
  been seen. When that count reaches max (255), all values are halved. */
62
+ uint32_t filter_elems_sum;
62
63
  uint8_t filter_elems[GRPC_CHTTP2_HPACKC_NUM_VALUES];
63
64
 
64
65
  /* entry tables for keys & elems: these tables track values that have been
65
66
  seen and *may* be in the decompressor table */
66
- grpc_slice entries_keys[GRPC_CHTTP2_HPACKC_NUM_VALUES];
67
- grpc_mdelem entries_elems[GRPC_CHTTP2_HPACKC_NUM_VALUES];
68
- uint32_t indices_keys[GRPC_CHTTP2_HPACKC_NUM_VALUES];
69
- uint32_t indices_elems[GRPC_CHTTP2_HPACKC_NUM_VALUES];
70
-
71
- uint16_t* table_elem_size;
72
- } grpc_chttp2_hpack_compressor;
67
+ struct {
68
+ struct {
69
+ grpc_mdelem value;
70
+ uint32_t index;
71
+ } entries[GRPC_CHTTP2_HPACKC_NUM_VALUES];
72
+ } elem_table; /* Metadata table management */
73
+ struct {
74
+ struct {
75
+ /* Only store the slice refcount - we do not need the byte buffer or
76
+ length of the slice since we only need to store a mapping between the
77
+ identity of the slice and the corresponding HPACK index. Since the
78
+ slice *must* be static or interned, the refcount is sufficient to
79
+ establish identity. */
80
+ grpc_slice_refcount* value;
81
+ uint32_t index;
82
+ } entries[GRPC_CHTTP2_HPACKC_NUM_VALUES];
83
+ } key_table; /* Key table management */
84
+ };
73
85
 
74
86
  void grpc_chttp2_hpack_compressor_init(grpc_chttp2_hpack_compressor* c);
75
87
  void grpc_chttp2_hpack_compressor_destroy(grpc_chttp2_hpack_compressor* c);
@@ -1741,9 +1741,8 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
1741
1741
  however -- it might be that we receive a RST_STREAM following this
1742
1742
  and can avoid the extra write */
1743
1743
  GRPC_CHTTP2_STREAM_REF(s, "final_rst");
1744
- GRPC_CLOSURE_SCHED(
1745
- GRPC_CLOSURE_CREATE(force_client_rst_stream, s,
1746
- grpc_combiner_finally_scheduler(t->combiner)),
1744
+ t->combiner->FinallyRun(
1745
+ GRPC_CLOSURE_CREATE(force_client_rst_stream, s, nullptr),
1747
1746
  GRPC_ERROR_NONE);
1748
1747
  }
1749
1748
  grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE);
@@ -300,16 +300,12 @@ struct grpc_chttp2_transport {
300
300
 
301
301
  grpc_resource_user* resource_user;
302
302
 
303
- grpc_combiner* combiner;
303
+ grpc_core::Combiner* combiner;
304
304
 
305
305
  grpc_closure* notify_on_receive_settings = nullptr;
306
306
 
307
307
  /** write execution state of the transport */
308
308
  grpc_chttp2_write_state write_state = GRPC_CHTTP2_WRITE_STATE_IDLE;
309
- /** is this the first write in a series of writes?
310
- set when we initiate writing from idle, cleared when we
311
- initiate writing from writing+more */
312
- bool is_first_write_in_batch = false;
313
309
 
314
310
  /** is the transport destroying itself? */
315
311
  uint8_t destroying = false;
@@ -319,8 +315,6 @@ struct grpc_chttp2_transport {
319
315
  /** is there a read request to the endpoint outstanding? */
320
316
  uint8_t endpoint_reading = 1;
321
317
 
322
- grpc_chttp2_optimization_target opt_target = GRPC_CHTTP2_OPTIMIZE_FOR_LATENCY;
323
-
324
318
  /** various lists of streams */
325
319
  grpc_chttp2_stream_list lists[STREAM_LIST_COUNT] = {};
326
320
 
@@ -341,15 +335,13 @@ struct grpc_chttp2_transport {
341
335
  publish the accepted server stream */
342
336
  grpc_chttp2_stream** accepting_stream = nullptr;
343
337
 
344
- struct {
345
- /* accept stream callback */
346
- void (*accept_stream)(void* user_data, grpc_transport* transport,
347
- const void* server_data);
348
- void* accept_stream_user_data;
338
+ /* accept stream callback */
339
+ void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
340
+ const void* server_data);
341
+ void* accept_stream_cb_user_data;
349
342
 
350
- /** connectivity tracking */
351
- grpc_connectivity_state_tracker state_tracker;
352
- } channel_callback;
343
+ /** connectivity tracking */
344
+ grpc_core::ConnectivityStateTracker state_tracker;
353
345
 
354
346
  /** data to write now */
355
347
  grpc_slice_buffer outbuf;
@@ -467,6 +459,8 @@ struct grpc_chttp2_transport {
467
459
 
468
460
  /* next bdp ping timer */
469
461
  bool have_next_bdp_ping_timer = false;
462
+ /** If start_bdp_ping_locked has been called */
463
+ bool bdp_ping_started = false;
470
464
  grpc_timer next_bdp_ping_timer;
471
465
 
472
466
  /* keep-alive ping support */
@@ -488,6 +482,8 @@ struct grpc_chttp2_transport {
488
482
  grpc_millis keepalive_timeout;
489
483
  /** if keepalive pings are allowed when there's no outstanding streams */
490
484
  bool keepalive_permit_without_calls = false;
485
+ /** If start_keepalive_ping_locked has been called */
486
+ bool keepalive_ping_started = false;
491
487
  /** keep-alive state machine state */
492
488
  grpc_chttp2_keepalive_state keepalive_state;
493
489
  grpc_core::ContextList* cl = nullptr;
@@ -870,4 +866,6 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
870
866
  void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
871
867
  bool is_client);
872
868
 
869
+ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error);
870
+
873
871
  #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H */
@@ -96,6 +96,9 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
96
96
  if (!t->ping_state.is_delayed_ping_timer_set) {
97
97
  t->ping_state.is_delayed_ping_timer_set = true;
98
98
  GRPC_CHTTP2_REF_TRANSPORT(t, "retry_initiate_ping_locked");
99
+ GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
100
+ grpc_chttp2_retry_initiate_ping, t,
101
+ grpc_schedule_on_exec_ctx);
99
102
  grpc_timer_init(&t->ping_state.delayed_ping_timer, next_allowed_ping,
100
103
  &t->retry_initiate_ping_locked);
101
104
  }
@@ -75,17 +75,17 @@ struct shared_mu {
75
75
  struct inproc_transport {
76
76
  inproc_transport(const grpc_transport_vtable* vtable, shared_mu* mu,
77
77
  bool is_client)
78
- : mu(mu), is_client(is_client) {
78
+ : mu(mu),
79
+ is_client(is_client),
80
+ state_tracker(is_client ? "inproc_client" : "inproc_server",
81
+ GRPC_CHANNEL_READY) {
79
82
  base.vtable = vtable;
80
83
  // Start each side of transport with 2 refs since they each have a ref
81
84
  // to the other
82
85
  gpr_ref_init(&refs, 2);
83
- grpc_connectivity_state_init(&connectivity, GRPC_CHANNEL_READY,
84
- is_client ? "inproc_client" : "inproc_server");
85
86
  }
86
87
 
87
88
  ~inproc_transport() {
88
- grpc_connectivity_state_destroy(&connectivity);
89
89
  if (gpr_unref(&mu->refs)) {
90
90
  mu->~shared_mu();
91
91
  gpr_free(mu);
@@ -111,7 +111,7 @@ struct inproc_transport {
111
111
  shared_mu* mu;
112
112
  gpr_refcount refs;
113
113
  bool is_client;
114
- grpc_connectivity_state_tracker connectivity;
114
+ grpc_core::ConnectivityStateTracker state_tracker;
115
115
  void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
116
116
  const void* server_data);
117
117
  void* accept_stream_data;
@@ -1090,8 +1090,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1090
1090
 
1091
1091
  void close_transport_locked(inproc_transport* t) {
1092
1092
  INPROC_LOG(GPR_INFO, "close_transport %p %d", t, t->is_closed);
1093
- grpc_connectivity_state_set(&t->connectivity, GRPC_CHANNEL_SHUTDOWN,
1094
- "close transport");
1093
+ t->state_tracker.SetState(GRPC_CHANNEL_SHUTDOWN, "close transport");
1095
1094
  if (!t->is_closed) {
1096
1095
  t->is_closed = true;
1097
1096
  /* Also end all streams on this transport */
@@ -1110,10 +1109,12 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1110
1109
  inproc_transport* t = reinterpret_cast<inproc_transport*>(gt);
1111
1110
  INPROC_LOG(GPR_INFO, "perform_transport_op %p %p", t, op);
1112
1111
  gpr_mu_lock(&t->mu->mu);
1113
- if (op->on_connectivity_state_change) {
1114
- grpc_connectivity_state_notify_on_state_change(
1115
- &t->connectivity, op->connectivity_state,
1116
- op->on_connectivity_state_change);
1112
+ if (op->start_connectivity_watch != nullptr) {
1113
+ t->state_tracker.AddWatcher(op->start_connectivity_watch_state,
1114
+ std::move(op->start_connectivity_watch));
1115
+ }
1116
+ if (op->stop_connectivity_watch != nullptr) {
1117
+ t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
1117
1118
  }
1118
1119
  if (op->set_accept_stream) {
1119
1120
  t->accept_stream_cb = op->set_accept_stream_fn;
@@ -1226,10 +1227,15 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1226
1227
 
1227
1228
  grpc_core::ExecCtx exec_ctx;
1228
1229
 
1229
- const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
1230
+ // Remove max_connection_idle and max_connection_age channel arguments since
1231
+ // those do not apply to inproc transports.
1232
+ const char* args_to_remove[] = {GRPC_ARG_MAX_CONNECTION_IDLE_MS,
1233
+ GRPC_ARG_MAX_CONNECTION_AGE_MS};
1234
+ const grpc_channel_args* server_args = grpc_channel_args_copy_and_remove(
1235
+ grpc_server_get_channel_args(server), args_to_remove,
1236
+ GPR_ARRAY_SIZE(args_to_remove));
1230
1237
 
1231
1238
  // Add a default authority channel argument for the client
1232
-
1233
1239
  grpc_arg default_authority_arg;
1234
1240
  default_authority_arg.type = GRPC_ARG_STRING;
1235
1241
  default_authority_arg.key = (char*)GRPC_ARG_DEFAULT_AUTHORITY;
@@ -1249,6 +1255,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1249
1255
  "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
1250
1256
 
1251
1257
  // Free up created channel args
1258
+ grpc_channel_args_destroy(server_args);
1252
1259
  grpc_channel_args_destroy(client_args);
1253
1260
 
1254
1261
  // Now finish scheduled operations
@@ -22,6 +22,8 @@
22
22
  #include <string.h>
23
23
 
24
24
  #include <grpc/grpc.h>
25
+ #include <grpc/impl/codegen/grpc_types.h>
26
+ #include <grpc/impl/codegen/log.h>
25
27
  #include <grpc/support/alloc.h>
26
28
  #include <grpc/support/log.h>
27
29
  #include <grpc/support/string_util.h>
@@ -361,3 +363,17 @@ char* grpc_channel_args_string(const grpc_channel_args* args) {
361
363
  gpr_strvec_destroy(&v);
362
364
  return result;
363
365
  }
366
+
367
+ namespace {
368
+ grpc_channel_args_client_channel_creation_mutator g_mutator = nullptr;
369
+ } // namespace
370
+
371
+ void grpc_channel_args_set_client_channel_creation_mutator(
372
+ grpc_channel_args_client_channel_creation_mutator cb) {
373
+ GPR_DEBUG_ASSERT(g_mutator == nullptr);
374
+ g_mutator = cb;
375
+ }
376
+ grpc_channel_args_client_channel_creation_mutator
377
+ grpc_channel_args_get_client_channel_creation_mutator() {
378
+ return g_mutator;
379
+ }
@@ -23,6 +23,8 @@
23
23
 
24
24
  #include <grpc/grpc.h>
25
25
 
26
+ #include "src/core/lib/surface/channel_stack_type.h"
27
+
26
28
  // Channel args are intentionally immutable, to avoid the need for locking.
27
29
 
28
30
  /** Copy the arguments in \a src into a new instance */
@@ -98,6 +100,14 @@ bool grpc_channel_arg_get_bool(const grpc_arg* arg, bool default_value);
98
100
  bool grpc_channel_args_find_bool(const grpc_channel_args* args,
99
101
  const char* name, bool default_value);
100
102
 
103
+ template <typename T>
104
+ T* grpc_channel_args_find_pointer(const grpc_channel_args* args,
105
+ const char* name) {
106
+ const grpc_arg* arg = grpc_channel_args_find(args, name);
107
+ if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
108
+ return static_cast<T*>(arg->value.pointer.p);
109
+ }
110
+
101
111
  // Helpers for creating channel args.
102
112
  grpc_arg grpc_channel_arg_string_create(char* name, char* value);
103
113
  grpc_arg grpc_channel_arg_integer_create(char* name, int value);
@@ -108,4 +118,16 @@ grpc_arg grpc_channel_arg_pointer_create(char* name, void* value,
108
118
  // Callers takes ownership of result.
109
119
  char* grpc_channel_args_string(const grpc_channel_args* args);
110
120
 
121
+ // Takes ownership of the old_args
122
+ typedef grpc_channel_args* (*grpc_channel_args_client_channel_creation_mutator)(
123
+ const char* target, grpc_channel_args* old_args,
124
+ grpc_channel_stack_type type);
125
+
126
+ // Should be called only once globaly before grpc is init'ed.
127
+ void grpc_channel_args_set_client_channel_creation_mutator(
128
+ grpc_channel_args_client_channel_creation_mutator cb);
129
+ // This will be called at the creation of each channel.
130
+ grpc_channel_args_client_channel_creation_mutator
131
+ grpc_channel_args_get_client_channel_creation_mutator();
132
+
111
133
  #endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_ARGS_H */
@@ -234,8 +234,7 @@ grpc_json* ChannelNode::RenderJson() {
234
234
  static_cast<grpc_connectivity_state>(state_field >> 1);
235
235
  json = grpc_json_create_child(nullptr, json, "state", nullptr,
236
236
  GRPC_JSON_OBJECT, false);
237
- grpc_json_create_child(nullptr, json, "state",
238
- grpc_connectivity_state_name(state),
237
+ grpc_json_create_child(nullptr, json, "state", ConnectivityStateName(state),
239
238
  GRPC_JSON_STRING, false);
240
239
  json = data;
241
240
  }
@@ -294,7 +293,7 @@ void ChannelNode::SetConnectivityState(grpc_connectivity_state state) {
294
293
 
295
294
  void ChannelNode::AddChildChannel(intptr_t child_uuid) {
296
295
  MutexLock lock(&child_mu_);
297
- child_channels_.insert(MakePair(child_uuid, true));
296
+ child_channels_.insert(std::make_pair(child_uuid, true));
298
297
  }
299
298
 
300
299
  void ChannelNode::RemoveChildChannel(intptr_t child_uuid) {
@@ -304,7 +303,7 @@ void ChannelNode::RemoveChildChannel(intptr_t child_uuid) {
304
303
 
305
304
  void ChannelNode::AddChildSubchannel(intptr_t child_uuid) {
306
305
  MutexLock lock(&child_mu_);
307
- child_subchannels_.insert(MakePair(child_uuid, true));
306
+ child_subchannels_.insert(std::make_pair(child_uuid, true));
308
307
  }
309
308
 
310
309
  void ChannelNode::RemoveChildSubchannel(intptr_t child_uuid) {
@@ -324,7 +323,7 @@ ServerNode::~ServerNode() {}
324
323
 
325
324
  void ServerNode::AddChildSocket(RefCountedPtr<SocketNode> node) {
326
325
  MutexLock lock(&child_mu_);
327
- child_sockets_.insert(MakePair(node->uuid(), std::move(node)));
326
+ child_sockets_.insert(std::make_pair(node->uuid(), std::move(node)));
328
327
  }
329
328
 
330
329
  void ServerNode::RemoveChildSocket(intptr_t child_uuid) {
@@ -334,7 +333,7 @@ void ServerNode::RemoveChildSocket(intptr_t child_uuid) {
334
333
 
335
334
  void ServerNode::AddChildListenSocket(RefCountedPtr<ListenSocketNode> node) {
336
335
  MutexLock lock(&child_mu_);
337
- child_listen_sockets_.insert(MakePair(node->uuid(), std::move(node)));
336
+ child_listen_sockets_.insert(std::make_pair(node->uuid(), std::move(node)));
338
337
  }
339
338
 
340
339
  void ServerNode::RemoveChildListenSocket(intptr_t child_uuid) {
@@ -88,7 +88,7 @@ class BaseNode : public RefCounted<BaseNode> {
88
88
  virtual ~BaseNode();
89
89
 
90
90
  // All children must implement this function.
91
- virtual grpc_json* RenderJson() GRPC_ABSTRACT;
91
+ virtual grpc_json* RenderJson() = 0;
92
92
 
93
93
  // Renders the json and returns allocated string that must be freed by the
94
94
  // caller.
@@ -97,7 +97,7 @@ static callback_state* get_state_for_batch(
97
97
 
98
98
  /* Intercept a call operation and either push it directly up or translate it
99
99
  into transport stream operations */
100
- static void con_start_transport_stream_op_batch(
100
+ static void connected_channel_start_transport_stream_op_batch(
101
101
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
102
102
  call_data* calld = static_cast<call_data*>(elem->call_data);
103
103
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
@@ -137,15 +137,15 @@ static void con_start_transport_stream_op_batch(
137
137
  GRPC_CALL_COMBINER_STOP(calld->call_combiner, "passed batch to transport");
138
138
  }
139
139
 
140
- static void con_start_transport_op(grpc_channel_element* elem,
141
- grpc_transport_op* op) {
140
+ static void connected_channel_start_transport_op(grpc_channel_element* elem,
141
+ grpc_transport_op* op) {
142
142
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
143
143
  grpc_transport_perform_op(chand->transport, op);
144
144
  }
145
145
 
146
146
  /* Constructor for call_data */
147
- static grpc_error* init_call_elem(grpc_call_element* elem,
148
- const grpc_call_element_args* args) {
147
+ static grpc_error* connected_channel_init_call_elem(
148
+ grpc_call_element* elem, const grpc_call_element_args* args) {
149
149
  call_data* calld = static_cast<call_data*>(elem->call_data);
150
150
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
151
151
  calld->call_combiner = args->call_combiner;
@@ -166,9 +166,9 @@ static void set_pollset_or_pollset_set(grpc_call_element* elem,
166
166
  }
167
167
 
168
168
  /* Destructor for call_data */
169
- static void destroy_call_elem(grpc_call_element* elem,
170
- const grpc_call_final_info* final_info,
171
- grpc_closure* then_schedule_closure) {
169
+ static void connected_channel_destroy_call_elem(
170
+ grpc_call_element* elem, const grpc_call_final_info* final_info,
171
+ grpc_closure* then_schedule_closure) {
172
172
  call_data* calld = static_cast<call_data*>(elem->call_data);
173
173
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
174
174
  grpc_transport_destroy_stream(chand->transport,
@@ -177,8 +177,8 @@ static void destroy_call_elem(grpc_call_element* elem,
177
177
  }
178
178
 
179
179
  /* Constructor for channel_data */
180
- static grpc_error* init_channel_elem(grpc_channel_element* elem,
181
- grpc_channel_element_args* args) {
180
+ static grpc_error* connected_channel_init_channel_elem(
181
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
182
182
  channel_data* cd = static_cast<channel_data*>(elem->channel_data);
183
183
  GPR_ASSERT(args->is_last);
184
184
  cd->transport = nullptr;
@@ -186,7 +186,7 @@ static grpc_error* init_channel_elem(grpc_channel_element* elem,
186
186
  }
187
187
 
188
188
  /* Destructor for channel_data */
189
- static void destroy_channel_elem(grpc_channel_element* elem) {
189
+ static void connected_channel_destroy_channel_elem(grpc_channel_element* elem) {
190
190
  channel_data* cd = static_cast<channel_data*>(elem->channel_data);
191
191
  if (cd->transport) {
192
192
  grpc_transport_destroy(cd->transport);
@@ -194,20 +194,20 @@ static void destroy_channel_elem(grpc_channel_element* elem) {
194
194
  }
195
195
 
196
196
  /* No-op. */
197
- static void con_get_channel_info(grpc_channel_element* elem,
198
- const grpc_channel_info* channel_info) {}
197
+ static void connected_channel_get_channel_info(
198
+ grpc_channel_element* elem, const grpc_channel_info* channel_info) {}
199
199
 
200
200
  const grpc_channel_filter grpc_connected_filter = {
201
- con_start_transport_stream_op_batch,
202
- con_start_transport_op,
201
+ connected_channel_start_transport_stream_op_batch,
202
+ connected_channel_start_transport_op,
203
203
  sizeof(call_data),
204
- init_call_elem,
204
+ connected_channel_init_call_elem,
205
205
  set_pollset_or_pollset_set,
206
- destroy_call_elem,
206
+ connected_channel_destroy_call_elem,
207
207
  sizeof(channel_data),
208
- init_channel_elem,
209
- destroy_channel_elem,
210
- con_get_channel_info,
208
+ connected_channel_init_channel_elem,
209
+ connected_channel_destroy_channel_elem,
210
+ connected_channel_get_channel_info,
211
211
  "connected",
212
212
  };
213
213