grpc 1.24.0 → 1.25.0.pre1

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 (504) 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/exec_ctx.h +4 -3
  113. data/src/core/lib/iomgr/executor.cc +4 -2
  114. data/src/core/lib/iomgr/executor.h +3 -0
  115. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  116. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  117. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  118. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  119. data/src/core/lib/iomgr/resource_quota.h +13 -9
  120. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  121. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  123. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  124. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  125. data/src/core/lib/iomgr/tcp_server.h +1 -4
  126. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  127. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  128. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  129. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  130. data/src/core/lib/iomgr/udp_server.cc +3 -2
  131. data/src/core/lib/iomgr/udp_server.h +6 -12
  132. data/src/core/lib/json/json.h +1 -1
  133. data/src/core/lib/json/json_string.cc +2 -2
  134. data/src/core/lib/profiling/basic_timers.cc +2 -2
  135. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  137. data/src/core/lib/security/credentials/credentials.h +4 -20
  138. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  139. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  140. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  141. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  142. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  143. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  144. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  145. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  146. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  147. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  148. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  149. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  150. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  152. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  153. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  154. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  155. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  156. data/src/core/lib/slice/slice.cc +2 -10
  157. data/src/core/lib/slice/slice_hash_table.h +4 -6
  158. data/src/core/lib/slice/slice_intern.cc +42 -39
  159. data/src/core/lib/slice/slice_internal.h +3 -3
  160. data/src/core/lib/slice/slice_utils.h +21 -4
  161. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  162. data/src/core/lib/surface/call.cc +3 -3
  163. data/src/core/lib/surface/channel.cc +7 -0
  164. data/src/core/lib/surface/completion_queue.cc +12 -11
  165. data/src/core/lib/surface/completion_queue.h +4 -2
  166. data/src/core/lib/surface/init.cc +1 -0
  167. data/src/core/lib/surface/lame_client.cc +33 -18
  168. data/src/core/lib/surface/server.cc +77 -76
  169. data/src/core/lib/surface/version.cc +1 -1
  170. data/src/core/lib/transport/byte_stream.h +3 -7
  171. data/src/core/lib/transport/connectivity_state.cc +112 -98
  172. data/src/core/lib/transport/connectivity_state.h +100 -50
  173. data/src/core/lib/transport/static_metadata.cc +276 -288
  174. data/src/core/lib/transport/static_metadata.h +73 -76
  175. data/src/core/lib/transport/status_conversion.cc +1 -1
  176. data/src/core/lib/transport/status_metadata.cc +1 -1
  177. data/src/core/lib/transport/transport.cc +2 -2
  178. data/src/core/lib/transport/transport.h +12 -4
  179. data/src/core/lib/transport/transport_op_string.cc +14 -11
  180. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  181. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  183. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  184. data/src/core/tsi/fake_transport_security.cc +7 -5
  185. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  186. data/src/core/tsi/local_transport_security.cc +8 -6
  187. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  188. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  189. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  191. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  192. data/src/core/tsi/ssl_transport_security.cc +12 -12
  193. data/src/core/tsi/ssl_transport_security.h +2 -2
  194. data/src/core/tsi/transport_security_grpc.cc +7 -0
  195. data/src/core/tsi/transport_security_grpc.h +6 -0
  196. data/src/ruby/ext/grpc/extconf.rb +1 -0
  197. data/src/ruby/ext/grpc/rb_call.c +1 -1
  198. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  199. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  200. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  201. data/src/ruby/lib/grpc/version.rb +1 -1
  202. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  203. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  204. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  205. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  206. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  207. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  208. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  209. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  210. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  211. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  212. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  213. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  214. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  215. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  216. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  217. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  218. data/third_party/boringssl/crypto/bio/file.c +5 -2
  219. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  220. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  221. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  222. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  223. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  224. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  225. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  226. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  227. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  228. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  229. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  230. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  233. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  234. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  235. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  236. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  237. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  238. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  239. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  240. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  241. data/third_party/boringssl/crypto/crypto.c +39 -22
  242. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  243. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  244. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  245. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  246. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  247. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  248. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  249. data/third_party/boringssl/crypto/err/err.c +2 -0
  250. data/third_party/boringssl/crypto/err/internal.h +2 -2
  251. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  252. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  253. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  254. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  255. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  256. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  257. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  258. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  259. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  260. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  261. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  262. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  264. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  265. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  266. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  267. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  268. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  269. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  270. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  271. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  273. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  275. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  276. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  278. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  279. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  281. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  282. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  283. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  284. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  286. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  287. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  291. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  292. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  293. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  294. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  297. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  298. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  299. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  300. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  304. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  307. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  308. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  309. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  310. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  311. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  312. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  313. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  314. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  315. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  316. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  318. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  319. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  320. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  321. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  322. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  324. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  325. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  326. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  329. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  330. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  331. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  334. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  335. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  336. data/third_party/boringssl/crypto/internal.h +95 -20
  337. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  338. data/third_party/boringssl/crypto/mem.c +39 -2
  339. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  340. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  341. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  342. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  343. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  344. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  345. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  347. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  348. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  349. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  351. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  352. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  353. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  354. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  355. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  356. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  357. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  358. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  359. data/third_party/boringssl/crypto/thread_none.c +2 -2
  360. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  361. data/third_party/boringssl/crypto/thread_win.c +38 -19
  362. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  363. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  364. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  365. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  366. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  367. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  368. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  369. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  370. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  372. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  373. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  374. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  375. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  376. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  377. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  378. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  379. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  380. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  381. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  382. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  383. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  384. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  387. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  389. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  390. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  391. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  392. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  393. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  395. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  396. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  397. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  398. data/third_party/boringssl/include/openssl/aead.h +45 -19
  399. data/third_party/boringssl/include/openssl/aes.h +32 -7
  400. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  401. data/third_party/boringssl/include/openssl/base.h +120 -6
  402. data/third_party/boringssl/include/openssl/base64.h +4 -1
  403. data/third_party/boringssl/include/openssl/bio.h +112 -81
  404. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  405. data/third_party/boringssl/include/openssl/bn.h +55 -29
  406. data/third_party/boringssl/include/openssl/buf.h +2 -2
  407. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  408. data/third_party/boringssl/include/openssl/cast.h +2 -2
  409. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  410. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  411. data/third_party/boringssl/include/openssl/conf.h +3 -6
  412. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  413. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  414. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  415. data/third_party/boringssl/include/openssl/dh.h +3 -2
  416. data/third_party/boringssl/include/openssl/digest.h +21 -7
  417. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  418. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  419. data/third_party/boringssl/include/openssl/ec.h +25 -21
  420. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  421. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  422. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  423. data/third_party/boringssl/include/openssl/engine.h +4 -4
  424. data/third_party/boringssl/include/openssl/err.h +3 -0
  425. data/third_party/boringssl/include/openssl/evp.h +199 -42
  426. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  427. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  428. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  429. data/third_party/boringssl/include/openssl/md4.h +6 -4
  430. data/third_party/boringssl/include/openssl/md5.h +6 -4
  431. data/third_party/boringssl/include/openssl/mem.h +6 -2
  432. data/third_party/boringssl/include/openssl/nid.h +3 -0
  433. data/third_party/boringssl/include/openssl/obj.h +3 -0
  434. data/third_party/boringssl/include/openssl/pem.h +102 -64
  435. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  436. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  437. data/third_party/boringssl/include/openssl/pool.h +13 -2
  438. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  439. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  440. data/third_party/boringssl/include/openssl/sha.h +40 -28
  441. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  442. data/third_party/boringssl/include/openssl/span.h +17 -9
  443. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  444. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  445. data/third_party/boringssl/include/openssl/stack.h +134 -77
  446. data/third_party/boringssl/include/openssl/thread.h +1 -1
  447. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  448. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  449. data/third_party/boringssl/include/openssl/x509.h +28 -3
  450. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  451. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  452. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  453. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  454. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  455. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  456. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  457. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  458. data/third_party/boringssl/ssl/handoff.cc +295 -91
  459. data/third_party/boringssl/ssl/handshake.cc +133 -72
  460. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  461. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  462. data/third_party/boringssl/ssl/internal.h +1413 -928
  463. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  464. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  465. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  466. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  467. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  468. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  469. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  470. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  471. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  472. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  473. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  474. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  475. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  476. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  477. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  478. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  479. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  480. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  481. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  482. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  483. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  484. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  485. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  486. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  487. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  488. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  489. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  490. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  491. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  492. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  493. data/third_party/upb/upb/port_def.inc +1 -1
  494. data/third_party/upb/upb/table.c +2 -1
  495. metadata +71 -43
  496. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  497. data/src/core/lib/gpr/mpscq.cc +0 -117
  498. data/src/core/lib/gpr/mpscq.h +0 -88
  499. data/src/core/lib/gprpp/abstract.h +0 -47
  500. data/src/core/lib/gprpp/pair.h +0 -38
  501. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  502. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  503. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  504. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -0,0 +1,33 @@
1
+ //
2
+ // Copyright 2017 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_LIB_GPRPP_SET_H
18
+ #define GRPC_CORE_LIB_GPRPP_SET_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <set>
23
+
24
+ #include "src/core/lib/gprpp/memory.h"
25
+
26
+ namespace grpc_core {
27
+
28
+ template <typename T, typename Compare = std::less<T>>
29
+ using Set = std::set<T, Compare, Allocator<T>>;
30
+
31
+ } // namespace grpc_core
32
+
33
+ #endif /* GRPC_CORE_LIB_GPRPP_SET_H */
@@ -28,7 +28,6 @@
28
28
  #include <grpc/support/thd_id.h>
29
29
  #include <grpc/support/time.h>
30
30
 
31
- #include "src/core/lib/gprpp/abstract.h"
32
31
  #include "src/core/lib/gprpp/memory.h"
33
32
 
34
33
  namespace grpc_core {
@@ -38,9 +37,8 @@ namespace internal {
38
37
  class ThreadInternalsInterface {
39
38
  public:
40
39
  virtual ~ThreadInternalsInterface() {}
41
- virtual void Start() GRPC_ABSTRACT;
42
- virtual void Join() GRPC_ABSTRACT;
43
- GRPC_ABSTRACT_BASE_CLASS
40
+ virtual void Start() = 0;
41
+ virtual void Join() = 0;
44
42
  };
45
43
 
46
44
  } // namespace internal
@@ -66,7 +66,7 @@ static grpc_httpcli_get_override g_get_override = nullptr;
66
66
  static grpc_httpcli_post_override g_post_override = nullptr;
67
67
 
68
68
  static void plaintext_handshake(void* arg, grpc_endpoint* endpoint,
69
- const char* host, grpc_millis deadline,
69
+ const char* /*host*/, grpc_millis /*deadline*/,
70
70
  void (*on_done)(void* arg,
71
71
  grpc_endpoint* endpoint)) {
72
72
  on_done(arg, endpoint);
@@ -41,7 +41,7 @@
41
41
  class grpc_httpcli_ssl_channel_security_connector final
42
42
  : public grpc_channel_security_connector {
43
43
  public:
44
- explicit grpc_httpcli_ssl_channel_security_connector(char* secure_peer_name)
44
+ grpc_httpcli_ssl_channel_security_connector(char* secure_peer_name)
45
45
  : grpc_channel_security_connector(
46
46
  /*url_scheme=*/nullptr,
47
47
  /*channel_creds=*/nullptr,
@@ -66,7 +66,8 @@ class grpc_httpcli_ssl_channel_security_connector final
66
66
  &options, &handshaker_factory_);
67
67
  }
68
68
 
69
- void add_handshakers(grpc_pollset_set* interested_parties,
69
+ void add_handshakers(const grpc_channel_args* args,
70
+ grpc_pollset_set* /*interested_parties*/,
70
71
  grpc_core::HandshakeManager* handshake_mgr) override {
71
72
  tsi_handshaker* handshaker = nullptr;
72
73
  if (handshaker_factory_ != nullptr) {
@@ -77,14 +78,15 @@ class grpc_httpcli_ssl_channel_security_connector final
77
78
  tsi_result_to_string(result));
78
79
  }
79
80
  }
80
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(handshaker, this));
81
+ handshake_mgr->Add(
82
+ grpc_core::SecurityHandshakerCreate(handshaker, this, args));
81
83
  }
82
84
 
83
85
  tsi_ssl_client_handshaker_factory* handshaker_factory() const {
84
86
  return handshaker_factory_;
85
87
  }
86
88
 
87
- void check_peer(tsi_peer peer, grpc_endpoint* ep,
89
+ void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
88
90
  grpc_core::RefCountedPtr<grpc_auth_context>* /*auth_context*/,
89
91
  grpc_closure* on_peer_checked) override {
90
92
  grpc_error* error = GRPC_ERROR_NONE;
@@ -109,15 +111,15 @@ class grpc_httpcli_ssl_channel_security_connector final
109
111
  return strcmp(secure_peer_name_, other->secure_peer_name_);
110
112
  }
111
113
 
112
- bool check_call_host(grpc_core::StringView host,
113
- grpc_auth_context* auth_context,
114
- grpc_closure* on_call_host_checked,
114
+ bool check_call_host(grpc_core::StringView /*host*/,
115
+ grpc_auth_context* /*auth_context*/,
116
+ grpc_closure* /*on_call_host_checked*/,
115
117
  grpc_error** error) override {
116
118
  *error = GRPC_ERROR_NONE;
117
119
  return true;
118
120
  }
119
121
 
120
- void cancel_check_call_host(grpc_closure* on_call_host_checked,
122
+ void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
121
123
  grpc_error* error) override {
122
124
  GRPC_ERROR_UNREF(error);
123
125
  }
@@ -132,7 +134,7 @@ class grpc_httpcli_ssl_channel_security_connector final
132
134
  static grpc_core::RefCountedPtr<grpc_channel_security_connector>
133
135
  httpcli_ssl_channel_security_connector_create(
134
136
  const char* pem_root_certs, const tsi_ssl_root_certs_store* root_store,
135
- const char* secure_peer_name) {
137
+ const char* secure_peer_name, grpc_channel_args* /*channel_args*/) {
136
138
  if (secure_peer_name != nullptr && pem_root_certs == nullptr) {
137
139
  gpr_log(GPR_ERROR,
138
140
  "Cannot assert a secure peer name without a trust root.");
@@ -192,8 +194,10 @@ static void ssl_handshake(void* arg, grpc_endpoint* tcp, const char* host,
192
194
  c->func = on_done;
193
195
  c->arg = arg;
194
196
  grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
195
- httpcli_ssl_channel_security_connector_create(pem_root_certs, root_store,
196
- host);
197
+ httpcli_ssl_channel_security_connector_create(
198
+ pem_root_certs, root_store, host,
199
+ static_cast<grpc_core::HandshakerArgs*>(arg)->args);
200
+
197
201
  GPR_ASSERT(sc != nullptr);
198
202
  grpc_arg channel_arg = grpc_security_connector_to_arg(sc.get());
199
203
  grpc_channel_args args = {1, &channel_arg};
@@ -327,7 +327,7 @@ void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type,
327
327
  parser->cur_line_end_length = 2;
328
328
  }
329
329
 
330
- void grpc_http_parser_destroy(grpc_http_parser* parser) {}
330
+ void grpc_http_parser_destroy(grpc_http_parser* /*parser*/) {}
331
331
 
332
332
  void grpc_http_request_destroy(grpc_http_request* request) {
333
333
  size_t i;
@@ -39,8 +39,8 @@ void fill_gpr_from_timestamp(gpr_timespec* gts, const struct timespec* ts) {
39
39
  gts->clock_type = GPR_CLOCK_REALTIME;
40
40
  }
41
41
 
42
- void default_timestamps_callback(void* arg, grpc_core::Timestamps* ts,
43
- grpc_error* shudown_err) {
42
+ void default_timestamps_callback(void* /*arg*/, grpc_core::Timestamps* /*ts*/,
43
+ grpc_error* /*shudown_err*/) {
44
44
  gpr_log(GPR_DEBUG, "Timestamps callback has not been registered");
45
45
  }
46
46
 
@@ -293,9 +293,8 @@ void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*,
293
293
  #else /* GRPC_LINUX_ERRQUEUE */
294
294
 
295
295
  namespace grpc_core {
296
- void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*,
297
- grpc_core::Timestamps*,
298
- grpc_error* error)) {
296
+ void grpc_tcp_set_write_timestamps_callback(
297
+ void (*/*fn*/)(void*, grpc_core::Timestamps*, grpc_error* error)) {
299
298
  gpr_log(GPR_DEBUG, "Timestamps callback is not enabled for this platform");
300
299
  }
301
300
  } /* namespace grpc_core */
@@ -114,6 +114,10 @@ struct Timestamps {
114
114
  #ifdef GRPC_LINUX_ERRQUEUE
115
115
  class TracedBuffer {
116
116
  public:
117
+ /** Use AddNewEntry function instead of using this directly. */
118
+ TracedBuffer(uint32_t seq_no, void* arg)
119
+ : seq_no_(seq_no), arg_(arg), next_(nullptr) {}
120
+
117
121
  /** Add a new entry in the TracedBuffer list pointed to by head. Also saves
118
122
  * sendmsg_time with the current timestamp. */
119
123
  static void AddNewEntry(grpc_core::TracedBuffer** head, uint32_t seq_no,
@@ -133,11 +137,6 @@ class TracedBuffer {
133
137
  grpc_error* shutdown_err);
134
138
 
135
139
  private:
136
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
137
-
138
- TracedBuffer(uint32_t seq_no, void* arg)
139
- : seq_no_(seq_no), arg_(arg), next_(nullptr) {}
140
-
141
140
  uint32_t seq_no_; /* The sequence number for the last byte in the buffer */
142
141
  void* arg_; /* The arg to pass to timestamps_callback */
143
142
  grpc_core::Timestamps ts_; /* The timestamps corresponding to this buffer */
@@ -147,7 +146,7 @@ class TracedBuffer {
147
146
  class TracedBuffer {
148
147
  public:
149
148
  /* Dummy shutdown function */
150
- static void Shutdown(grpc_core::TracedBuffer** head, void* remaining,
149
+ static void Shutdown(grpc_core::TracedBuffer** /*head*/, void* /*remaining*/,
151
150
  grpc_error* shutdown_err) {
152
151
  GRPC_ERROR_UNREF(shutdown_err);
153
152
  }
@@ -48,7 +48,6 @@ gpr_atm EncodeCancelStateError(grpc_error* error) {
48
48
  CallCombiner::CallCombiner() {
49
49
  gpr_atm_no_barrier_store(&cancel_state_, 0);
50
50
  gpr_atm_no_barrier_store(&size_, 0);
51
- gpr_mpscq_init(&queue_);
52
51
  #ifdef GRPC_TSAN_ENABLED
53
52
  GRPC_CLOSURE_INIT(&tsan_closure_, TsanClosure, this,
54
53
  grpc_schedule_on_exec_ctx);
@@ -56,7 +55,6 @@ CallCombiner::CallCombiner() {
56
55
  }
57
56
 
58
57
  CallCombiner::~CallCombiner() {
59
- gpr_mpscq_destroy(&queue_);
60
58
  GRPC_ERROR_UNREF(DecodeCancelStateError(cancel_state_));
61
59
  }
62
60
 
@@ -140,7 +138,8 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error* error,
140
138
  }
141
139
  // Queue was not empty, so add closure to queue.
142
140
  closure->error_data.error = error;
143
- gpr_mpscq_push(&queue_, reinterpret_cast<gpr_mpscq_node*>(closure));
141
+ queue_.Push(
142
+ reinterpret_cast<MultiProducerSingleConsumerQueue::Node*>(closure));
144
143
  }
145
144
  }
146
145
 
@@ -163,8 +162,8 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
163
162
  gpr_log(GPR_INFO, " checking queue");
164
163
  }
165
164
  bool empty;
166
- grpc_closure* closure = reinterpret_cast<grpc_closure*>(
167
- gpr_mpscq_pop_and_check_end(&queue_, &empty));
165
+ grpc_closure* closure =
166
+ reinterpret_cast<grpc_closure*>(queue_.PopAndCheckEnd(&empty));
168
167
  if (closure == nullptr) {
169
168
  // This can happen either due to a race condition within the mpscq
170
169
  // code or because of a race with Start().
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include <grpc/support/atm.h>
27
27
 
28
- #include "src/core/lib/gpr/mpscq.h"
29
28
  #include "src/core/lib/gprpp/inlined_vector.h"
29
+ #include "src/core/lib/gprpp/mpscq.h"
30
30
  #include "src/core/lib/gprpp/ref_counted.h"
31
31
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
32
32
  #include "src/core/lib/iomgr/closure.h"
@@ -108,7 +108,7 @@ class CallCombiner {
108
108
  #endif
109
109
 
110
110
  gpr_atm size_ = 0; // size_t, num closures in queue or currently executing
111
- gpr_mpscq queue_;
111
+ MultiProducerSingleConsumerQueue queue_;
112
112
  // Either 0 (if not cancelled and no cancellation closure set),
113
113
  // a grpc_closure* (if the lowest bit is 0),
114
114
  // or a grpc_error* (if the lowest bit is 1).
@@ -43,10 +43,12 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
43
43
  public:
44
44
  static CFStreamHandle* CreateStreamHandle(CFReadStreamRef read_stream,
45
45
  CFWriteStreamRef write_stream);
46
- ~CFStreamHandle() override;
46
+ /** Use CreateStreamHandle function instead of using this directly. */
47
+ CFStreamHandle(CFReadStreamRef read_stream, CFWriteStreamRef write_stream);
47
48
  CFStreamHandle(const CFStreamHandle& ref) = delete;
48
49
  CFStreamHandle(CFStreamHandle&& ref) = delete;
49
50
  CFStreamHandle& operator=(const CFStreamHandle& rhs) = delete;
51
+ ~CFStreamHandle() override;
50
52
 
51
53
  void NotifyOnOpen(grpc_closure* closure);
52
54
  void NotifyOnRead(grpc_closure* closure);
@@ -57,7 +59,6 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
57
59
  void Unref(const char* file = "", int line = 0, const char* reason = nullptr);
58
60
 
59
61
  private:
60
- CFStreamHandle(CFReadStreamRef read_stream, CFWriteStreamRef write_stream);
61
62
  static void ReadCallback(CFReadStreamRef stream, CFStreamEventType type,
62
63
  void* client_callback_info);
63
64
  static void WriteCallback(CFWriteStreamRef stream, CFStreamEventType type,
@@ -72,9 +73,6 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
72
73
  dispatch_queue_t dispatch_queue_;
73
74
 
74
75
  gpr_refcount refcount_;
75
-
76
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
77
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
78
76
  };
79
77
 
80
78
  #ifdef DEBUG
@@ -22,10 +22,13 @@
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
24
  #include <assert.h>
25
+ #include <stdbool.h>
26
+
25
27
  #include <grpc/support/alloc.h>
26
28
  #include <grpc/support/log.h>
27
- #include <stdbool.h>
28
- #include "src/core/lib/gpr/mpscq.h"
29
+
30
+ #include "src/core/lib/gprpp/manual_constructor.h"
31
+ #include "src/core/lib/gprpp/mpscq.h"
29
32
  #include "src/core/lib/iomgr/error.h"
30
33
  #include "src/core/lib/profiling/timers.h"
31
34
 
@@ -69,7 +72,9 @@ struct grpc_closure {
69
72
  * space */
70
73
  union {
71
74
  grpc_closure* next;
72
- gpr_mpscq_node atm_next;
75
+ grpc_core::ManualConstructor<
76
+ grpc_core::MultiProducerSingleConsumerQueue::Node>
77
+ mpscq_node;
73
78
  uintptr_t scratch;
74
79
  } next_data;
75
80
 
@@ -28,6 +28,7 @@
28
28
  #include <grpc/support/log.h>
29
29
 
30
30
  #include "src/core/lib/debug/stats.h"
31
+ #include "src/core/lib/gprpp/mpscq.h"
31
32
  #include "src/core/lib/iomgr/executor.h"
32
33
  #include "src/core/lib/iomgr/iomgr.h"
33
34
  #include "src/core/lib/profiling/timers.h"
@@ -44,44 +45,17 @@ grpc_core::DebugOnlyTraceFlag grpc_combiner_trace(false, "combiner");
44
45
  #define STATE_UNORPHANED 1
45
46
  #define STATE_ELEM_COUNT_LOW_BIT 2
46
47
 
47
- struct grpc_combiner {
48
- grpc_combiner* next_combiner_on_this_exec_ctx;
49
- grpc_closure_scheduler scheduler;
50
- grpc_closure_scheduler finally_scheduler;
51
- gpr_mpscq queue;
52
- // either:
53
- // a pointer to the initiating exec ctx if that is the only exec_ctx that has
54
- // ever queued to this combiner, or NULL. If this is non-null, it's not
55
- // dereferencable (since the initiating exec_ctx may have gone out of scope)
56
- gpr_atm initiating_exec_ctx_or_null;
57
- // state is:
58
- // lower bit - zero if orphaned (STATE_UNORPHANED)
59
- // other bits - number of items queued on the lock (STATE_ELEM_COUNT_LOW_BIT)
60
- gpr_atm state;
61
- bool time_to_execute_final_list;
62
- grpc_closure_list final_list;
63
- grpc_closure offload;
64
- gpr_refcount refs;
65
- };
66
-
67
- static void combiner_run(grpc_closure* closure, grpc_error* error);
68
- static void combiner_exec(grpc_closure* closure, grpc_error* error);
69
- static void combiner_finally_exec(grpc_closure* closure, grpc_error* error);
70
-
71
- static const grpc_closure_scheduler_vtable scheduler = {
72
- combiner_run, combiner_exec, "combiner:immediately"};
73
- static const grpc_closure_scheduler_vtable finally_scheduler = {
74
- combiner_finally_exec, combiner_finally_exec, "combiner:finally"};
48
+ static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* closure,
49
+ grpc_error* error);
50
+ static void combiner_finally_exec(grpc_core::Combiner* lock,
51
+ grpc_closure* closure, grpc_error* error);
75
52
 
76
53
  static void offload(void* arg, grpc_error* error);
77
54
 
78
- grpc_combiner* grpc_combiner_create(void) {
79
- grpc_combiner* lock = static_cast<grpc_combiner*>(gpr_zalloc(sizeof(*lock)));
55
+ grpc_core::Combiner* grpc_combiner_create(void) {
56
+ grpc_core::Combiner* lock = grpc_core::New<grpc_core::Combiner>();
80
57
  gpr_ref_init(&lock->refs, 1);
81
- lock->scheduler.vtable = &scheduler;
82
- lock->finally_scheduler.vtable = &finally_scheduler;
83
58
  gpr_atm_no_barrier_store(&lock->state, STATE_UNORPHANED);
84
- gpr_mpscq_init(&lock->queue);
85
59
  grpc_closure_list_init(&lock->final_list);
86
60
  GRPC_CLOSURE_INIT(
87
61
  &lock->offload, offload, lock,
@@ -90,14 +64,13 @@ grpc_combiner* grpc_combiner_create(void) {
90
64
  return lock;
91
65
  }
92
66
 
93
- static void really_destroy(grpc_combiner* lock) {
67
+ static void really_destroy(grpc_core::Combiner* lock) {
94
68
  GRPC_COMBINER_TRACE(gpr_log(GPR_INFO, "C:%p really_destroy", lock));
95
69
  GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0);
96
- gpr_mpscq_destroy(&lock->queue);
97
- gpr_free(lock);
70
+ grpc_core::Delete(lock);
98
71
  }
99
72
 
100
- static void start_destroy(grpc_combiner* lock) {
73
+ static void start_destroy(grpc_core::Combiner* lock) {
101
74
  gpr_atm old_state = gpr_atm_full_fetch_add(&lock->state, -STATE_UNORPHANED);
102
75
  GRPC_COMBINER_TRACE(gpr_log(
103
76
  GPR_INFO, "C:%p really_destroy old_state=%" PRIdPTR, lock, old_state));
@@ -118,20 +91,21 @@ static void start_destroy(grpc_combiner* lock) {
118
91
  #define GRPC_COMBINER_DEBUG_SPAM(op, delta)
119
92
  #endif
120
93
 
121
- void grpc_combiner_unref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
94
+ void grpc_combiner_unref(grpc_core::Combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
122
95
  GRPC_COMBINER_DEBUG_SPAM("UNREF", -1);
123
96
  if (gpr_unref(&lock->refs)) {
124
97
  start_destroy(lock);
125
98
  }
126
99
  }
127
100
 
128
- grpc_combiner* grpc_combiner_ref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
101
+ grpc_core::Combiner* grpc_combiner_ref(
102
+ grpc_core::Combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
129
103
  GRPC_COMBINER_DEBUG_SPAM(" REF", 1);
130
104
  gpr_ref(&lock->refs);
131
105
  return lock;
132
106
  }
133
107
 
134
- static void push_last_on_exec_ctx(grpc_combiner* lock) {
108
+ static void push_last_on_exec_ctx(grpc_core::Combiner* lock) {
135
109
  lock->next_combiner_on_this_exec_ctx = nullptr;
136
110
  if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner == nullptr) {
137
111
  grpc_core::ExecCtx::Get()->combiner_data()->active_combiner =
@@ -144,7 +118,7 @@ static void push_last_on_exec_ctx(grpc_combiner* lock) {
144
118
  }
145
119
  }
146
120
 
147
- static void push_first_on_exec_ctx(grpc_combiner* lock) {
121
+ static void push_first_on_exec_ctx(grpc_core::Combiner* lock) {
148
122
  lock->next_combiner_on_this_exec_ctx =
149
123
  grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
150
124
  grpc_core::ExecCtx::Get()->combiner_data()->active_combiner = lock;
@@ -153,14 +127,10 @@ static void push_first_on_exec_ctx(grpc_combiner* lock) {
153
127
  }
154
128
  }
155
129
 
156
- #define COMBINER_FROM_CLOSURE_SCHEDULER(closure, scheduler_name) \
157
- ((grpc_combiner*)(((char*)((closure)->scheduler)) - \
158
- offsetof(grpc_combiner, scheduler_name)))
159
-
160
- static void combiner_exec(grpc_closure* cl, grpc_error* error) {
130
+ static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl,
131
+ grpc_error* error) {
161
132
  GPR_TIMER_SCOPE("combiner.execute", 0);
162
133
  GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS();
163
- grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(cl, scheduler);
164
134
  gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT);
165
135
  GRPC_COMBINER_TRACE(gpr_log(GPR_INFO,
166
136
  "C:%p grpc_combiner_execute c=%p last=%" PRIdPTR,
@@ -185,7 +155,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) {
185
155
  GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
186
156
  assert(cl->cb);
187
157
  cl->error_data.error = error;
188
- gpr_mpscq_push(&lock->queue, &cl->next_data.atm_next);
158
+ lock->queue.Push(cl->next_data.mpscq_node.get());
189
159
  }
190
160
 
191
161
  static void move_next() {
@@ -198,12 +168,12 @@ static void move_next() {
198
168
  }
199
169
  }
200
170
 
201
- static void offload(void* arg, grpc_error* error) {
202
- grpc_combiner* lock = static_cast<grpc_combiner*>(arg);
171
+ static void offload(void* arg, grpc_error* /*error*/) {
172
+ grpc_core::Combiner* lock = static_cast<grpc_core::Combiner*>(arg);
203
173
  push_last_on_exec_ctx(lock);
204
174
  }
205
175
 
206
- static void queue_offload(grpc_combiner* lock) {
176
+ static void queue_offload(grpc_core::Combiner* lock) {
207
177
  GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED();
208
178
  move_next();
209
179
  GRPC_COMBINER_TRACE(gpr_log(GPR_INFO, "C:%p queue_offload", lock));
@@ -212,7 +182,7 @@ static void queue_offload(grpc_combiner* lock) {
212
182
 
213
183
  bool grpc_combiner_continue_exec_ctx() {
214
184
  GPR_TIMER_SCOPE("combiner.continue_exec_ctx", 0);
215
- grpc_combiner* lock =
185
+ grpc_core::Combiner* lock =
216
186
  grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
217
187
  if (lock == nullptr) {
218
188
  return false;
@@ -249,7 +219,7 @@ bool grpc_combiner_continue_exec_ctx() {
249
219
  // peek to see if something new has shown up, and execute that with
250
220
  // priority
251
221
  (gpr_atm_acq_load(&lock->state) >> 1) > 1) {
252
- gpr_mpscq_node* n = gpr_mpscq_pop(&lock->queue);
222
+ grpc_core::MultiProducerSingleConsumerQueue::Node* n = lock->queue.Pop();
253
223
  GRPC_COMBINER_TRACE(
254
224
  gpr_log(GPR_INFO, "C:%p maybe_finish_one n=%p", lock, n));
255
225
  if (n == nullptr) {
@@ -330,19 +300,20 @@ bool grpc_combiner_continue_exec_ctx() {
330
300
 
331
301
  static void enqueue_finally(void* closure, grpc_error* error);
332
302
 
333
- static void combiner_finally_exec(grpc_closure* closure, grpc_error* error) {
303
+ static void combiner_finally_exec(grpc_core::Combiner* lock,
304
+ grpc_closure* closure, grpc_error* error) {
305
+ GPR_ASSERT(lock != nullptr);
334
306
  GPR_TIMER_SCOPE("combiner.execute_finally", 0);
335
307
  GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS();
336
- grpc_combiner* lock =
337
- COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler);
338
308
  GRPC_COMBINER_TRACE(gpr_log(
339
309
  GPR_INFO, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock, closure,
340
310
  grpc_core::ExecCtx::Get()->combiner_data()->active_combiner));
341
311
  if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner != lock) {
342
312
  GPR_TIMER_MARK("slowpath", 0);
343
- GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(enqueue_finally, closure,
344
- grpc_combiner_scheduler(lock)),
345
- error);
313
+ // Reusing scheduler to store the combiner so that it can be accessed in
314
+ // enqueue_finally
315
+ closure->scheduler = reinterpret_cast<grpc_closure_scheduler*>(lock);
316
+ lock->Run(GRPC_CLOSURE_CREATE(enqueue_finally, closure, nullptr), error);
346
317
  return;
347
318
  }
348
319
 
@@ -352,32 +323,24 @@ static void combiner_finally_exec(grpc_closure* closure, grpc_error* error) {
352
323
  grpc_closure_list_append(&lock->final_list, closure, error);
353
324
  }
354
325
 
355
- static void combiner_run(grpc_closure* closure, grpc_error* error) {
356
- grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(closure, scheduler);
357
- #ifndef NDEBUG
358
- closure->scheduled = false;
359
- GRPC_COMBINER_TRACE(gpr_log(
360
- GPR_DEBUG,
361
- "Combiner:%p grpc_combiner_run closure:%p created [%s:%d] run [%s:%d]",
362
- lock, closure, closure->file_created, closure->line_created,
363
- closure->file_initiated, closure->line_initiated));
364
- #endif
365
- GPR_ASSERT(grpc_core::ExecCtx::Get()->combiner_data()->active_combiner ==
366
- lock);
367
- closure->cb(closure->cb_arg, error);
368
- GRPC_ERROR_UNREF(error);
369
- }
370
-
371
326
  static void enqueue_finally(void* closure, grpc_error* error) {
372
- combiner_finally_exec(static_cast<grpc_closure*>(closure),
373
- GRPC_ERROR_REF(error));
327
+ grpc_closure* cl = static_cast<grpc_closure*>(closure);
328
+ combiner_finally_exec(reinterpret_cast<grpc_core::Combiner*>(cl->scheduler),
329
+ cl, GRPC_ERROR_REF(error));
374
330
  }
375
331
 
376
- grpc_closure_scheduler* grpc_combiner_scheduler(grpc_combiner* combiner) {
377
- return &combiner->scheduler;
332
+ namespace grpc_core {
333
+ void Combiner::Run(grpc_closure* closure, grpc_error* error) {
334
+ GPR_ASSERT(closure->scheduler == nullptr ||
335
+ closure->scheduler ==
336
+ reinterpret_cast<grpc_closure_scheduler*>(this));
337
+ combiner_exec(this, closure, error);
378
338
  }
379
339
 
380
- grpc_closure_scheduler* grpc_combiner_finally_scheduler(
381
- grpc_combiner* combiner) {
382
- return &combiner->finally_scheduler;
340
+ void Combiner::FinallyRun(grpc_closure* closure, grpc_error* error) {
341
+ GPR_ASSERT(closure->scheduler == nullptr ||
342
+ closure->scheduler ==
343
+ reinterpret_cast<grpc_closure_scheduler*>(this));
344
+ combiner_finally_exec(this, closure, error);
383
345
  }
346
+ } // namespace grpc_core