grpc 1.9.1 → 1.10.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 (637) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2654 -953
  3. data/etc/roots.pem +282 -683
  4. data/include/grpc/compression.h +9 -26
  5. data/include/grpc/grpc.h +10 -24
  6. data/include/grpc/grpc_security.h +7 -1
  7. data/include/grpc/impl/codegen/compression_types.h +5 -62
  8. data/include/grpc/impl/codegen/grpc_types.h +10 -6
  9. data/include/grpc/module.modulemap +1 -10
  10. data/include/grpc/support/alloc.h +3 -2
  11. data/include/grpc/support/log.h +1 -2
  12. data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
  13. data/src/boringssl/err_data.c +550 -496
  14. data/src/core/ext/census/grpc_context.cc +2 -1
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
  16. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
  17. data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
  18. data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
  20. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
  21. data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
  22. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
  23. data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
  30. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
  31. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
  32. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
  34. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
  35. data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
  36. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
  37. data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
  38. data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
  39. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver.cc +6 -52
  41. data/src/core/ext/filters/client_channel/resolver.h +98 -55
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
  48. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
  49. data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
  50. data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
  51. data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
  52. data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
  53. data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
  54. data/src/core/ext/filters/client_channel/subchannel.h +38 -45
  55. data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
  56. data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
  57. data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
  58. data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
  59. data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
  60. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
  61. data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
  62. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
  63. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
  64. data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
  65. data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
  66. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
  67. data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
  68. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  69. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
  70. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
  71. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
  72. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
  73. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
  74. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
  75. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
  76. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
  77. data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
  78. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
  79. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
  80. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
  81. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
  82. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
  83. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  84. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
  85. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
  87. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
  88. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
  89. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  90. data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
  91. data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
  92. data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
  93. data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
  94. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
  95. data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
  96. data/src/core/lib/{gpr → avl}/avl.cc +61 -57
  97. data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
  98. data/src/core/lib/backoff/backoff.cc +6 -5
  99. data/src/core/lib/channel/channel_args.cc +23 -109
  100. data/src/core/lib/channel/channel_args.h +5 -31
  101. data/src/core/lib/channel/channel_stack.cc +11 -8
  102. data/src/core/lib/channel/channel_stack_builder.cc +10 -7
  103. data/src/core/lib/channel/connected_channel.cc +18 -17
  104. data/src/core/lib/channel/handshaker.cc +8 -8
  105. data/src/core/lib/channel/handshaker_registry.cc +3 -2
  106. data/src/core/lib/compression/algorithm_metadata.h +13 -6
  107. data/src/core/lib/compression/compression.cc +72 -183
  108. data/src/core/lib/compression/compression_internal.cc +274 -0
  109. data/src/core/lib/compression/compression_internal.h +86 -0
  110. data/src/core/lib/compression/message_compress.cc +15 -15
  111. data/src/core/lib/compression/message_compress.h +4 -3
  112. data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
  113. data/src/core/lib/compression/stream_compression_identity.cc +1 -1
  114. data/src/core/lib/debug/stats.cc +10 -8
  115. data/src/core/lib/debug/stats_data.cc +2 -1
  116. data/src/core/lib/debug/trace.cc +3 -3
  117. data/src/core/lib/gpr/alloc.cc +7 -11
  118. data/src/core/lib/gpr/arena.cc +34 -12
  119. data/src/core/lib/gpr/atm.cc +2 -1
  120. data/src/core/lib/gpr/cpu_linux.cc +3 -3
  121. data/src/core/lib/gpr/cpu_posix.cc +2 -1
  122. data/src/core/lib/gpr/env.h +1 -1
  123. data/src/core/lib/gpr/env_linux.cc +1 -1
  124. data/src/core/lib/gpr/env_windows.cc +4 -4
  125. data/src/core/lib/gpr/fork.cc +16 -2
  126. data/src/core/lib/gpr/host_port.cc +5 -4
  127. data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
  128. data/src/core/lib/gpr/log.cc +5 -4
  129. data/src/core/lib/gpr/log_linux.cc +1 -1
  130. data/src/core/lib/gpr/mpscq.cc +1 -0
  131. data/src/core/lib/gpr/murmur_hash.cc +4 -4
  132. data/src/core/lib/gpr/string.cc +19 -16
  133. data/src/core/lib/gpr/string_posix.cc +3 -3
  134. data/src/core/lib/gpr/sync_posix.cc +5 -9
  135. data/src/core/lib/gpr/thd.cc +3 -3
  136. data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
  137. data/src/core/lib/gpr/thd_posix.cc +6 -4
  138. data/src/core/lib/gpr/thd_windows.cc +3 -1
  139. data/src/core/lib/gpr/time.cc +6 -4
  140. data/src/core/lib/gpr/time_posix.cc +2 -2
  141. data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
  142. data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
  143. data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
  144. data/src/core/lib/gpr/tls_pthread.cc +1 -1
  145. data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
  146. data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
  147. data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
  148. data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
  149. data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
  150. data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
  151. data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
  152. data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
  153. data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
  154. data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
  155. data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
  156. data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
  157. data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
  158. data/src/core/lib/http/format_request.cc +3 -3
  159. data/src/core/lib/http/httpcli.cc +6 -7
  160. data/src/core/lib/http/httpcli_security_connector.cc +10 -10
  161. data/src/core/lib/http/parser.cc +16 -12
  162. data/src/core/lib/iomgr/call_combiner.cc +12 -13
  163. data/src/core/lib/iomgr/closure.h +4 -6
  164. data/src/core/lib/iomgr/combiner.cc +10 -21
  165. data/src/core/lib/iomgr/error.cc +50 -55
  166. data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
  167. data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
  168. data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
  169. data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
  170. data/src/core/lib/iomgr/ev_posix.cc +47 -6
  171. data/src/core/lib/iomgr/exec_ctx.cc +10 -10
  172. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  173. data/src/core/lib/iomgr/executor.cc +16 -13
  174. data/src/core/lib/iomgr/fork_posix.cc +1 -3
  175. data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
  176. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  177. data/src/core/lib/iomgr/iomgr.cc +2 -2
  178. data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
  179. data/src/core/lib/iomgr/iomgr_uv.h +1 -1
  180. data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
  181. data/src/core/lib/iomgr/load_file.cc +3 -3
  182. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  183. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
  184. data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
  185. data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
  186. data/src/core/lib/iomgr/resource_quota.cc +36 -34
  187. data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
  188. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  189. data/src/core/lib/iomgr/socket_mutator.cc +7 -7
  190. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
  191. data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
  192. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
  193. data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
  194. data/src/core/lib/iomgr/tcp_posix.cc +47 -55
  195. data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
  196. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
  197. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
  198. data/src/core/lib/iomgr/tcp_windows.cc +1 -1
  199. data/src/core/lib/iomgr/timer_generic.cc +16 -14
  200. data/src/core/lib/iomgr/timer_heap.cc +8 -7
  201. data/src/core/lib/iomgr/timer_manager.cc +4 -3
  202. data/src/core/lib/iomgr/udp_server.cc +24 -16
  203. data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
  204. data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
  205. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
  206. data/src/core/lib/json/json.cc +1 -1
  207. data/src/core/lib/json/json_reader.cc +8 -6
  208. data/src/core/lib/json/json_string.cc +19 -18
  209. data/src/core/lib/json/json_writer.cc +10 -8
  210. data/src/core/lib/profiling/basic_timers.cc +1 -1
  211. data/src/core/lib/profiling/timers.h +3 -20
  212. data/src/core/lib/security/context/security_context.cc +16 -14
  213. data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
  214. data/src/core/lib/security/credentials/credentials.cc +9 -8
  215. data/src/core/lib/security/credentials/credentials.h +1 -1
  216. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
  217. data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
  218. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
  219. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
  220. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
  221. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
  222. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
  223. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
  224. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
  225. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
  226. data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
  227. data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
  228. data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
  229. data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
  230. data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
  231. data/src/core/lib/security/transport/security_handshaker.cc +19 -18
  232. data/src/core/lib/security/transport/security_handshaker.h +1 -1
  233. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  234. data/src/core/lib/slice/b64.cc +19 -16
  235. data/src/core/lib/slice/percent_encoding.cc +5 -5
  236. data/src/core/lib/slice/slice.cc +35 -33
  237. data/src/core/lib/slice/slice_buffer.cc +16 -14
  238. data/src/core/lib/slice/slice_hash_table.cc +3 -2
  239. data/src/core/lib/slice/slice_intern.cc +21 -25
  240. data/src/core/lib/slice/slice_string_helpers.cc +45 -9
  241. data/src/core/lib/slice/slice_string_helpers.h +6 -0
  242. data/src/core/lib/surface/byte_buffer.cc +2 -2
  243. data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
  244. data/src/core/lib/surface/call.cc +171 -260
  245. data/src/core/lib/surface/call_test_only.h +1 -13
  246. data/src/core/lib/surface/channel.cc +20 -43
  247. data/src/core/lib/surface/channel_init.cc +7 -7
  248. data/src/core/lib/surface/channel_ping.cc +2 -2
  249. data/src/core/lib/surface/completion_queue.cc +69 -75
  250. data/src/core/lib/surface/init.cc +4 -5
  251. data/src/core/lib/surface/init_secure.cc +1 -1
  252. data/src/core/lib/surface/lame_client.cc +1 -1
  253. data/src/core/lib/surface/server.cc +64 -59
  254. data/src/core/lib/surface/version.cc +2 -2
  255. data/src/core/lib/transport/bdp_estimator.cc +6 -5
  256. data/src/core/lib/transport/byte_stream.cc +23 -14
  257. data/src/core/lib/transport/byte_stream.h +1 -1
  258. data/src/core/lib/transport/connectivity_state.cc +9 -13
  259. data/src/core/lib/transport/error_utils.cc +10 -7
  260. data/src/core/lib/transport/metadata.cc +27 -26
  261. data/src/core/lib/transport/metadata.h +1 -1
  262. data/src/core/lib/transport/pid_controller.cc +2 -1
  263. data/src/core/lib/transport/service_config.cc +5 -5
  264. data/src/core/lib/transport/static_metadata.cc +225 -222
  265. data/src/core/lib/transport/static_metadata.h +77 -76
  266. data/src/core/lib/transport/timeout_encoding.cc +3 -2
  267. data/src/core/lib/transport/transport.cc +6 -5
  268. data/src/core/lib/transport/transport_op_string.cc +0 -1
  269. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  270. data/src/core/tsi/alts_transport_security.cc +61 -0
  271. data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
  272. data/src/core/tsi/fake_transport_security.cc +59 -43
  273. data/src/core/tsi/ssl_transport_security.cc +122 -107
  274. data/src/core/tsi/transport_security.cc +3 -3
  275. data/src/core/tsi/transport_security_adapter.cc +16 -10
  276. data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
  277. data/src/ruby/ext/grpc/rb_channel.c +3 -4
  278. data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
  279. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
  280. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
  281. data/src/ruby/ext/grpc/rb_server.c +52 -28
  282. data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
  283. data/src/ruby/lib/grpc/version.rb +1 -1
  284. data/src/ruby/pb/test/client.rb +1 -1
  285. data/src/ruby/pb/test/server.rb +1 -1
  286. data/src/ruby/spec/client_server_spec.rb +4 -2
  287. data/src/ruby/spec/generic/active_call_spec.rb +2 -1
  288. data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
  289. data/src/ruby/spec/server_spec.rb +26 -7
  290. data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
  291. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
  292. data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
  293. data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
  294. data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
  295. data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
  296. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
  297. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
  298. data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
  299. data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
  300. data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
  301. data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
  302. data/third_party/boringssl/crypto/base64/base64.c +65 -43
  303. data/third_party/boringssl/crypto/bio/bio.c +134 -110
  304. data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
  305. data/third_party/boringssl/crypto/bio/connect.c +17 -17
  306. data/third_party/boringssl/crypto/bio/fd.c +2 -1
  307. data/third_party/boringssl/crypto/bio/file.c +14 -14
  308. data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
  309. data/third_party/boringssl/crypto/bio/internal.h +14 -14
  310. data/third_party/boringssl/crypto/bio/pair.c +45 -45
  311. data/third_party/boringssl/crypto/bio/printf.c +6 -10
  312. data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
  313. data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
  314. data/third_party/boringssl/crypto/buf/buf.c +20 -44
  315. data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
  316. data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
  317. data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
  318. data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
  319. data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
  320. data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
  321. data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
  322. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
  323. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
  324. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
  325. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
  326. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
  327. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
  328. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
  329. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
  330. data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
  331. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
  332. data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
  333. data/third_party/boringssl/crypto/conf/conf.c +32 -20
  334. data/third_party/boringssl/crypto/conf/internal.h +3 -3
  335. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
  336. data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
  337. data/third_party/boringssl/crypto/cpu-intel.c +68 -43
  338. data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
  339. data/third_party/boringssl/crypto/crypto.c +54 -32
  340. data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
  341. data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
  342. data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
  343. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
  344. data/third_party/boringssl/crypto/dh/check.c +33 -34
  345. data/third_party/boringssl/crypto/dh/dh.c +72 -36
  346. data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
  347. data/third_party/boringssl/crypto/dh/params.c +1 -161
  348. data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
  349. data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
  350. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
  351. data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
  352. data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
  353. data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
  354. data/third_party/boringssl/crypto/engine/engine.c +6 -6
  355. data/third_party/boringssl/crypto/err/err.c +197 -106
  356. data/third_party/boringssl/crypto/err/internal.h +58 -0
  357. data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
  358. data/third_party/boringssl/crypto/evp/evp.c +6 -11
  359. data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
  360. data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
  361. data/third_party/boringssl/crypto/evp/internal.h +66 -51
  362. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
  363. data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
  364. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
  365. data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
  366. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
  367. data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
  368. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
  369. data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
  370. data/third_party/boringssl/crypto/evp/print.c +5 -36
  371. data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
  372. data/third_party/boringssl/crypto/ex_data.c +15 -45
  373. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
  374. data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
  375. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
  376. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
  377. data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
  378. data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
  379. data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
  380. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
  381. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
  382. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
  383. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
  384. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
  385. data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
  386. data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
  387. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
  388. data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
  389. data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
  390. data/third_party/boringssl/crypto/internal.h +301 -233
  391. data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
  392. data/third_party/boringssl/crypto/mem.c +76 -33
  393. data/third_party/boringssl/crypto/obj/obj.c +44 -28
  394. data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
  395. data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
  396. data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
  397. data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
  398. data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
  399. data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
  400. data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
  401. data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
  402. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
  403. data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
  404. data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
  405. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
  406. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
  407. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
  408. data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
  409. data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
  410. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
  411. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
  412. data/third_party/boringssl/crypto/pool/internal.h +2 -2
  413. data/third_party/boringssl/crypto/pool/pool.c +15 -15
  414. data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
  415. data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
  416. data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
  417. data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
  418. data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
  419. data/third_party/boringssl/crypto/refcount_c11.c +2 -2
  420. data/third_party/boringssl/crypto/refcount_lock.c +1 -1
  421. data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
  422. data/third_party/boringssl/crypto/stack/stack.c +13 -13
  423. data/third_party/boringssl/crypto/thread_none.c +1 -1
  424. data/third_party/boringssl/crypto/thread_pthread.c +1 -1
  425. data/third_party/boringssl/crypto/thread_win.c +40 -40
  426. data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
  427. data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
  428. data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
  429. data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
  430. data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
  431. data/third_party/boringssl/crypto/x509/by_file.c +2 -2
  432. data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
  433. data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
  434. data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
  435. data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
  436. data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
  437. data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
  438. data/third_party/boringssl/crypto/x509/x_name.c +13 -16
  439. data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
  440. data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
  441. data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
  442. data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
  443. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
  444. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
  445. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
  446. data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
  447. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
  448. data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
  449. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
  450. data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
  451. data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
  452. data/third_party/boringssl/include/openssl/aead.h +280 -191
  453. data/third_party/boringssl/include/openssl/aes.h +50 -50
  454. data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
  455. data/third_party/boringssl/include/openssl/asn1.h +14 -77
  456. data/third_party/boringssl/include/openssl/asn1t.h +11 -15
  457. data/third_party/boringssl/include/openssl/base.h +78 -51
  458. data/third_party/boringssl/include/openssl/base64.h +68 -68
  459. data/third_party/boringssl/include/openssl/bio.h +472 -406
  460. data/third_party/boringssl/include/openssl/blowfish.h +1 -1
  461. data/third_party/boringssl/include/openssl/bn.h +454 -435
  462. data/third_party/boringssl/include/openssl/buf.h +27 -27
  463. data/third_party/boringssl/include/openssl/bytestring.h +282 -267
  464. data/third_party/boringssl/include/openssl/cast.h +2 -2
  465. data/third_party/boringssl/include/openssl/chacha.h +5 -5
  466. data/third_party/boringssl/include/openssl/cipher.h +209 -200
  467. data/third_party/boringssl/include/openssl/cmac.h +27 -27
  468. data/third_party/boringssl/include/openssl/conf.h +49 -46
  469. data/third_party/boringssl/include/openssl/cpu.h +60 -45
  470. data/third_party/boringssl/include/openssl/crypto.h +59 -35
  471. data/third_party/boringssl/include/openssl/curve25519.h +97 -92
  472. data/third_party/boringssl/include/openssl/des.h +25 -25
  473. data/third_party/boringssl/include/openssl/dh.h +98 -97
  474. data/third_party/boringssl/include/openssl/digest.h +143 -114
  475. data/third_party/boringssl/include/openssl/dsa.h +217 -202
  476. data/third_party/boringssl/include/openssl/ec.h +132 -131
  477. data/third_party/boringssl/include/openssl/ec_key.h +132 -128
  478. data/third_party/boringssl/include/openssl/ecdh.h +9 -9
  479. data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
  480. data/third_party/boringssl/include/openssl/engine.h +38 -38
  481. data/third_party/boringssl/include/openssl/err.h +189 -219
  482. data/third_party/boringssl/include/openssl/evp.h +473 -397
  483. data/third_party/boringssl/include/openssl/ex_data.h +46 -56
  484. data/third_party/boringssl/include/openssl/hkdf.h +17 -17
  485. data/third_party/boringssl/include/openssl/hmac.h +55 -43
  486. data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  487. data/third_party/boringssl/include/openssl/lhash.h +67 -67
  488. data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
  489. data/third_party/boringssl/include/openssl/md4.h +14 -14
  490. data/third_party/boringssl/include/openssl/md5.h +14 -14
  491. data/third_party/boringssl/include/openssl/mem.h +39 -33
  492. data/third_party/boringssl/include/openssl/nid.h +43 -0
  493. data/third_party/boringssl/include/openssl/obj.h +93 -87
  494. data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
  495. data/third_party/boringssl/include/openssl/pem.h +2 -122
  496. data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
  497. data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
  498. data/third_party/boringssl/include/openssl/poly1305.h +11 -11
  499. data/third_party/boringssl/include/openssl/pool.h +29 -25
  500. data/third_party/boringssl/include/openssl/rand.h +48 -45
  501. data/third_party/boringssl/include/openssl/rc4.h +9 -9
  502. data/third_party/boringssl/include/openssl/ripemd.h +13 -13
  503. data/third_party/boringssl/include/openssl/rsa.h +371 -340
  504. data/third_party/boringssl/include/openssl/sha.h +71 -71
  505. data/third_party/boringssl/include/openssl/span.h +191 -0
  506. data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
  507. data/third_party/boringssl/include/openssl/ssl3.h +39 -122
  508. data/third_party/boringssl/include/openssl/stack.h +355 -164
  509. data/third_party/boringssl/include/openssl/thread.h +43 -43
  510. data/third_party/boringssl/include/openssl/tls1.h +60 -63
  511. data/third_party/boringssl/include/openssl/type_check.h +10 -14
  512. data/third_party/boringssl/include/openssl/x509.h +41 -116
  513. data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
  514. data/third_party/boringssl/include/openssl/x509v3.h +27 -21
  515. data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
  516. data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
  517. data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
  518. data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
  519. data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
  520. data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
  521. data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
  522. data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
  523. data/third_party/boringssl/ssl/handshake.cc +547 -0
  524. data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
  525. data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
  526. data/third_party/boringssl/ssl/internal.h +2027 -1280
  527. data/third_party/boringssl/ssl/s3_both.cc +603 -0
  528. data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
  529. data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
  530. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
  531. data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
  532. data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
  533. data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
  534. data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
  535. data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
  536. data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
  537. data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
  538. data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
  539. data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
  540. data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
  541. data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
  542. data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
  543. data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
  544. data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
  545. data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
  546. data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
  547. data/third_party/boringssl/ssl/tls13_client.cc +842 -0
  548. data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
  549. data/third_party/boringssl/ssl/tls13_server.cc +967 -0
  550. data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
  551. data/third_party/boringssl/ssl/tls_record.cc +675 -0
  552. metadata +117 -168
  553. data/include/grpc/support/cmdline.h +0 -88
  554. data/include/grpc/support/subprocess.h +0 -44
  555. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
  556. data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
  557. data/src/core/lib/gpr/cmdline.cc +0 -330
  558. data/src/core/lib/gpr/subprocess_posix.cc +0 -99
  559. data/src/core/lib/gpr/subprocess_windows.cc +0 -126
  560. data/src/core/lib/surface/alarm.cc +0 -137
  561. data/src/core/lib/surface/alarm_internal.h +0 -40
  562. data/src/core/tsi/gts_transport_security.cc +0 -40
  563. data/third_party/boringssl/crypto/aes/aes.c +0 -1142
  564. data/third_party/boringssl/crypto/aes/internal.h +0 -87
  565. data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
  566. data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
  567. data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
  568. data/third_party/boringssl/crypto/bn/add.c +0 -377
  569. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
  570. data/third_party/boringssl/crypto/bn/bn.c +0 -365
  571. data/third_party/boringssl/crypto/bn/cmp.c +0 -239
  572. data/third_party/boringssl/crypto/bn/ctx.c +0 -313
  573. data/third_party/boringssl/crypto/bn/div.c +0 -728
  574. data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
  575. data/third_party/boringssl/crypto/bn/gcd.c +0 -635
  576. data/third_party/boringssl/crypto/bn/generic.c +0 -707
  577. data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
  578. data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
  579. data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
  580. data/third_party/boringssl/crypto/bn/mul.c +0 -871
  581. data/third_party/boringssl/crypto/bn/prime.c +0 -861
  582. data/third_party/boringssl/crypto/bn/random.c +0 -343
  583. data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
  584. data/third_party/boringssl/crypto/bn/shift.c +0 -307
  585. data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
  586. data/third_party/boringssl/crypto/cipher/aead.c +0 -156
  587. data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
  588. data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
  589. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
  590. data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
  591. data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
  592. data/third_party/boringssl/crypto/des/des.c +0 -771
  593. data/third_party/boringssl/crypto/digest/digest.c +0 -251
  594. data/third_party/boringssl/crypto/digest/digests.c +0 -358
  595. data/third_party/boringssl/crypto/ec/ec.c +0 -847
  596. data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
  597. data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
  598. data/third_party/boringssl/crypto/ec/oct.c +0 -416
  599. data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
  600. data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
  601. data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
  602. data/third_party/boringssl/crypto/ec/simple.c +0 -1118
  603. data/third_party/boringssl/crypto/ec/util-64.c +0 -109
  604. data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
  605. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
  606. data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
  607. data/third_party/boringssl/crypto/md4/md4.c +0 -236
  608. data/third_party/boringssl/crypto/md5/md5.c +0 -285
  609. data/third_party/boringssl/crypto/modes/cbc.c +0 -212
  610. data/third_party/boringssl/crypto/modes/cfb.c +0 -230
  611. data/third_party/boringssl/crypto/modes/ctr.c +0 -219
  612. data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
  613. data/third_party/boringssl/crypto/modes/ofb.c +0 -95
  614. data/third_party/boringssl/crypto/modes/polyval.c +0 -94
  615. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
  616. data/third_party/boringssl/crypto/rand/rand.c +0 -244
  617. data/third_party/boringssl/crypto/rand/urandom.c +0 -335
  618. data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
  619. data/third_party/boringssl/crypto/rsa/padding.c +0 -708
  620. data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
  621. data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
  622. data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
  623. data/third_party/boringssl/crypto/sha/sha1.c +0 -355
  624. data/third_party/boringssl/crypto/sha/sha256.c +0 -329
  625. data/third_party/boringssl/crypto/sha/sha512.c +0 -609
  626. data/third_party/boringssl/crypto/x509/x509type.c +0 -126
  627. data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
  628. data/third_party/boringssl/ssl/handshake_client.c +0 -1883
  629. data/third_party/boringssl/ssl/handshake_server.c +0 -1950
  630. data/third_party/boringssl/ssl/s3_both.c +0 -895
  631. data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
  632. data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
  633. data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
  634. data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
  635. data/third_party/boringssl/ssl/tls13_client.c +0 -712
  636. data/third_party/boringssl/ssl/tls13_server.c +0 -680
  637. data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -28,7 +28,6 @@
28
28
  #include <grpc/support/log.h>
29
29
  #include <grpc/support/string_util.h>
30
30
  #include <grpc/support/time.h>
31
- #include <grpc/support/useful.h>
32
31
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
33
32
  #include "src/core/lib/gpr/string.h"
34
33
  #include "src/core/lib/iomgr/ev_posix.h"
@@ -125,7 +124,8 @@ static void fd_node_shutdown(fd_node* fdn) {
125
124
 
126
125
  grpc_error* grpc_ares_ev_driver_create(grpc_ares_ev_driver** ev_driver,
127
126
  grpc_pollset_set* pollset_set) {
128
- *ev_driver = (grpc_ares_ev_driver*)gpr_malloc(sizeof(grpc_ares_ev_driver));
127
+ *ev_driver = static_cast<grpc_ares_ev_driver*>(
128
+ gpr_malloc(sizeof(grpc_ares_ev_driver)));
129
129
  int status = ares_init(&(*ev_driver)->channel);
130
130
  gpr_log(GPR_DEBUG, "grpc_ares_ev_driver_create");
131
131
  if (status != ARES_SUCCESS) {
@@ -196,7 +196,7 @@ static bool grpc_ares_is_fd_still_readable(grpc_ares_ev_driver* ev_driver,
196
196
  }
197
197
 
198
198
  static void on_readable_cb(void* arg, grpc_error* error) {
199
- fd_node* fdn = (fd_node*)arg;
199
+ fd_node* fdn = static_cast<fd_node*>(arg);
200
200
  grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
201
201
  gpr_mu_lock(&fdn->mu);
202
202
  const int fd = grpc_fd_wrapped_fd(fdn->fd);
@@ -230,7 +230,7 @@ static void on_readable_cb(void* arg, grpc_error* error) {
230
230
  }
231
231
 
232
232
  static void on_writable_cb(void* arg, grpc_error* error) {
233
- fd_node* fdn = (fd_node*)arg;
233
+ fd_node* fdn = static_cast<fd_node*>(arg);
234
234
  grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
235
235
  gpr_mu_lock(&fdn->mu);
236
236
  const int fd = grpc_fd_wrapped_fd(fdn->fd);
@@ -281,7 +281,7 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
281
281
  if (fdn == nullptr) {
282
282
  char* fd_name;
283
283
  gpr_asprintf(&fd_name, "ares_ev_driver-%" PRIuPTR, i);
284
- fdn = (fd_node*)gpr_malloc(sizeof(fd_node));
284
+ fdn = static_cast<fd_node*>(gpr_malloc(sizeof(fd_node)));
285
285
  gpr_log(GPR_DEBUG, "new fd: %d", socks[i]);
286
286
  fdn->fd = grpc_fd_create(socks[i], fd_name);
287
287
  fdn->ev_driver = ev_driver;
@@ -28,14 +28,13 @@
28
28
 
29
29
  #include <ares.h>
30
30
  #include <grpc/support/alloc.h>
31
- #include <grpc/support/host_port.h>
32
31
  #include <grpc/support/log.h>
33
32
  #include <grpc/support/string_util.h>
34
33
  #include <grpc/support/time.h>
35
- #include <grpc/support/useful.h>
36
34
 
37
35
  #include "src/core/ext/filters/client_channel/parse_address.h"
38
36
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
37
+ #include "src/core/lib/gpr/host_port.h"
39
38
  #include "src/core/lib/gpr/string.h"
40
39
  #include "src/core/lib/iomgr/error.h"
41
40
  #include "src/core/lib/iomgr/executor.h"
@@ -89,7 +88,7 @@ static uint16_t strhtons(const char* port) {
89
88
  } else if (strcmp(port, "https") == 0) {
90
89
  return htons(443);
91
90
  }
92
- return htons((unsigned short)atoi(port));
91
+ return htons(static_cast<unsigned short>(atoi(port)));
93
92
  }
94
93
 
95
94
  static void grpc_ares_request_ref(grpc_ares_request* r) {
@@ -111,8 +110,8 @@ static void grpc_ares_request_unref(grpc_ares_request* r) {
111
110
  static grpc_ares_hostbyname_request* create_hostbyname_request(
112
111
  grpc_ares_request* parent_request, char* host, uint16_t port,
113
112
  bool is_balancer) {
114
- grpc_ares_hostbyname_request* hr = (grpc_ares_hostbyname_request*)gpr_zalloc(
115
- sizeof(grpc_ares_hostbyname_request));
113
+ grpc_ares_hostbyname_request* hr = static_cast<grpc_ares_hostbyname_request*>(
114
+ gpr_zalloc(sizeof(grpc_ares_hostbyname_request)));
116
115
  hr->parent_request = parent_request;
117
116
  hr->host = gpr_strdup(host);
118
117
  hr->port = port;
@@ -129,7 +128,8 @@ static void destroy_hostbyname_request(grpc_ares_hostbyname_request* hr) {
129
128
 
130
129
  static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
131
130
  struct hostent* hostent) {
132
- grpc_ares_hostbyname_request* hr = (grpc_ares_hostbyname_request*)arg;
131
+ grpc_ares_hostbyname_request* hr =
132
+ static_cast<grpc_ares_hostbyname_request*>(arg);
133
133
  grpc_ares_request* r = hr->parent_request;
134
134
  gpr_mu_lock(&r->mu);
135
135
  if (status == ARES_SUCCESS) {
@@ -145,9 +145,9 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
145
145
  for (i = 0; hostent->h_addr_list[i] != nullptr; i++) {
146
146
  }
147
147
  (*lb_addresses)->num_addresses += i;
148
- (*lb_addresses)->addresses = (grpc_lb_address*)gpr_realloc(
149
- (*lb_addresses)->addresses,
150
- sizeof(grpc_lb_address) * (*lb_addresses)->num_addresses);
148
+ (*lb_addresses)->addresses = static_cast<grpc_lb_address*>(
149
+ gpr_realloc((*lb_addresses)->addresses,
150
+ sizeof(grpc_lb_address) * (*lb_addresses)->num_addresses));
151
151
  for (i = prev_naddr; i < (*lb_addresses)->num_addresses; i++) {
152
152
  switch (hostent->h_addrtype) {
153
153
  case AF_INET6: {
@@ -156,7 +156,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
156
156
  memset(&addr, 0, addr_len);
157
157
  memcpy(&addr.sin6_addr, hostent->h_addr_list[i - prev_naddr],
158
158
  sizeof(struct in6_addr));
159
- addr.sin6_family = (sa_family_t)hostent->h_addrtype;
159
+ addr.sin6_family = static_cast<sa_family_t>(hostent->h_addrtype);
160
160
  addr.sin6_port = hr->port;
161
161
  grpc_lb_addresses_set_address(
162
162
  *lb_addresses, i, &addr, addr_len,
@@ -177,7 +177,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
177
177
  memset(&addr, 0, addr_len);
178
178
  memcpy(&addr.sin_addr, hostent->h_addr_list[i - prev_naddr],
179
179
  sizeof(struct in_addr));
180
- addr.sin_family = (sa_family_t)hostent->h_addrtype;
180
+ addr.sin_family = static_cast<sa_family_t>(hostent->h_addrtype);
181
181
  addr.sin_port = hr->port;
182
182
  grpc_lb_addresses_set_address(
183
183
  *lb_addresses, i, &addr, addr_len,
@@ -212,7 +212,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
212
212
 
213
213
  static void on_srv_query_done_cb(void* arg, int status, int timeouts,
214
214
  unsigned char* abuf, int alen) {
215
- grpc_ares_request* r = (grpc_ares_request*)arg;
215
+ grpc_ares_request* r = static_cast<grpc_ares_request*>(arg);
216
216
  grpc_core::ExecCtx exec_ctx;
217
217
  gpr_log(GPR_DEBUG, "on_query_srv_done_cb");
218
218
  if (status == ARES_SUCCESS) {
@@ -260,7 +260,7 @@ static void on_txt_done_cb(void* arg, int status, int timeouts,
260
260
  unsigned char* buf, int len) {
261
261
  gpr_log(GPR_DEBUG, "on_txt_done_cb");
262
262
  char* error_msg;
263
- grpc_ares_request* r = (grpc_ares_request*)arg;
263
+ grpc_ares_request* r = static_cast<grpc_ares_request*>(arg);
264
264
  const size_t prefix_len = sizeof(g_service_config_attribute_prefix) - 1;
265
265
  struct ares_txt_ext* result = nullptr;
266
266
  struct ares_txt_ext* reply = nullptr;
@@ -280,13 +280,15 @@ static void on_txt_done_cb(void* arg, int status, int timeouts,
280
280
  // Found a service config record.
281
281
  if (result != nullptr) {
282
282
  size_t service_config_len = result->length - prefix_len;
283
- *r->service_config_json_out = (char*)gpr_malloc(service_config_len + 1);
283
+ *r->service_config_json_out =
284
+ static_cast<char*>(gpr_malloc(service_config_len + 1));
284
285
  memcpy(*r->service_config_json_out, result->txt + prefix_len,
285
286
  service_config_len);
286
287
  for (result = result->next; result != nullptr && !result->record_start;
287
288
  result = result->next) {
288
- *r->service_config_json_out = (char*)gpr_realloc(
289
- *r->service_config_json_out, service_config_len + result->length + 1);
289
+ *r->service_config_json_out = static_cast<char*>(
290
+ gpr_realloc(*r->service_config_json_out,
291
+ service_config_len + result->length + 1));
290
292
  memcpy(*r->service_config_json_out + service_config_len, result->txt,
291
293
  result->length);
292
294
  service_config_len += result->length;
@@ -349,7 +351,7 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
349
351
  error = grpc_ares_ev_driver_create(&ev_driver, interested_parties);
350
352
  if (error != GRPC_ERROR_NONE) goto error_cleanup;
351
353
 
352
- r = (grpc_ares_request*)gpr_zalloc(sizeof(grpc_ares_request));
354
+ r = static_cast<grpc_ares_request*>(gpr_zalloc(sizeof(grpc_ares_request)));
353
355
  gpr_mu_init(&r->mu);
354
356
  r->ev_driver = ev_driver;
355
357
  r->on_done = on_done;
@@ -365,7 +367,7 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
365
367
  grpc_resolved_address addr;
366
368
  if (grpc_parse_ipv4_hostport(dns_server, &addr, false /* log_errors */)) {
367
369
  r->dns_server_addr.family = AF_INET;
368
- struct sockaddr_in* in = (struct sockaddr_in*)addr.addr;
370
+ struct sockaddr_in* in = reinterpret_cast<struct sockaddr_in*>(addr.addr);
369
371
  memcpy(&r->dns_server_addr.addr.addr4, &in->sin_addr,
370
372
  sizeof(struct in_addr));
371
373
  r->dns_server_addr.tcp_port = grpc_sockaddr_get_port(&addr);
@@ -373,7 +375,8 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
373
375
  } else if (grpc_parse_ipv6_hostport(dns_server, &addr,
374
376
  false /* log_errors */)) {
375
377
  r->dns_server_addr.family = AF_INET6;
376
- struct sockaddr_in6* in6 = (struct sockaddr_in6*)addr.addr;
378
+ struct sockaddr_in6* in6 =
379
+ reinterpret_cast<struct sockaddr_in6*>(addr.addr);
377
380
  memcpy(&r->dns_server_addr.addr.addr6, &in6->sin6_addr,
378
381
  sizeof(struct in6_addr));
379
382
  r->dns_server_addr.tcp_port = grpc_sockaddr_get_port(&addr);
@@ -488,16 +491,17 @@ typedef struct grpc_resolve_address_ares_request {
488
491
 
489
492
  static void on_dns_lookup_done_cb(void* arg, grpc_error* error) {
490
493
  grpc_resolve_address_ares_request* r =
491
- (grpc_resolve_address_ares_request*)arg;
494
+ static_cast<grpc_resolve_address_ares_request*>(arg);
492
495
  grpc_resolved_addresses** resolved_addresses = r->addrs_out;
493
496
  if (r->lb_addrs == nullptr || r->lb_addrs->num_addresses == 0) {
494
497
  *resolved_addresses = nullptr;
495
498
  } else {
496
- *resolved_addresses =
497
- (grpc_resolved_addresses*)gpr_zalloc(sizeof(grpc_resolved_addresses));
499
+ *resolved_addresses = static_cast<grpc_resolved_addresses*>(
500
+ gpr_zalloc(sizeof(grpc_resolved_addresses)));
498
501
  (*resolved_addresses)->naddrs = r->lb_addrs->num_addresses;
499
- (*resolved_addresses)->addrs = (grpc_resolved_address*)gpr_zalloc(
500
- sizeof(grpc_resolved_address) * (*resolved_addresses)->naddrs);
502
+ (*resolved_addresses)->addrs =
503
+ static_cast<grpc_resolved_address*>(gpr_zalloc(
504
+ sizeof(grpc_resolved_address) * (*resolved_addresses)->naddrs));
501
505
  for (size_t i = 0; i < (*resolved_addresses)->naddrs; i++) {
502
506
  GPR_ASSERT(!r->lb_addrs->addresses[i].is_balancer);
503
507
  memcpy(&(*resolved_addresses)->addrs[i],
@@ -505,7 +509,7 @@ static void on_dns_lookup_done_cb(void* arg, grpc_error* error) {
505
509
  }
506
510
  }
507
511
  GRPC_CLOSURE_SCHED(r->on_resolve_address_done, GRPC_ERROR_REF(error));
508
- grpc_lb_addresses_destroy(r->lb_addrs);
512
+ if (r->lb_addrs != nullptr) grpc_lb_addresses_destroy(r->lb_addrs);
509
513
  gpr_free(r);
510
514
  }
511
515
 
@@ -515,8 +519,8 @@ static void grpc_resolve_address_ares_impl(const char* name,
515
519
  grpc_closure* on_done,
516
520
  grpc_resolved_addresses** addrs) {
517
521
  grpc_resolve_address_ares_request* r =
518
- (grpc_resolve_address_ares_request*)gpr_zalloc(
519
- sizeof(grpc_resolve_address_ares_request));
522
+ static_cast<grpc_resolve_address_ares_request*>(
523
+ gpr_zalloc(sizeof(grpc_resolve_address_ares_request)));
520
524
  r->addrs_out = addrs;
521
525
  r->on_resolve_address_done = on_done;
522
526
  GRPC_CLOSURE_INIT(&r->on_dns_lookup_done, on_dns_lookup_done_cb, r,
@@ -19,19 +19,21 @@
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
21
  #include <inttypes.h>
22
- #include <string.h>
22
+ #include <climits>
23
+ #include <cstring>
23
24
 
24
25
  #include <grpc/support/alloc.h>
25
- #include <grpc/support/host_port.h>
26
26
  #include <grpc/support/string_util.h>
27
+ #include <grpc/support/time.h>
27
28
 
28
29
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
29
30
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
30
31
  #include "src/core/lib/backoff/backoff.h"
31
32
  #include "src/core/lib/channel/channel_args.h"
32
- #include "src/core/lib/gpr++/manual_constructor.h"
33
33
  #include "src/core/lib/gpr/env.h"
34
+ #include "src/core/lib/gpr/host_port.h"
34
35
  #include "src/core/lib/gpr/string.h"
36
+ #include "src/core/lib/gprpp/manual_constructor.h"
35
37
  #include "src/core/lib/iomgr/combiner.h"
36
38
  #include "src/core/lib/iomgr/resolve_address.h"
37
39
  #include "src/core/lib/iomgr/timer.h"
@@ -41,263 +43,298 @@
41
43
  #define GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS 120
42
44
  #define GRPC_DNS_RECONNECT_JITTER 0.2
43
45
 
44
- typedef struct {
45
- /** base class: must be first */
46
- grpc_resolver base;
47
- /** name to resolve */
48
- char* name_to_resolve;
49
- /** default port to use */
50
- char* default_port;
51
- /** channel args. */
52
- grpc_channel_args* channel_args;
53
- /** pollset_set to drive the name resolution process */
54
- grpc_pollset_set* interested_parties;
55
-
56
- /** are we currently resolving? */
57
- bool resolving;
58
- /** which version of the result have we published? */
59
- int published_version;
60
- /** which version of the result is current? */
61
- int resolved_version;
62
- /** pending next completion, or NULL */
63
- grpc_closure* next_completion;
64
- /** target result address for next completion */
65
- grpc_channel_args** target_result;
66
- /** current (fully resolved) result */
67
- grpc_channel_args* resolved_result;
68
- /** retry timer */
69
- bool have_retry_timer;
70
- grpc_timer retry_timer;
71
- grpc_closure on_retry;
72
- /** retry backoff state */
73
- grpc_core::ManualConstructor<grpc_core::BackOff> backoff;
74
-
75
- /** currently resolving addresses */
76
- grpc_resolved_addresses* addresses;
77
- } dns_resolver;
78
-
79
- static void dns_destroy(grpc_resolver* r);
80
-
81
- static void dns_start_resolving_locked(dns_resolver* r);
82
- static void dns_maybe_finish_next_locked(dns_resolver* r);
83
-
84
- static void dns_shutdown_locked(grpc_resolver* r);
85
- static void dns_channel_saw_error_locked(grpc_resolver* r);
86
- static void dns_next_locked(grpc_resolver* r, grpc_channel_args** target_result,
87
- grpc_closure* on_complete);
88
-
89
- static const grpc_resolver_vtable dns_resolver_vtable = {
90
- dns_destroy, dns_shutdown_locked, dns_channel_saw_error_locked,
91
- dns_next_locked};
92
-
93
- static void dns_shutdown_locked(grpc_resolver* resolver) {
94
- dns_resolver* r = (dns_resolver*)resolver;
95
- if (r->have_retry_timer) {
96
- grpc_timer_cancel(&r->retry_timer);
97
- }
98
- if (r->next_completion != nullptr) {
99
- *r->target_result = nullptr;
100
- GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
101
- "Resolver Shutdown"));
102
- r->next_completion = nullptr;
46
+ namespace grpc_core {
47
+
48
+ namespace {
49
+
50
+ const char kDefaultPort[] = "https";
51
+
52
+ class NativeDnsResolver : public Resolver {
53
+ public:
54
+ explicit NativeDnsResolver(const ResolverArgs& args);
55
+
56
+ void NextLocked(grpc_channel_args** result,
57
+ grpc_closure* on_complete) override;
58
+
59
+ void RequestReresolutionLocked() override;
60
+
61
+ void ShutdownLocked() override;
62
+
63
+ private:
64
+ virtual ~NativeDnsResolver();
65
+
66
+ void MaybeStartResolvingLocked();
67
+ void StartResolvingLocked();
68
+ void MaybeFinishNextLocked();
69
+
70
+ static void OnNextResolutionLocked(void* arg, grpc_error* error);
71
+ static void OnResolvedLocked(void* arg, grpc_error* error);
72
+
73
+ /// name to resolve
74
+ char* name_to_resolve_ = nullptr;
75
+ /// channel args
76
+ grpc_channel_args* channel_args_ = nullptr;
77
+ /// pollset_set to drive the name resolution process
78
+ grpc_pollset_set* interested_parties_ = nullptr;
79
+ /// are we currently resolving?
80
+ bool resolving_ = false;
81
+ grpc_closure on_resolved_;
82
+ /// which version of the result have we published?
83
+ int published_version_ = 0;
84
+ /// which version of the result is current?
85
+ int resolved_version_ = 0;
86
+ /// pending next completion, or nullptr
87
+ grpc_closure* next_completion_ = nullptr;
88
+ /// target result address for next completion
89
+ grpc_channel_args** target_result_ = nullptr;
90
+ /// current (fully resolved) result
91
+ grpc_channel_args* resolved_result_ = nullptr;
92
+ /// next resolution timer
93
+ bool have_next_resolution_timer_ = false;
94
+ grpc_timer next_resolution_timer_;
95
+ grpc_closure on_next_resolution_;
96
+ /// min time between DNS requests
97
+ grpc_millis min_time_between_resolutions_;
98
+ /// timestamp of last DNS request
99
+ grpc_millis last_resolution_timestamp_ = -1;
100
+ /// retry backoff state
101
+ BackOff backoff_;
102
+ /// currently resolving addresses
103
+ grpc_resolved_addresses* addresses_ = nullptr;
104
+ };
105
+
106
+ NativeDnsResolver::NativeDnsResolver(const ResolverArgs& args)
107
+ : Resolver(args.combiner),
108
+ backoff_(
109
+ BackOff::Options()
110
+ .set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS *
111
+ 1000)
112
+ .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
113
+ .set_jitter(GRPC_DNS_RECONNECT_JITTER)
114
+ .set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
115
+ char* path = args.uri->path;
116
+ if (path[0] == '/') ++path;
117
+ name_to_resolve_ = gpr_strdup(path);
118
+ channel_args_ = grpc_channel_args_copy(args.args);
119
+ const grpc_arg* arg = grpc_channel_args_find(
120
+ args.args, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS);
121
+ min_time_between_resolutions_ =
122
+ grpc_channel_arg_get_integer(arg, {1000, 0, INT_MAX});
123
+ interested_parties_ = grpc_pollset_set_create();
124
+ if (args.pollset_set != nullptr) {
125
+ grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
103
126
  }
127
+ GRPC_CLOSURE_INIT(&on_next_resolution_,
128
+ NativeDnsResolver::OnNextResolutionLocked, this,
129
+ grpc_combiner_scheduler(args.combiner));
130
+ GRPC_CLOSURE_INIT(&on_resolved_, NativeDnsResolver::OnResolvedLocked, this,
131
+ grpc_combiner_scheduler(args.combiner));
104
132
  }
105
133
 
106
- static void dns_channel_saw_error_locked(grpc_resolver* resolver) {
107
- dns_resolver* r = (dns_resolver*)resolver;
108
- if (!r->resolving) {
109
- r->backoff->Reset();
110
- dns_start_resolving_locked(r);
134
+ NativeDnsResolver::~NativeDnsResolver() {
135
+ if (resolved_result_ != nullptr) {
136
+ grpc_channel_args_destroy(resolved_result_);
111
137
  }
138
+ grpc_pollset_set_destroy(interested_parties_);
139
+ gpr_free(name_to_resolve_);
140
+ grpc_channel_args_destroy(channel_args_);
112
141
  }
113
142
 
114
- static void dns_next_locked(grpc_resolver* resolver,
115
- grpc_channel_args** target_result,
116
- grpc_closure* on_complete) {
117
- dns_resolver* r = (dns_resolver*)resolver;
118
- GPR_ASSERT(!r->next_completion);
119
- r->next_completion = on_complete;
120
- r->target_result = target_result;
121
- if (r->resolved_version == 0 && !r->resolving) {
122
- r->backoff->Reset();
123
- dns_start_resolving_locked(r);
143
+ void NativeDnsResolver::NextLocked(grpc_channel_args** result,
144
+ grpc_closure* on_complete) {
145
+ GPR_ASSERT(next_completion_ == nullptr);
146
+ next_completion_ = on_complete;
147
+ target_result_ = result;
148
+ if (resolved_version_ == 0 && !resolving_) {
149
+ MaybeStartResolvingLocked();
124
150
  } else {
125
- dns_maybe_finish_next_locked(r);
151
+ MaybeFinishNextLocked();
126
152
  }
127
153
  }
128
154
 
129
- static void dns_on_retry_timer_locked(void* arg, grpc_error* error) {
130
- dns_resolver* r = (dns_resolver*)arg;
155
+ void NativeDnsResolver::RequestReresolutionLocked() {
156
+ if (!resolving_) {
157
+ MaybeStartResolvingLocked();
158
+ }
159
+ }
131
160
 
132
- r->have_retry_timer = false;
133
- if (error == GRPC_ERROR_NONE) {
134
- if (!r->resolving) {
135
- dns_start_resolving_locked(r);
136
- }
161
+ void NativeDnsResolver::ShutdownLocked() {
162
+ if (have_next_resolution_timer_) {
163
+ grpc_timer_cancel(&next_resolution_timer_);
164
+ }
165
+ if (next_completion_ != nullptr) {
166
+ *target_result_ = nullptr;
167
+ GRPC_CLOSURE_SCHED(next_completion_, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
168
+ "Resolver Shutdown"));
169
+ next_completion_ = nullptr;
137
170
  }
171
+ }
138
172
 
139
- GRPC_RESOLVER_UNREF(&r->base, "retry-timer");
173
+ void NativeDnsResolver::OnNextResolutionLocked(void* arg, grpc_error* error) {
174
+ NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
175
+ r->have_next_resolution_timer_ = false;
176
+ if (error == GRPC_ERROR_NONE && !r->resolving_) {
177
+ r->StartResolvingLocked();
178
+ }
179
+ r->Unref(DEBUG_LOCATION, "retry-timer");
140
180
  }
141
181
 
142
- static void dns_on_resolved_locked(void* arg, grpc_error* error) {
143
- dns_resolver* r = (dns_resolver*)arg;
182
+ void NativeDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
183
+ NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
144
184
  grpc_channel_args* result = nullptr;
145
- GPR_ASSERT(r->resolving);
146
- r->resolving = false;
185
+ GPR_ASSERT(r->resolving_);
186
+ r->resolving_ = false;
147
187
  GRPC_ERROR_REF(error);
148
- error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
149
- grpc_slice_from_copied_string(r->name_to_resolve));
150
- if (r->addresses != nullptr) {
188
+ error =
189
+ grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
190
+ grpc_slice_from_copied_string(r->name_to_resolve_));
191
+ if (r->addresses_ != nullptr) {
151
192
  grpc_lb_addresses* addresses = grpc_lb_addresses_create(
152
- r->addresses->naddrs, nullptr /* user_data_vtable */);
153
- for (size_t i = 0; i < r->addresses->naddrs; ++i) {
193
+ r->addresses_->naddrs, nullptr /* user_data_vtable */);
194
+ for (size_t i = 0; i < r->addresses_->naddrs; ++i) {
154
195
  grpc_lb_addresses_set_address(
155
- addresses, i, &r->addresses->addrs[i].addr,
156
- r->addresses->addrs[i].len, false /* is_balancer */,
196
+ addresses, i, &r->addresses_->addrs[i].addr,
197
+ r->addresses_->addrs[i].len, false /* is_balancer */,
157
198
  nullptr /* balancer_name */, nullptr /* user_data */);
158
199
  }
159
200
  grpc_arg new_arg = grpc_lb_addresses_create_channel_arg(addresses);
160
- result = grpc_channel_args_copy_and_add(r->channel_args, &new_arg, 1);
161
- grpc_resolved_addresses_destroy(r->addresses);
201
+ result = grpc_channel_args_copy_and_add(r->channel_args_, &new_arg, 1);
202
+ grpc_resolved_addresses_destroy(r->addresses_);
162
203
  grpc_lb_addresses_destroy(addresses);
204
+ // Reset backoff state so that we start from the beginning when the
205
+ // next request gets triggered.
206
+ r->backoff_.Reset();
163
207
  } else {
164
- grpc_millis next_try = r->backoff->NextAttemptTime();
165
- grpc_millis timeout = next_try - grpc_core::ExecCtx::Get()->Now();
208
+ grpc_millis next_try = r->backoff_.NextAttemptTime();
209
+ grpc_millis timeout = next_try - ExecCtx::Get()->Now();
166
210
  gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
167
211
  grpc_error_string(error));
168
- GPR_ASSERT(!r->have_retry_timer);
169
- r->have_retry_timer = true;
170
- GRPC_RESOLVER_REF(&r->base, "retry-timer");
212
+ GPR_ASSERT(!r->have_next_resolution_timer_);
213
+ r->have_next_resolution_timer_ = true;
214
+ // TODO(roth): We currently deal with this ref manually. Once the
215
+ // new closure API is done, find a way to track this ref with the timer
216
+ // callback as part of the type system.
217
+ RefCountedPtr<Resolver> self =
218
+ r->Ref(DEBUG_LOCATION, "next_resolution_timer");
219
+ self.release();
171
220
  if (timeout > 0) {
172
221
  gpr_log(GPR_DEBUG, "retrying in %" PRIdPTR " milliseconds", timeout);
173
222
  } else {
174
223
  gpr_log(GPR_DEBUG, "retrying immediately");
175
224
  }
176
- GRPC_CLOSURE_INIT(&r->on_retry, dns_on_retry_timer_locked, r,
177
- grpc_combiner_scheduler(r->base.combiner));
178
- grpc_timer_init(&r->retry_timer, next_try, &r->on_retry);
225
+ grpc_timer_init(&r->next_resolution_timer_, next_try,
226
+ &r->on_next_resolution_);
179
227
  }
180
- if (r->resolved_result != nullptr) {
181
- grpc_channel_args_destroy(r->resolved_result);
228
+ if (r->resolved_result_ != nullptr) {
229
+ grpc_channel_args_destroy(r->resolved_result_);
182
230
  }
183
- r->resolved_result = result;
184
- r->resolved_version++;
185
- dns_maybe_finish_next_locked(r);
231
+ r->resolved_result_ = result;
232
+ ++r->resolved_version_;
233
+ r->MaybeFinishNextLocked();
186
234
  GRPC_ERROR_UNREF(error);
187
-
188
- GRPC_RESOLVER_UNREF(&r->base, "dns-resolving");
189
- }
190
-
191
- static void dns_start_resolving_locked(dns_resolver* r) {
192
- GRPC_RESOLVER_REF(&r->base, "dns-resolving");
193
- GPR_ASSERT(!r->resolving);
194
- r->resolving = true;
195
- r->addresses = nullptr;
196
- grpc_resolve_address(
197
- r->name_to_resolve, r->default_port, r->interested_parties,
198
- GRPC_CLOSURE_CREATE(dns_on_resolved_locked, r,
199
- grpc_combiner_scheduler(r->base.combiner)),
200
- &r->addresses);
235
+ r->Unref(DEBUG_LOCATION, "dns-resolving");
201
236
  }
202
237
 
203
- static void dns_maybe_finish_next_locked(dns_resolver* r) {
204
- if (r->next_completion != nullptr &&
205
- r->resolved_version != r->published_version) {
206
- *r->target_result = r->resolved_result == nullptr
207
- ? nullptr
208
- : grpc_channel_args_copy(r->resolved_result);
209
- GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE);
210
- r->next_completion = nullptr;
211
- r->published_version = r->resolved_version;
238
+ void NativeDnsResolver::MaybeStartResolvingLocked() {
239
+ if (last_resolution_timestamp_ >= 0) {
240
+ const grpc_millis earliest_next_resolution =
241
+ last_resolution_timestamp_ + min_time_between_resolutions_;
242
+ const grpc_millis ms_until_next_resolution =
243
+ earliest_next_resolution - grpc_core::ExecCtx::Get()->Now();
244
+ if (ms_until_next_resolution > 0) {
245
+ const grpc_millis last_resolution_ago =
246
+ grpc_core::ExecCtx::Get()->Now() - last_resolution_timestamp_;
247
+ gpr_log(GPR_DEBUG,
248
+ "In cooldown from last resolution (from %" PRIdPTR
249
+ " ms ago). Will resolve again in %" PRIdPTR " ms",
250
+ last_resolution_ago, ms_until_next_resolution);
251
+ if (!have_next_resolution_timer_) {
252
+ have_next_resolution_timer_ = true;
253
+ // TODO(roth): We currently deal with this ref manually. Once the
254
+ // new closure API is done, find a way to track this ref with the timer
255
+ // callback as part of the type system.
256
+ RefCountedPtr<Resolver> self =
257
+ Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown");
258
+ self.release();
259
+ grpc_timer_init(&next_resolution_timer_, ms_until_next_resolution,
260
+ &on_next_resolution_);
261
+ }
262
+ // TODO(dgq): remove the following two lines once Pick First stops
263
+ // discarding subchannels after selecting.
264
+ ++resolved_version_;
265
+ MaybeFinishNextLocked();
266
+ return;
267
+ }
212
268
  }
269
+ StartResolvingLocked();
213
270
  }
214
271
 
215
- static void dns_destroy(grpc_resolver* gr) {
216
- dns_resolver* r = (dns_resolver*)gr;
217
- if (r->resolved_result != nullptr) {
218
- grpc_channel_args_destroy(r->resolved_result);
219
- }
220
- grpc_pollset_set_destroy(r->interested_parties);
221
- gpr_free(r->name_to_resolve);
222
- gpr_free(r->default_port);
223
- grpc_channel_args_destroy(r->channel_args);
224
- gpr_free(r);
272
+ void NativeDnsResolver::StartResolvingLocked() {
273
+ // TODO(roth): We currently deal with this ref manually. Once the
274
+ // new closure API is done, find a way to track this ref with the timer
275
+ // callback as part of the type system.
276
+ RefCountedPtr<Resolver> self = Ref(DEBUG_LOCATION, "dns-resolving");
277
+ self.release();
278
+ GPR_ASSERT(!resolving_);
279
+ resolving_ = true;
280
+ addresses_ = nullptr;
281
+ grpc_resolve_address(name_to_resolve_, kDefaultPort, interested_parties_,
282
+ &on_resolved_, &addresses_);
283
+ last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
225
284
  }
226
285
 
227
- static grpc_resolver* dns_create(grpc_resolver_args* args,
228
- const char* default_port) {
229
- if (0 != strcmp(args->uri->authority, "")) {
230
- gpr_log(GPR_ERROR, "authority based dns uri's not supported");
231
- return nullptr;
286
+ void NativeDnsResolver::MaybeFinishNextLocked() {
287
+ if (next_completion_ != nullptr && resolved_version_ != published_version_) {
288
+ *target_result_ = resolved_result_ == nullptr
289
+ ? nullptr
290
+ : grpc_channel_args_copy(resolved_result_);
291
+ GRPC_CLOSURE_SCHED(next_completion_, GRPC_ERROR_NONE);
292
+ next_completion_ = nullptr;
293
+ published_version_ = resolved_version_;
232
294
  }
233
- // Get name from args.
234
- char* path = args->uri->path;
235
- if (path[0] == '/') ++path;
236
- // Create resolver.
237
- dns_resolver* r = (dns_resolver*)gpr_zalloc(sizeof(dns_resolver));
238
- grpc_resolver_init(&r->base, &dns_resolver_vtable, args->combiner);
239
- r->name_to_resolve = gpr_strdup(path);
240
- r->default_port = gpr_strdup(default_port);
241
- r->channel_args = grpc_channel_args_copy(args->args);
242
- r->interested_parties = grpc_pollset_set_create();
243
- if (args->pollset_set != nullptr) {
244
- grpc_pollset_set_add_pollset_set(r->interested_parties, args->pollset_set);
245
- }
246
- grpc_core::BackOff::Options backoff_options;
247
- backoff_options
248
- .set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000)
249
- .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
250
- .set_jitter(GRPC_DNS_RECONNECT_JITTER)
251
- .set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000);
252
- r->backoff.Init(grpc_core::BackOff(backoff_options));
253
- return &r->base;
254
295
  }
255
296
 
256
- /*
257
- * FACTORY
258
- */
259
-
260
- static void dns_factory_ref(grpc_resolver_factory* factory) {}
261
-
262
- static void dns_factory_unref(grpc_resolver_factory* factory) {}
263
-
264
- static grpc_resolver* dns_factory_create_resolver(
265
- grpc_resolver_factory* factory, grpc_resolver_args* args) {
266
- return dns_create(args, "https");
267
- }
297
+ //
298
+ // Factory
299
+ //
300
+
301
+ class NativeDnsResolverFactory : public ResolverFactory {
302
+ public:
303
+ OrphanablePtr<Resolver> CreateResolver(
304
+ const ResolverArgs& args) const override {
305
+ if (0 != strcmp(args.uri->authority, "")) {
306
+ gpr_log(GPR_ERROR, "authority based dns uri's not supported");
307
+ return OrphanablePtr<Resolver>(nullptr);
308
+ }
309
+ return OrphanablePtr<Resolver>(New<NativeDnsResolver>(args));
310
+ }
268
311
 
269
- static char* dns_factory_get_default_host_name(grpc_resolver_factory* factory,
270
- grpc_uri* uri) {
271
- const char* path = uri->path;
272
- if (path[0] == '/') ++path;
273
- return gpr_strdup(path);
274
- }
312
+ const char* scheme() const override { return "dns"; }
313
+ };
275
314
 
276
- static const grpc_resolver_factory_vtable dns_factory_vtable = {
277
- dns_factory_ref, dns_factory_unref, dns_factory_create_resolver,
278
- dns_factory_get_default_host_name, "dns"};
279
- static grpc_resolver_factory dns_resolver_factory = {&dns_factory_vtable};
315
+ } // namespace
280
316
 
281
- static grpc_resolver_factory* dns_resolver_factory_create() {
282
- return &dns_resolver_factory;
283
- }
317
+ } // namespace grpc_core
284
318
 
285
- void grpc_resolver_dns_native_init(void) {
286
- char* resolver = gpr_getenv("GRPC_DNS_RESOLVER");
287
- if (resolver != nullptr && gpr_stricmp(resolver, "native") == 0) {
319
+ void grpc_resolver_dns_native_init() {
320
+ char* resolver_env = gpr_getenv("GRPC_DNS_RESOLVER");
321
+ if (resolver_env != nullptr && gpr_stricmp(resolver_env, "native") == 0) {
288
322
  gpr_log(GPR_DEBUG, "Using native dns resolver");
289
- grpc_register_resolver_type(dns_resolver_factory_create());
323
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
324
+ grpc_core::UniquePtr<grpc_core::ResolverFactory>(
325
+ grpc_core::New<grpc_core::NativeDnsResolverFactory>()));
290
326
  } else {
291
- grpc_resolver_factory* existing_factory =
292
- grpc_resolver_factory_lookup("dns");
327
+ grpc_core::ResolverRegistry::Builder::InitRegistry();
328
+ grpc_core::ResolverFactory* existing_factory =
329
+ grpc_core::ResolverRegistry::LookupResolverFactory("dns");
293
330
  if (existing_factory == nullptr) {
294
331
  gpr_log(GPR_DEBUG, "Using native dns resolver");
295
- grpc_register_resolver_type(dns_resolver_factory_create());
296
- } else {
297
- grpc_resolver_factory_unref(existing_factory);
332
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
333
+ grpc_core::UniquePtr<grpc_core::ResolverFactory>(
334
+ grpc_core::New<grpc_core::NativeDnsResolverFactory>()));
298
335
  }
299
336
  }
300
- gpr_free(resolver);
337
+ gpr_free(resolver_env);
301
338
  }
302
339
 
303
- void grpc_resolver_dns_native_shutdown(void) {}
340
+ void grpc_resolver_dns_native_shutdown() {}