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
@@ -22,7 +22,6 @@
22
22
  #include <string.h>
23
23
 
24
24
  #include <grpc/support/alloc.h>
25
- #include <grpc/support/host_port.h>
26
25
  #include <grpc/support/port_platform.h>
27
26
  #include <grpc/support/string_util.h>
28
27
 
@@ -30,6 +29,7 @@
30
29
  #include "src/core/ext/filters/client_channel/parse_address.h"
31
30
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
32
31
  #include "src/core/lib/channel/channel_args.h"
32
+ #include "src/core/lib/gpr/host_port.h"
33
33
  #include "src/core/lib/gpr/string.h"
34
34
  #include "src/core/lib/iomgr/combiner.h"
35
35
  #include "src/core/lib/iomgr/resolve_address.h"
@@ -37,115 +37,99 @@
37
37
  #include "src/core/lib/slice/slice_internal.h"
38
38
  #include "src/core/lib/slice/slice_string_helpers.h"
39
39
 
40
- typedef struct {
41
- /** base class: must be first */
42
- grpc_resolver base;
43
- /** the addresses that we've 'resolved' */
44
- grpc_lb_addresses* addresses;
45
- /** channel args */
46
- grpc_channel_args* channel_args;
47
- /** have we published? */
48
- bool published;
49
- /** pending next completion, or NULL */
50
- grpc_closure* next_completion;
51
- /** target result address for next completion */
52
- grpc_channel_args** target_result;
53
- } sockaddr_resolver;
54
-
55
- static void sockaddr_destroy(grpc_resolver* r);
56
-
57
- static void sockaddr_maybe_finish_next_locked(sockaddr_resolver* r);
58
-
59
- static void sockaddr_shutdown_locked(grpc_resolver* r);
60
- static void sockaddr_channel_saw_error_locked(grpc_resolver* r);
61
- static void sockaddr_next_locked(grpc_resolver* r,
62
- grpc_channel_args** target_result,
63
- grpc_closure* on_complete);
64
-
65
- static const grpc_resolver_vtable sockaddr_resolver_vtable = {
66
- sockaddr_destroy, sockaddr_shutdown_locked,
67
- sockaddr_channel_saw_error_locked, sockaddr_next_locked};
68
-
69
- static void sockaddr_shutdown_locked(grpc_resolver* resolver) {
70
- sockaddr_resolver* r = (sockaddr_resolver*)resolver;
71
- if (r->next_completion != nullptr) {
72
- *r->target_result = nullptr;
73
- GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
74
- "Resolver Shutdown"));
75
- r->next_completion = nullptr;
76
- }
77
- }
40
+ namespace grpc_core {
78
41
 
79
- static void sockaddr_channel_saw_error_locked(grpc_resolver* resolver) {
80
- sockaddr_resolver* r = (sockaddr_resolver*)resolver;
81
- r->published = false;
82
- sockaddr_maybe_finish_next_locked(r);
83
- }
42
+ namespace {
84
43
 
85
- static void sockaddr_next_locked(grpc_resolver* resolver,
86
- grpc_channel_args** target_result,
87
- grpc_closure* on_complete) {
88
- sockaddr_resolver* r = (sockaddr_resolver*)resolver;
89
- GPR_ASSERT(!r->next_completion);
90
- r->next_completion = on_complete;
91
- r->target_result = target_result;
92
- sockaddr_maybe_finish_next_locked(r);
93
- }
44
+ class SockaddrResolver : public Resolver {
45
+ public:
46
+ /// Takes ownership of \a addresses.
47
+ SockaddrResolver(const ResolverArgs& args, grpc_lb_addresses* addresses);
94
48
 
95
- static void sockaddr_maybe_finish_next_locked(sockaddr_resolver* r) {
96
- if (r->next_completion != nullptr && !r->published) {
97
- r->published = true;
98
- grpc_arg arg = grpc_lb_addresses_create_channel_arg(r->addresses);
99
- *r->target_result =
100
- grpc_channel_args_copy_and_add(r->channel_args, &arg, 1);
101
- GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE);
102
- r->next_completion = nullptr;
103
- }
104
- }
49
+ void NextLocked(grpc_channel_args** result,
50
+ grpc_closure* on_complete) override;
51
+
52
+ void RequestReresolutionLocked() override;
105
53
 
106
- static void sockaddr_destroy(grpc_resolver* gr) {
107
- sockaddr_resolver* r = (sockaddr_resolver*)gr;
108
- grpc_lb_addresses_destroy(r->addresses);
109
- grpc_channel_args_destroy(r->channel_args);
110
- gpr_free(r);
54
+ void ShutdownLocked() override;
55
+
56
+ private:
57
+ virtual ~SockaddrResolver();
58
+
59
+ void MaybeFinishNextLocked();
60
+
61
+ /// the addresses that we've "resolved"
62
+ grpc_lb_addresses* addresses_ = nullptr;
63
+ /// channel args
64
+ grpc_channel_args* channel_args_ = nullptr;
65
+ /// have we published?
66
+ bool published_ = false;
67
+ /// pending next completion, or NULL
68
+ grpc_closure* next_completion_ = nullptr;
69
+ /// target result address for next completion
70
+ grpc_channel_args** target_result_ = nullptr;
71
+ };
72
+
73
+ SockaddrResolver::SockaddrResolver(const ResolverArgs& args,
74
+ grpc_lb_addresses* addresses)
75
+ : Resolver(args.combiner),
76
+ addresses_(addresses),
77
+ channel_args_(grpc_channel_args_copy(args.args)) {}
78
+
79
+ SockaddrResolver::~SockaddrResolver() {
80
+ grpc_lb_addresses_destroy(addresses_);
81
+ grpc_channel_args_destroy(channel_args_);
111
82
  }
112
83
 
113
- static char* ip_get_default_authority(grpc_uri* uri) {
114
- const char* path = uri->path;
115
- if (path[0] == '/') ++path;
116
- return gpr_strdup(path);
84
+ void SockaddrResolver::NextLocked(grpc_channel_args** target_result,
85
+ grpc_closure* on_complete) {
86
+ GPR_ASSERT(!next_completion_);
87
+ next_completion_ = on_complete;
88
+ target_result_ = target_result;
89
+ MaybeFinishNextLocked();
117
90
  }
118
91
 
119
- static char* ipv4_get_default_authority(grpc_resolver_factory* factory,
120
- grpc_uri* uri) {
121
- return ip_get_default_authority(uri);
92
+ void SockaddrResolver::RequestReresolutionLocked() {
93
+ published_ = false;
94
+ MaybeFinishNextLocked();
122
95
  }
123
96
 
124
- static char* ipv6_get_default_authority(grpc_resolver_factory* factory,
125
- grpc_uri* uri) {
126
- return ip_get_default_authority(uri);
97
+ void SockaddrResolver::ShutdownLocked() {
98
+ if (next_completion_ != nullptr) {
99
+ *target_result_ = nullptr;
100
+ GRPC_CLOSURE_SCHED(next_completion_, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
101
+ "Resolver Shutdown"));
102
+ next_completion_ = nullptr;
103
+ }
127
104
  }
128
105
 
129
- #ifdef GRPC_HAVE_UNIX_SOCKET
130
- char* unix_get_default_authority(grpc_resolver_factory* factory,
131
- grpc_uri* uri) {
132
- return gpr_strdup("localhost");
106
+ void SockaddrResolver::MaybeFinishNextLocked() {
107
+ if (next_completion_ != nullptr && !published_) {
108
+ published_ = true;
109
+ grpc_arg arg = grpc_lb_addresses_create_channel_arg(addresses_);
110
+ *target_result_ = grpc_channel_args_copy_and_add(channel_args_, &arg, 1);
111
+ GRPC_CLOSURE_SCHED(next_completion_, GRPC_ERROR_NONE);
112
+ next_completion_ = nullptr;
113
+ }
133
114
  }
134
- #endif
135
115
 
136
- static void do_nothing(void* ignored) {}
116
+ //
117
+ // Factory
118
+ //
137
119
 
138
- static grpc_resolver* sockaddr_create(grpc_resolver_args* args,
139
- bool parse(const grpc_uri* uri,
140
- grpc_resolved_address* dst)) {
141
- if (0 != strcmp(args->uri->authority, "")) {
142
- gpr_log(GPR_ERROR, "authority based uri's not supported by the %s scheme",
143
- args->uri->scheme);
144
- return nullptr;
120
+ void DoNothing(void* ignored) {}
121
+
122
+ OrphanablePtr<Resolver> CreateSockaddrResolver(
123
+ const ResolverArgs& args,
124
+ bool parse(const grpc_uri* uri, grpc_resolved_address* dst)) {
125
+ if (0 != strcmp(args.uri->authority, "")) {
126
+ gpr_log(GPR_ERROR, "authority-based URIs not supported by the %s scheme",
127
+ args.uri->scheme);
128
+ return OrphanablePtr<Resolver>(nullptr);
145
129
  }
146
- /* Construct addresses. */
130
+ // Construct addresses.
147
131
  grpc_slice path_slice =
148
- grpc_slice_new(args->uri->path, strlen(args->uri->path), do_nothing);
132
+ grpc_slice_new(args.uri->path, strlen(args.uri->path), DoNothing);
149
133
  grpc_slice_buffer path_parts;
150
134
  grpc_slice_buffer_init(&path_parts);
151
135
  grpc_slice_split(path_slice, ",", &path_parts);
@@ -153,7 +137,7 @@ static grpc_resolver* sockaddr_create(grpc_resolver_args* args,
153
137
  path_parts.count, nullptr /* user_data_vtable */);
154
138
  bool errors_found = false;
155
139
  for (size_t i = 0; i < addresses->num_addresses; i++) {
156
- grpc_uri ith_uri = *args->uri;
140
+ grpc_uri ith_uri = *args.uri;
157
141
  char* part_str = grpc_slice_to_c_string(path_parts.slices[i]);
158
142
  ith_uri.path = part_str;
159
143
  if (!parse(&ith_uri, &addresses->addresses[i].address)) {
@@ -166,48 +150,64 @@ static grpc_resolver* sockaddr_create(grpc_resolver_args* args,
166
150
  grpc_slice_unref_internal(path_slice);
167
151
  if (errors_found) {
168
152
  grpc_lb_addresses_destroy(addresses);
169
- return nullptr;
153
+ return OrphanablePtr<Resolver>(nullptr);
170
154
  }
171
- /* Instantiate resolver. */
172
- sockaddr_resolver* r =
173
- (sockaddr_resolver*)gpr_zalloc(sizeof(sockaddr_resolver));
174
- r->addresses = addresses;
175
- r->channel_args = grpc_channel_args_copy(args->args);
176
- grpc_resolver_init(&r->base, &sockaddr_resolver_vtable, args->combiner);
177
- return &r->base;
155
+ // Instantiate resolver.
156
+ return OrphanablePtr<Resolver>(New<SockaddrResolver>(args, addresses));
178
157
  }
179
158
 
180
- /*
181
- * FACTORY
182
- */
159
+ class IPv4ResolverFactory : public ResolverFactory {
160
+ public:
161
+ OrphanablePtr<Resolver> CreateResolver(
162
+ const ResolverArgs& args) const override {
163
+ return CreateSockaddrResolver(args, grpc_parse_ipv4);
164
+ }
183
165
 
184
- static void sockaddr_factory_ref(grpc_resolver_factory* factory) {}
166
+ const char* scheme() const override { return "ipv4"; }
167
+ };
185
168
 
186
- static void sockaddr_factory_unref(grpc_resolver_factory* factory) {}
169
+ class IPv6ResolverFactory : public ResolverFactory {
170
+ public:
171
+ OrphanablePtr<Resolver> CreateResolver(
172
+ const ResolverArgs& args) const override {
173
+ return CreateSockaddrResolver(args, grpc_parse_ipv6);
174
+ }
187
175
 
188
- #define DECL_FACTORY(name) \
189
- static grpc_resolver* name##_factory_create_resolver( \
190
- grpc_resolver_factory* factory, grpc_resolver_args* args) { \
191
- return sockaddr_create(args, grpc_parse_##name); \
192
- } \
193
- static const grpc_resolver_factory_vtable name##_factory_vtable = { \
194
- sockaddr_factory_ref, sockaddr_factory_unref, \
195
- name##_factory_create_resolver, name##_get_default_authority, #name}; \
196
- static grpc_resolver_factory name##_resolver_factory = { \
197
- &name##_factory_vtable}
176
+ const char* scheme() const override { return "ipv6"; }
177
+ };
198
178
 
199
179
  #ifdef GRPC_HAVE_UNIX_SOCKET
200
- DECL_FACTORY(unix);
201
- #endif
202
- DECL_FACTORY(ipv4);
203
- DECL_FACTORY(ipv6);
180
+ class UnixResolverFactory : public ResolverFactory {
181
+ public:
182
+ OrphanablePtr<Resolver> CreateResolver(
183
+ const ResolverArgs& args) const override {
184
+ return CreateSockaddrResolver(args, grpc_parse_unix);
185
+ }
186
+
187
+ UniquePtr<char> GetDefaultAuthority(grpc_uri* uri) const override {
188
+ return UniquePtr<char>(gpr_strdup("localhost"));
189
+ }
190
+
191
+ const char* scheme() const override { return "unix"; }
192
+ };
193
+ #endif // GRPC_HAVE_UNIX_SOCKET
194
+
195
+ } // namespace
196
+
197
+ } // namespace grpc_core
204
198
 
205
- void grpc_resolver_sockaddr_init(void) {
206
- grpc_register_resolver_type(&ipv4_resolver_factory);
207
- grpc_register_resolver_type(&ipv6_resolver_factory);
199
+ void grpc_resolver_sockaddr_init() {
200
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
201
+ grpc_core::UniquePtr<grpc_core::ResolverFactory>(
202
+ grpc_core::New<grpc_core::IPv4ResolverFactory>()));
203
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
204
+ grpc_core::UniquePtr<grpc_core::ResolverFactory>(
205
+ grpc_core::New<grpc_core::IPv6ResolverFactory>()));
208
206
  #ifdef GRPC_HAVE_UNIX_SOCKET
209
- grpc_register_resolver_type(&unix_resolver_factory);
207
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
208
+ grpc_core::UniquePtr<grpc_core::ResolverFactory>(
209
+ grpc_core::New<grpc_core::UnixResolverFactory>()));
210
210
  #endif
211
211
  }
212
212
 
213
- void grpc_resolver_sockaddr_shutdown(void) {}
213
+ void grpc_resolver_sockaddr_shutdown() {}
@@ -19,50 +19,51 @@
19
19
  #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H
20
20
  #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H
21
21
 
22
- #include "src/core/ext/filters/client_channel/client_channel_factory.h"
22
+ #include <grpc/support/string_util.h>
23
+
23
24
  #include "src/core/ext/filters/client_channel/resolver.h"
24
25
  #include "src/core/ext/filters/client_channel/uri_parser.h"
26
+ #include "src/core/lib/gprpp/abstract.h"
27
+ #include "src/core/lib/gprpp/memory.h"
28
+ #include "src/core/lib/gprpp/orphanable.h"
25
29
  #include "src/core/lib/iomgr/pollset_set.h"
26
30
 
27
- typedef struct grpc_resolver_factory grpc_resolver_factory;
28
- typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable;
31
+ namespace grpc_core {
29
32
 
30
- struct grpc_resolver_factory {
31
- const grpc_resolver_factory_vtable* vtable;
33
+ struct ResolverArgs {
34
+ /// The parsed URI to resolve.
35
+ grpc_uri* uri = nullptr;
36
+ /// Channel args to be included in resolver results.
37
+ const grpc_channel_args* args = nullptr;
38
+ /// Used to drive I/O in the name resolution process.
39
+ grpc_pollset_set* pollset_set = nullptr;
40
+ /// The combiner under which all resolver calls will be run.
41
+ grpc_combiner* combiner = nullptr;
32
42
  };
33
43
 
34
- typedef struct grpc_resolver_args {
35
- grpc_uri* uri;
36
- const grpc_channel_args* args;
37
- grpc_pollset_set* pollset_set;
38
- grpc_combiner* combiner;
39
- } grpc_resolver_args;
44
+ class ResolverFactory {
45
+ public:
46
+ /// Returns a new resolver instance.
47
+ virtual OrphanablePtr<Resolver> CreateResolver(const ResolverArgs& args) const
48
+ GRPC_ABSTRACT;
40
49
 
41
- struct grpc_resolver_factory_vtable {
42
- void (*ref)(grpc_resolver_factory* factory);
43
- void (*unref)(grpc_resolver_factory* factory);
50
+ /// Returns a string representing the default authority to use for this
51
+ /// scheme.
52
+ virtual UniquePtr<char> GetDefaultAuthority(grpc_uri* uri) const {
53
+ const char* path = uri->path;
54
+ if (path[0] == '/') ++path;
55
+ return UniquePtr<char>(gpr_strdup(path));
56
+ }
44
57
 
45
- /** Implementation of grpc_resolver_factory_create_resolver */
46
- grpc_resolver* (*create_resolver)(grpc_resolver_factory* factory,
47
- grpc_resolver_args* args);
58
+ /// Returns the URI scheme that this factory implements.
59
+ /// Caller does NOT take ownership of result.
60
+ virtual const char* scheme() const GRPC_ABSTRACT;
48
61
 
49
- /** Implementation of grpc_resolver_factory_get_default_authority */
50
- char* (*get_default_authority)(grpc_resolver_factory* factory, grpc_uri* uri);
62
+ virtual ~ResolverFactory() {}
51
63
 
52
- /** URI scheme that this factory implements */
53
- const char* scheme;
64
+ GRPC_ABSTRACT_BASE_CLASS
54
65
  };
55
66
 
56
- void grpc_resolver_factory_ref(grpc_resolver_factory* resolver);
57
- void grpc_resolver_factory_unref(grpc_resolver_factory* resolver);
58
-
59
- /** Create a resolver instance for a name */
60
- grpc_resolver* grpc_resolver_factory_create_resolver(
61
- grpc_resolver_factory* factory, grpc_resolver_args* args);
62
-
63
- /** Return a (freshly allocated with gpr_malloc) string representing
64
- the default authority to use for this scheme. */
65
- char* grpc_resolver_factory_get_default_authority(
66
- grpc_resolver_factory* factory, grpc_uri* uri);
67
+ } // namespace grpc_core
67
68
 
68
69
  #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H */
@@ -24,133 +24,153 @@
24
24
  #include <grpc/support/log.h>
25
25
  #include <grpc/support/string_util.h>
26
26
 
27
- #define MAX_RESOLVERS 10
28
- #define DEFAULT_RESOLVER_PREFIX_MAX_LENGTH 32
27
+ namespace grpc_core {
29
28
 
30
- static grpc_resolver_factory* g_all_of_the_resolvers[MAX_RESOLVERS];
31
- static int g_number_of_resolvers = 0;
29
+ namespace {
32
30
 
33
- static char g_default_resolver_prefix[DEFAULT_RESOLVER_PREFIX_MAX_LENGTH] =
34
- "dns:///";
31
+ class RegistryState {
32
+ public:
33
+ RegistryState() : default_prefix_(gpr_strdup("dns:///")) {}
35
34
 
36
- void grpc_resolver_registry_init() {}
37
-
38
- void grpc_resolver_registry_shutdown(void) {
39
- for (int i = 0; i < g_number_of_resolvers; i++) {
40
- grpc_resolver_factory_unref(g_all_of_the_resolvers[i]);
35
+ void SetDefaultPrefix(const char* default_resolver_prefix) {
36
+ GPR_ASSERT(default_resolver_prefix != nullptr);
37
+ GPR_ASSERT(*default_resolver_prefix != '\0');
38
+ default_prefix_.reset(gpr_strdup(default_resolver_prefix));
41
39
  }
42
- // FIXME(ctiller): this should live in grpc_resolver_registry_init,
43
- // however that would have the client_channel plugin call this AFTER we start
44
- // registering resolvers from third party plugins, and so they'd never show
45
- // up.
46
- // We likely need some kind of dependency system for plugins.... what form
47
- // that takes is TBD.
48
- g_number_of_resolvers = 0;
49
- }
50
-
51
- void grpc_resolver_registry_set_default_prefix(
52
- const char* default_resolver_prefix) {
53
- const size_t len = strlen(default_resolver_prefix);
54
- GPR_ASSERT(len < DEFAULT_RESOLVER_PREFIX_MAX_LENGTH &&
55
- "default resolver prefix too long");
56
- GPR_ASSERT(len > 0 && "default resolver prefix can't be empty");
57
- // By the previous assert, default_resolver_prefix is safe to be copied with a
58
- // plain strcpy.
59
- strcpy(g_default_resolver_prefix, default_resolver_prefix);
60
- }
61
40
 
62
- void grpc_register_resolver_type(grpc_resolver_factory* factory) {
63
- int i;
64
- for (i = 0; i < g_number_of_resolvers; i++) {
65
- GPR_ASSERT(0 != strcmp(factory->vtable->scheme,
66
- g_all_of_the_resolvers[i]->vtable->scheme));
41
+ void RegisterResolverFactory(UniquePtr<ResolverFactory> factory) {
42
+ for (size_t i = 0; i < factories_.size(); ++i) {
43
+ GPR_ASSERT(strcmp(factories_[i]->scheme(), factory->scheme()) != 0);
44
+ }
45
+ factories_.push_back(std::move(factory));
67
46
  }
68
- GPR_ASSERT(g_number_of_resolvers != MAX_RESOLVERS);
69
- grpc_resolver_factory_ref(factory);
70
- g_all_of_the_resolvers[g_number_of_resolvers++] = factory;
71
- }
72
47
 
73
- static grpc_resolver_factory* lookup_factory(const char* name) {
74
- int i;
48
+ ResolverFactory* LookupResolverFactory(const char* scheme) const {
49
+ for (size_t i = 0; i < factories_.size(); ++i) {
50
+ if (strcmp(scheme, factories_[i]->scheme()) == 0) {
51
+ return factories_[i].get();
52
+ }
53
+ }
54
+ return nullptr;
55
+ }
75
56
 
76
- for (i = 0; i < g_number_of_resolvers; i++) {
77
- if (0 == strcmp(name, g_all_of_the_resolvers[i]->vtable->scheme)) {
78
- return g_all_of_the_resolvers[i];
57
+ // Returns the factory for the scheme of \a target. If \a target does
58
+ // not parse as a URI, prepends \a default_prefix_ and tries again.
59
+ // If URI parsing is successful (in either attempt), sets \a uri to
60
+ // point to the parsed URI.
61
+ // If \a default_prefix_ needs to be prepended, sets \a canonical_target
62
+ // to the canonical target string.
63
+ ResolverFactory* FindResolverFactory(const char* target, grpc_uri** uri,
64
+ char** canonical_target) const {
65
+ GPR_ASSERT(uri != nullptr);
66
+ *uri = grpc_uri_parse(target, 1);
67
+ ResolverFactory* factory =
68
+ *uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
69
+ if (factory == nullptr) {
70
+ grpc_uri_destroy(*uri);
71
+ gpr_asprintf(canonical_target, "%s%s", default_prefix_.get(), target);
72
+ *uri = grpc_uri_parse(*canonical_target, 1);
73
+ factory =
74
+ *uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
75
+ if (factory == nullptr) {
76
+ grpc_uri_destroy(grpc_uri_parse(target, 0));
77
+ grpc_uri_destroy(grpc_uri_parse(*canonical_target, 0));
78
+ gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
79
+ *canonical_target);
80
+ }
79
81
  }
82
+ return factory;
80
83
  }
81
- return nullptr;
84
+
85
+ private:
86
+ // We currently support 10 factories without doing additional
87
+ // allocation. This number could be raised if there is a case where
88
+ // more factories are needed and the additional allocations are
89
+ // hurting performance (which is unlikely, since these allocations
90
+ // only occur at gRPC initialization time).
91
+ InlinedVector<UniquePtr<ResolverFactory>, 10> factories_;
92
+ UniquePtr<char> default_prefix_;
93
+ };
94
+
95
+ static RegistryState* g_state = nullptr;
96
+
97
+ } // namespace
98
+
99
+ //
100
+ // ResolverRegistry::Builder
101
+ //
102
+
103
+ void ResolverRegistry::Builder::InitRegistry() {
104
+ if (g_state == nullptr) g_state = New<RegistryState>();
82
105
  }
83
106
 
84
- grpc_resolver_factory* grpc_resolver_factory_lookup(const char* name) {
85
- grpc_resolver_factory* f = lookup_factory(name);
86
- if (f) grpc_resolver_factory_ref(f);
87
- return f;
107
+ void ResolverRegistry::Builder::ShutdownRegistry() {
108
+ Delete(g_state);
109
+ g_state = nullptr;
88
110
  }
89
111
 
90
- static grpc_resolver_factory* lookup_factory_by_uri(grpc_uri* uri) {
91
- if (!uri) return nullptr;
92
- return lookup_factory(uri->scheme);
112
+ void ResolverRegistry::Builder::SetDefaultPrefix(
113
+ const char* default_resolver_prefix) {
114
+ InitRegistry();
115
+ g_state->SetDefaultPrefix(default_resolver_prefix);
93
116
  }
94
117
 
95
- static grpc_resolver_factory* resolve_factory(const char* target,
96
- grpc_uri** uri,
97
- char** canonical_target) {
98
- grpc_resolver_factory* factory = nullptr;
99
-
100
- GPR_ASSERT(uri != nullptr);
101
- *uri = grpc_uri_parse(target, 1);
102
- factory = lookup_factory_by_uri(*uri);
103
- if (factory == nullptr) {
104
- grpc_uri_destroy(*uri);
105
- gpr_asprintf(canonical_target, "%s%s", g_default_resolver_prefix, target);
106
- *uri = grpc_uri_parse(*canonical_target, 1);
107
- factory = lookup_factory_by_uri(*uri);
108
- if (factory == nullptr) {
109
- grpc_uri_destroy(grpc_uri_parse(target, 0));
110
- grpc_uri_destroy(grpc_uri_parse(*canonical_target, 0));
111
- gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
112
- *canonical_target);
113
- }
114
- }
115
- return factory;
118
+ void ResolverRegistry::Builder::RegisterResolverFactory(
119
+ UniquePtr<ResolverFactory> factory) {
120
+ InitRegistry();
121
+ g_state->RegisterResolverFactory(std::move(factory));
116
122
  }
117
123
 
118
- grpc_resolver* grpc_resolver_create(const char* target,
119
- const grpc_channel_args* args,
120
- grpc_pollset_set* pollset_set,
121
- grpc_combiner* combiner) {
124
+ //
125
+ // ResolverRegistry
126
+ //
127
+
128
+ ResolverFactory* ResolverRegistry::LookupResolverFactory(const char* scheme) {
129
+ GPR_ASSERT(g_state != nullptr);
130
+ return g_state->LookupResolverFactory(scheme);
131
+ }
132
+
133
+ OrphanablePtr<Resolver> ResolverRegistry::CreateResolver(
134
+ const char* target, const grpc_channel_args* args,
135
+ grpc_pollset_set* pollset_set, grpc_combiner* combiner) {
136
+ GPR_ASSERT(g_state != nullptr);
122
137
  grpc_uri* uri = nullptr;
123
138
  char* canonical_target = nullptr;
124
- grpc_resolver_factory* factory =
125
- resolve_factory(target, &uri, &canonical_target);
126
- grpc_resolver* resolver;
127
- grpc_resolver_args resolver_args;
128
- memset(&resolver_args, 0, sizeof(resolver_args));
139
+ ResolverFactory* factory =
140
+ g_state->FindResolverFactory(target, &uri, &canonical_target);
141
+ ResolverArgs resolver_args;
129
142
  resolver_args.uri = uri;
130
143
  resolver_args.args = args;
131
144
  resolver_args.pollset_set = pollset_set;
132
145
  resolver_args.combiner = combiner;
133
- resolver = grpc_resolver_factory_create_resolver(factory, &resolver_args);
146
+ OrphanablePtr<Resolver> resolver =
147
+ factory == nullptr ? nullptr : factory->CreateResolver(resolver_args);
134
148
  grpc_uri_destroy(uri);
135
149
  gpr_free(canonical_target);
136
150
  return resolver;
137
151
  }
138
152
 
139
- char* grpc_get_default_authority(const char* target) {
153
+ UniquePtr<char> ResolverRegistry::GetDefaultAuthority(const char* target) {
154
+ GPR_ASSERT(g_state != nullptr);
140
155
  grpc_uri* uri = nullptr;
141
156
  char* canonical_target = nullptr;
142
- grpc_resolver_factory* factory =
143
- resolve_factory(target, &uri, &canonical_target);
144
- char* authority = grpc_resolver_factory_get_default_authority(factory, uri);
157
+ ResolverFactory* factory =
158
+ g_state->FindResolverFactory(target, &uri, &canonical_target);
159
+ UniquePtr<char> authority =
160
+ factory == nullptr ? nullptr : factory->GetDefaultAuthority(uri);
145
161
  grpc_uri_destroy(uri);
146
162
  gpr_free(canonical_target);
147
163
  return authority;
148
164
  }
149
165
 
150
- char* grpc_resolver_factory_add_default_prefix_if_needed(const char* target) {
166
+ UniquePtr<char> ResolverRegistry::AddDefaultPrefixIfNeeded(const char* target) {
167
+ GPR_ASSERT(g_state != nullptr);
151
168
  grpc_uri* uri = nullptr;
152
169
  char* canonical_target = nullptr;
153
- resolve_factory(target, &uri, &canonical_target);
170
+ g_state->FindResolverFactory(target, &uri, &canonical_target);
154
171
  grpc_uri_destroy(uri);
155
- return canonical_target == nullptr ? gpr_strdup(target) : canonical_target;
172
+ return UniquePtr<char>(canonical_target == nullptr ? gpr_strdup(target)
173
+ : canonical_target);
156
174
  }
175
+
176
+ } // namespace grpc_core