grpc 1.0.1 → 1.1.2

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 (705) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +3696 -867
  3. data/etc/roots.pem +39 -111
  4. data/include/grpc/byte_buffer.h +64 -1
  5. data/include/grpc/census.h +40 -96
  6. data/include/grpc/compression.h +2 -1
  7. data/include/grpc/grpc.h +42 -7
  8. data/include/grpc/grpc_posix.h +8 -5
  9. data/include/grpc/impl/codegen/atm.h +3 -0
  10. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  11. data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
  12. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  13. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
  14. data/include/grpc/impl/codegen/compression_types.h +1 -1
  15. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  16. data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
  17. data/include/grpc/impl/codegen/gpr_slice.h +84 -0
  18. data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
  19. data/include/grpc/impl/codegen/grpc_types.h +91 -9
  20. data/include/grpc/impl/codegen/port_platform.h +25 -92
  21. data/include/grpc/impl/codegen/slice.h +54 -97
  22. data/include/grpc/impl/codegen/sync.h +0 -253
  23. data/include/grpc/module.modulemap +0 -2
  24. data/include/grpc/slice.h +132 -0
  25. data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
  26. data/include/grpc/support/alloc.h +40 -1
  27. data/include/grpc/support/log.h +80 -1
  28. data/include/grpc/support/log_windows.h +2 -0
  29. data/include/grpc/support/string_util.h +1 -1
  30. data/include/grpc/support/sync.h +252 -0
  31. data/include/grpc/support/time.h +67 -1
  32. data/src/boringssl/err_data.c +639 -627
  33. data/src/core/ext/census/base_resources.c +71 -0
  34. data/src/core/ext/census/base_resources.h +39 -0
  35. data/src/core/ext/census/gen/census.pb.c +26 -29
  36. data/src/core/ext/census/gen/census.pb.h +68 -67
  37. data/src/core/ext/census/gen/trace_context.pb.c +81 -0
  38. data/src/core/ext/census/gen/trace_context.pb.h +99 -0
  39. data/src/core/ext/census/grpc_filter.c +22 -16
  40. data/src/core/ext/census/grpc_plugin.c +2 -1
  41. data/src/core/ext/census/initialize.c +16 -4
  42. data/src/core/ext/census/mlog.h +1 -1
  43. data/src/core/ext/census/placeholders.c +0 -45
  44. data/src/core/ext/census/resource.c +312 -0
  45. data/src/core/ext/census/resource.h +63 -0
  46. data/src/core/ext/census/trace_context.c +86 -0
  47. data/src/core/ext/census/trace_context.h +68 -0
  48. data/src/core/ext/census/tracing.c +8 -2
  49. data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
  50. data/src/core/ext/client_channel/client_channel.c +1218 -0
  51. data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
  52. data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
  53. data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
  54. data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
  55. data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
  56. data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
  57. data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
  58. data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
  59. data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
  60. data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
  61. data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
  62. data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
  63. data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
  64. data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
  65. data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
  66. data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
  67. data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
  68. data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
  69. data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
  70. data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
  71. data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
  72. data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
  73. data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
  74. data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
  75. data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
  76. data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
  77. data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
  78. data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
  79. data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
  80. data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
  81. data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
  82. data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
  83. data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
  84. data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
  85. data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
  86. data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
  87. data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
  88. data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
  89. data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
  90. data/src/core/ext/load_reporting/load_reporting.c +7 -56
  91. data/src/core/ext/load_reporting/load_reporting.h +41 -28
  92. data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
  93. data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
  94. data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
  95. data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
  96. data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
  97. data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
  98. data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
  99. data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
  100. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
  101. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
  102. data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
  103. data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
  104. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
  105. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
  106. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
  107. data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
  108. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
  109. data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
  110. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
  111. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
  112. data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
  113. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
  114. data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
  115. data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
  116. data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
  117. data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
  118. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
  119. data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
  120. data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
  121. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
  122. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
  123. data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
  124. data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
  125. data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
  126. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
  131. data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
  132. data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
  133. data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
  134. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
  135. data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
  136. data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
  137. data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
  138. data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
  139. data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
  140. data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
  141. data/src/core/lib/channel/channel_args.c +70 -13
  142. data/src/core/lib/channel/channel_args.h +28 -2
  143. data/src/core/lib/channel/channel_stack.c +77 -28
  144. data/src/core/lib/channel/channel_stack.h +61 -23
  145. data/src/core/lib/channel/channel_stack_builder.c +33 -25
  146. data/src/core/lib/channel/channel_stack_builder.h +17 -8
  147. data/src/core/lib/channel/compress_filter.c +52 -36
  148. data/src/core/lib/channel/connected_channel.c +20 -12
  149. data/src/core/lib/channel/connected_channel.h +2 -1
  150. data/src/core/lib/channel/context.h +13 -1
  151. data/src/core/lib/channel/deadline_filter.c +344 -0
  152. data/src/core/lib/channel/deadline_filter.h +99 -0
  153. data/src/core/lib/channel/handshaker.c +240 -0
  154. data/src/core/lib/channel/handshaker.h +164 -0
  155. data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
  156. data/src/core/lib/channel/handshaker_factory.h +66 -0
  157. data/src/core/lib/channel/handshaker_registry.c +113 -0
  158. data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
  159. data/src/core/lib/channel/http_client_filter.c +248 -46
  160. data/src/core/lib/channel/http_client_filter.h +3 -0
  161. data/src/core/lib/channel/http_server_filter.c +136 -24
  162. data/src/core/lib/channel/message_size_filter.c +261 -0
  163. data/src/core/lib/channel/message_size_filter.h +39 -0
  164. data/src/core/lib/compression/message_compress.c +43 -37
  165. data/src/core/lib/compression/message_compress.h +7 -5
  166. data/src/core/lib/http/format_request.c +26 -11
  167. data/src/core/lib/http/format_request.h +7 -5
  168. data/src/core/lib/http/httpcli.c +45 -27
  169. data/src/core/lib/http/httpcli.h +4 -4
  170. data/src/core/lib/http/httpcli_security_connector.c +56 -46
  171. data/src/core/lib/http/parser.c +17 -14
  172. data/src/core/lib/http/parser.h +4 -2
  173. data/src/core/lib/iomgr/closure.c +49 -7
  174. data/src/core/lib/iomgr/closure.h +56 -14
  175. data/src/core/lib/iomgr/combiner.c +422 -0
  176. data/src/core/lib/iomgr/combiner.h +64 -0
  177. data/src/core/lib/iomgr/endpoint.c +8 -2
  178. data/src/core/lib/iomgr/endpoint.h +17 -7
  179. data/src/core/lib/iomgr/endpoint_pair.h +3 -2
  180. data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
  181. data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
  182. data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
  183. data/src/core/lib/iomgr/error.c +72 -6
  184. data/src/core/lib/iomgr/error.h +30 -3
  185. data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
  186. data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
  187. data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
  188. data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
  189. data/src/core/lib/iomgr/ev_posix.c +26 -5
  190. data/src/core/lib/iomgr/ev_posix.h +12 -1
  191. data/src/core/lib/iomgr/exec_ctx.c +27 -94
  192. data/src/core/lib/iomgr/exec_ctx.h +19 -22
  193. data/src/core/lib/iomgr/executor.c +29 -8
  194. data/src/core/lib/iomgr/executor.h +2 -4
  195. data/src/core/lib/iomgr/iocp_windows.c +3 -4
  196. data/src/core/lib/iomgr/iomgr.c +14 -10
  197. data/src/core/lib/iomgr/iomgr.h +6 -2
  198. data/src/core/lib/iomgr/iomgr_posix.c +2 -2
  199. data/src/core/lib/iomgr/iomgr_uv.c +49 -0
  200. data/src/core/lib/iomgr/iomgr_windows.c +2 -2
  201. data/src/core/lib/iomgr/load_file.c +3 -3
  202. data/src/core/lib/iomgr/load_file.h +2 -2
  203. data/src/core/lib/iomgr/network_status_tracker.c +1 -1
  204. data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
  205. data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
  206. data/src/core/lib/iomgr/pollset_uv.c +142 -0
  207. data/src/core/lib/iomgr/pollset_uv.h +42 -0
  208. data/src/core/lib/iomgr/pollset_windows.c +5 -6
  209. data/src/core/lib/iomgr/port.h +129 -0
  210. data/src/core/lib/iomgr/resolve_address.h +2 -1
  211. data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
  212. data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
  213. data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
  214. data/src/core/lib/iomgr/resource_quota.c +832 -0
  215. data/src/core/lib/iomgr/resource_quota.h +159 -0
  216. data/src/core/lib/iomgr/sockaddr.h +10 -2
  217. data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
  218. data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
  219. data/src/core/lib/iomgr/socket_mutator.c +98 -0
  220. data/src/core/lib/iomgr/socket_mutator.h +80 -0
  221. data/src/core/lib/iomgr/socket_utils.h +42 -0
  222. data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
  223. data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
  224. data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
  225. data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
  226. data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
  227. data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
  228. data/src/core/lib/iomgr/socket_windows.c +14 -6
  229. data/src/core/lib/iomgr/socket_windows.h +1 -0
  230. data/src/core/lib/iomgr/tcp_client.h +8 -2
  231. data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
  232. data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
  233. data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
  234. data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
  235. data/src/core/lib/iomgr/tcp_posix.c +135 -56
  236. data/src/core/lib/iomgr/tcp_posix.h +2 -2
  237. data/src/core/lib/iomgr/tcp_server.h +14 -6
  238. data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
  239. data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
  240. data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
  241. data/src/core/lib/iomgr/tcp_uv.c +367 -0
  242. data/src/core/lib/iomgr/tcp_uv.h +59 -0
  243. data/src/core/lib/iomgr/tcp_windows.c +65 -48
  244. data/src/core/lib/iomgr/tcp_windows.h +3 -1
  245. data/src/core/lib/iomgr/timer.h +21 -21
  246. data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
  247. data/src/core/lib/iomgr/timer_generic.h +49 -0
  248. data/src/core/lib/iomgr/timer_heap.c +6 -0
  249. data/src/core/lib/iomgr/timer_uv.c +99 -0
  250. data/src/core/lib/iomgr/timer_uv.h +47 -0
  251. data/src/core/lib/iomgr/udp_server.c +116 -98
  252. data/src/core/lib/iomgr/udp_server.h +5 -3
  253. data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
  254. data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
  255. data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
  256. data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
  257. data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
  258. data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
  259. data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
  260. data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
  261. data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
  262. data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
  263. data/src/core/lib/iomgr/workqueue.h +12 -20
  264. data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
  265. data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
  266. data/src/core/lib/iomgr/workqueue_windows.c +9 -8
  267. data/src/core/lib/json/json.c +3 -3
  268. data/src/core/lib/json/json.h +11 -11
  269. data/src/core/lib/json/json_reader.c +9 -5
  270. data/src/core/lib/profiling/basic_timers.c +10 -1
  271. data/src/core/lib/profiling/timers.h +2 -0
  272. data/src/core/lib/security/context/security_context.c +13 -3
  273. data/src/core/lib/security/context/security_context.h +20 -0
  274. data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
  275. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  276. data/src/core/lib/security/credentials/credentials.c +48 -19
  277. data/src/core/lib/security/credentials/credentials.h +36 -19
  278. data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
  279. data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
  280. data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
  281. data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
  282. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
  283. data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
  284. data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
  285. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  286. data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
  287. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
  288. data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
  289. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
  290. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
  291. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  292. data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
  293. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
  294. data/src/core/lib/security/transport/client_auth_filter.c +33 -27
  295. data/src/core/lib/security/transport/secure_endpoint.c +93 -68
  296. data/src/core/lib/security/transport/secure_endpoint.h +2 -2
  297. data/src/core/lib/security/transport/security_connector.c +133 -168
  298. data/src/core/lib/security/transport/security_connector.h +31 -46
  299. data/src/core/lib/security/transport/security_handshaker.c +501 -0
  300. data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
  301. data/src/core/lib/security/transport/server_auth_filter.c +50 -38
  302. data/src/core/lib/security/util/b64.c +11 -8
  303. data/src/core/lib/security/util/b64.h +5 -4
  304. data/src/core/lib/slice/percent_encoding.c +182 -0
  305. data/src/core/lib/slice/percent_encoding.h +78 -0
  306. data/src/core/lib/{support → slice}/slice.c +81 -50
  307. data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
  308. data/src/core/lib/slice/slice_internal.h +49 -0
  309. data/src/core/lib/slice/slice_string_helpers.c +90 -0
  310. data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
  311. data/src/core/lib/support/backoff.c +24 -13
  312. data/src/core/lib/support/backoff.h +5 -2
  313. data/src/core/lib/support/env.h +0 -2
  314. data/src/core/lib/support/log.c +5 -4
  315. data/src/core/lib/support/log_linux.c +0 -1
  316. data/src/core/lib/support/log_posix.c +1 -1
  317. data/src/core/lib/support/mpscq.c +83 -0
  318. data/src/core/lib/support/mpscq.h +65 -0
  319. data/src/core/lib/support/string.c +58 -49
  320. data/src/core/lib/support/string.h +11 -8
  321. data/src/core/lib/support/subprocess_posix.c +5 -2
  322. data/src/core/lib/support/thd.c +1 -1
  323. data/src/core/lib/support/time.c +43 -79
  324. data/src/core/lib/support/time_posix.c +1 -1
  325. data/src/core/lib/support/tmpfile.h +0 -2
  326. data/src/core/lib/surface/alarm.c +4 -1
  327. data/src/core/lib/surface/byte_buffer.c +17 -11
  328. data/src/core/lib/surface/byte_buffer_reader.c +23 -15
  329. data/src/core/lib/surface/call.c +294 -276
  330. data/src/core/lib/surface/call.h +24 -9
  331. data/src/core/lib/surface/call_log_batch.c +5 -3
  332. data/src/core/lib/surface/channel.c +127 -111
  333. data/src/core/lib/surface/channel.h +14 -5
  334. data/src/core/lib/surface/channel_init.c +1 -1
  335. data/src/core/lib/surface/channel_init.h +10 -1
  336. data/src/core/lib/surface/channel_ping.c +7 -6
  337. data/src/core/lib/surface/completion_queue.c +154 -18
  338. data/src/core/lib/surface/completion_queue.h +5 -0
  339. data/src/core/lib/surface/init.c +40 -6
  340. data/src/core/lib/surface/init.h +1 -0
  341. data/src/core/lib/surface/init_secure.c +5 -2
  342. data/src/core/lib/surface/lame_client.c +28 -18
  343. data/src/core/lib/surface/server.c +134 -87
  344. data/src/core/lib/surface/server.h +8 -0
  345. data/src/core/lib/surface/validate_metadata.c +1 -1
  346. data/src/core/lib/surface/version.c +3 -1
  347. data/src/core/lib/transport/byte_stream.c +7 -4
  348. data/src/core/lib/transport/byte_stream.h +6 -10
  349. data/src/core/lib/transport/connectivity_state.c +21 -12
  350. data/src/core/lib/transport/connectivity_state.h +4 -1
  351. data/src/core/lib/transport/mdstr_hash_table.c +118 -0
  352. data/src/core/lib/transport/mdstr_hash_table.h +77 -0
  353. data/src/core/lib/transport/metadata.c +83 -60
  354. data/src/core/lib/transport/metadata.h +41 -23
  355. data/src/core/lib/transport/metadata_batch.c +17 -11
  356. data/src/core/lib/transport/metadata_batch.h +20 -6
  357. data/src/core/lib/transport/pid_controller.c +57 -0
  358. data/src/core/lib/transport/pid_controller.h +64 -0
  359. data/src/core/lib/transport/service_config.c +251 -0
  360. data/src/core/lib/transport/service_config.h +71 -0
  361. data/src/core/lib/transport/static_metadata.c +18 -16
  362. data/src/core/lib/transport/static_metadata.h +113 -107
  363. data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
  364. data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
  365. data/src/core/lib/transport/transport.c +84 -23
  366. data/src/core/lib/transport/transport.h +53 -8
  367. data/src/core/lib/transport/transport_impl.h +3 -0
  368. data/src/core/lib/transport/transport_op_string.c +92 -20
  369. data/src/core/lib/tsi/ssl_transport_security.c +3 -1
  370. data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
  371. data/src/ruby/ext/grpc/extconf.rb +0 -1
  372. data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
  373. data/src/ruby/ext/grpc/rb_call.c +15 -5
  374. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  375. data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
  376. data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
  377. data/src/ruby/ext/grpc/rb_grpc.c +3 -1
  378. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
  379. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
  380. data/src/ruby/ext/grpc/rb_server.c +18 -12
  381. data/src/ruby/lib/grpc/errors.rb +154 -2
  382. data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
  383. data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
  384. data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
  385. data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
  386. data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
  387. data/src/ruby/lib/grpc/generic/service.rb +3 -2
  388. data/src/ruby/lib/grpc/version.rb +1 -1
  389. data/src/ruby/pb/grpc/health/checker.rb +3 -1
  390. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
  391. data/src/ruby/pb/test/client.rb +307 -7
  392. data/src/ruby/pb/test/server.rb +26 -1
  393. data/src/ruby/spec/compression_options_spec.rb +164 -0
  394. data/src/ruby/spec/error_sanity_spec.rb +64 -0
  395. data/src/ruby/spec/generic/active_call_spec.rb +290 -12
  396. data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
  397. data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
  398. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
  399. data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
  400. data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
  401. data/src/ruby/spec/spec_helper.rb +2 -0
  402. data/third_party/boringssl/crypto/aes/aes.c +12 -12
  403. data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
  404. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
  405. data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
  406. data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
  407. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  408. data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
  409. data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
  410. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
  411. data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
  412. data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
  413. data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
  414. data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
  415. data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
  416. data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
  417. data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
  418. data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
  419. data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
  420. data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
  421. data/third_party/boringssl/crypto/base64/base64.c +249 -285
  422. data/third_party/boringssl/crypto/bio/bio.c +13 -23
  423. data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
  424. data/third_party/boringssl/crypto/bio/connect.c +12 -3
  425. data/third_party/boringssl/crypto/bio/fd.c +22 -15
  426. data/third_party/boringssl/crypto/bio/file.c +2 -38
  427. data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
  428. data/third_party/boringssl/crypto/bio/internal.h +3 -0
  429. data/third_party/boringssl/crypto/bio/pair.c +1 -1
  430. data/third_party/boringssl/crypto/bio/socket.c +10 -2
  431. data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
  432. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
  433. data/third_party/boringssl/crypto/bn/bn.c +38 -0
  434. data/third_party/boringssl/crypto/bn/cmp.c +25 -0
  435. data/third_party/boringssl/crypto/bn/convert.c +73 -76
  436. data/third_party/boringssl/crypto/bn/div.c +136 -70
  437. data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
  438. data/third_party/boringssl/crypto/bn/gcd.c +213 -296
  439. data/third_party/boringssl/crypto/bn/generic.c +0 -80
  440. data/third_party/boringssl/crypto/bn/internal.h +15 -3
  441. data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
  442. data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
  443. data/third_party/boringssl/crypto/bn/mul.c +2 -1
  444. data/third_party/boringssl/crypto/bn/prime.c +24 -8
  445. data/third_party/boringssl/crypto/bn/random.c +47 -33
  446. data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
  447. data/third_party/boringssl/crypto/buf/buf.c +25 -21
  448. data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
  449. data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
  450. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
  451. data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
  452. data/third_party/boringssl/crypto/cipher/aead.c +11 -22
  453. data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
  454. data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
  455. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
  456. data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
  457. data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
  458. data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
  459. data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
  460. data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
  461. data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
  462. data/third_party/boringssl/crypto/cipher/internal.h +8 -10
  463. data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
  464. data/third_party/boringssl/crypto/conf/conf.c +2 -1
  465. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
  466. data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
  467. data/third_party/boringssl/crypto/cpu-arm.c +0 -161
  468. data/third_party/boringssl/crypto/cpu-intel.c +5 -3
  469. data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
  470. data/third_party/boringssl/crypto/crypto.c +29 -7
  471. data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
  472. data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
  473. data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
  474. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
  475. data/third_party/boringssl/crypto/dh/check.c +22 -6
  476. data/third_party/boringssl/crypto/dh/dh.c +45 -21
  477. data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
  478. data/third_party/boringssl/crypto/dh/params.c +30 -78
  479. data/third_party/boringssl/crypto/digest/digest.c +3 -3
  480. data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
  481. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
  482. data/third_party/boringssl/crypto/ec/ec.c +84 -140
  483. data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
  484. data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
  485. data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
  486. data/third_party/boringssl/crypto/ec/internal.h +12 -36
  487. data/third_party/boringssl/crypto/ec/oct.c +11 -11
  488. data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
  489. data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
  490. data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
  491. data/third_party/boringssl/crypto/ec/simple.c +81 -201
  492. data/third_party/boringssl/crypto/ec/util-64.c +0 -74
  493. data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
  494. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
  495. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
  496. data/third_party/boringssl/crypto/engine/engine.c +1 -1
  497. data/third_party/boringssl/crypto/err/err.c +3 -3
  498. data/third_party/boringssl/crypto/evp/evp.c +14 -59
  499. data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
  500. data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
  501. data/third_party/boringssl/crypto/evp/internal.h +4 -46
  502. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
  503. data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
  504. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
  505. data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
  506. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
  507. data/third_party/boringssl/crypto/evp/print.c +520 -0
  508. data/third_party/boringssl/crypto/ex_data.c +4 -6
  509. data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
  510. data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
  511. data/third_party/boringssl/crypto/internal.h +57 -77
  512. data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
  513. data/third_party/boringssl/crypto/md4/md4.c +9 -0
  514. data/third_party/boringssl/crypto/mem.c +19 -19
  515. data/third_party/boringssl/crypto/modes/cfb.c +5 -6
  516. data/third_party/boringssl/crypto/modes/ctr.c +10 -18
  517. data/third_party/boringssl/crypto/modes/gcm.c +100 -66
  518. data/third_party/boringssl/crypto/modes/internal.h +15 -27
  519. data/third_party/boringssl/crypto/modes/ofb.c +9 -22
  520. data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
  521. data/third_party/boringssl/crypto/newhope/internal.h +71 -0
  522. data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
  523. data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
  524. data/third_party/boringssl/crypto/newhope/poly.c +183 -0
  525. data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
  526. data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
  527. data/third_party/boringssl/crypto/obj/obj.c +111 -135
  528. data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
  529. data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
  530. data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
  531. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
  532. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
  533. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
  534. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
  535. data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
  536. data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
  537. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
  538. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
  539. data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
  540. data/third_party/boringssl/crypto/rand/rand.c +4 -1
  541. data/third_party/boringssl/crypto/rand/urandom.c +5 -7
  542. data/third_party/boringssl/crypto/rand/windows.c +5 -8
  543. data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
  544. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  545. data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
  546. data/third_party/boringssl/crypto/rsa/internal.h +5 -13
  547. data/third_party/boringssl/crypto/rsa/padding.c +64 -63
  548. data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
  549. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
  550. data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
  551. data/third_party/boringssl/crypto/sha/sha256.c +2 -2
  552. data/third_party/boringssl/crypto/sha/sha512.c +7 -7
  553. data/third_party/boringssl/crypto/stack/stack.c +13 -22
  554. data/third_party/boringssl/crypto/thread.c +21 -12
  555. data/third_party/boringssl/crypto/thread_none.c +6 -2
  556. data/third_party/boringssl/crypto/thread_pthread.c +16 -7
  557. data/third_party/boringssl/crypto/thread_win.c +38 -85
  558. data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
  559. data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
  560. data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
  561. data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
  562. data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
  563. data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
  564. data/third_party/boringssl/crypto/x509/internal.h +66 -0
  565. data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
  566. data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
  567. data/third_party/boringssl/crypto/x509/x509.c +5 -0
  568. data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
  569. data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
  570. data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
  571. data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
  572. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  573. data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
  574. data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
  575. data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
  576. data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
  577. data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
  578. data/third_party/boringssl/crypto/x509/x_name.c +14 -17
  579. data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
  580. data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
  581. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
  582. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
  583. data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
  584. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
  585. data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
  586. data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
  587. data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
  588. data/third_party/boringssl/include/openssl/aead.h +72 -73
  589. data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
  590. data/third_party/boringssl/include/openssl/asn1.h +103 -235
  591. data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
  592. data/third_party/boringssl/include/openssl/asn1t.h +1 -11
  593. data/third_party/boringssl/include/openssl/base.h +145 -3
  594. data/third_party/boringssl/include/openssl/base64.h +20 -17
  595. data/third_party/boringssl/include/openssl/bio.h +59 -34
  596. data/third_party/boringssl/include/openssl/bn.h +118 -51
  597. data/third_party/boringssl/include/openssl/buf.h +15 -0
  598. data/third_party/boringssl/include/openssl/bytestring.h +52 -4
  599. data/third_party/boringssl/include/openssl/chacha.h +2 -2
  600. data/third_party/boringssl/include/openssl/cipher.h +18 -1
  601. data/third_party/boringssl/include/openssl/cmac.h +11 -0
  602. data/third_party/boringssl/include/openssl/conf.h +13 -2
  603. data/third_party/boringssl/include/openssl/cpu.h +20 -23
  604. data/third_party/boringssl/include/openssl/crypto.h +22 -1
  605. data/third_party/boringssl/include/openssl/curve25519.h +96 -4
  606. data/third_party/boringssl/include/openssl/dh.h +71 -16
  607. data/third_party/boringssl/include/openssl/digest.h +38 -11
  608. data/third_party/boringssl/include/openssl/dsa.h +40 -4
  609. data/third_party/boringssl/include/openssl/ec.h +44 -18
  610. data/third_party/boringssl/include/openssl/ec_key.h +27 -6
  611. data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
  612. data/third_party/boringssl/include/openssl/engine.h +11 -0
  613. data/third_party/boringssl/include/openssl/evp.h +52 -88
  614. data/third_party/boringssl/include/openssl/hkdf.h +24 -4
  615. data/third_party/boringssl/include/openssl/hmac.h +20 -6
  616. data/third_party/boringssl/include/openssl/md4.h +4 -0
  617. data/third_party/boringssl/include/openssl/mem.h +19 -0
  618. data/third_party/boringssl/include/openssl/newhope.h +158 -0
  619. data/third_party/boringssl/include/openssl/nid.h +4166 -0
  620. data/third_party/boringssl/include/openssl/obj.h +31 -3
  621. data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
  622. data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
  623. data/third_party/boringssl/include/openssl/pem.h +5 -0
  624. data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
  625. data/third_party/boringssl/include/openssl/rand.h +6 -0
  626. data/third_party/boringssl/include/openssl/rc4.h +6 -0
  627. data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
  628. data/third_party/boringssl/include/openssl/rsa.h +127 -65
  629. data/third_party/boringssl/include/openssl/sha.h +14 -10
  630. data/third_party/boringssl/include/openssl/ssl.h +561 -275
  631. data/third_party/boringssl/include/openssl/ssl3.h +18 -25
  632. data/third_party/boringssl/include/openssl/stack.h +2 -4
  633. data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
  634. data/third_party/boringssl/include/openssl/thread.h +31 -13
  635. data/third_party/boringssl/include/openssl/time_support.h +1 -0
  636. data/third_party/boringssl/include/openssl/tls1.h +37 -33
  637. data/third_party/boringssl/include/openssl/x509.h +69 -26
  638. data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
  639. data/third_party/boringssl/include/openssl/x509v3.h +23 -2
  640. data/third_party/boringssl/ssl/custom_extensions.c +3 -5
  641. data/third_party/boringssl/ssl/d1_both.c +463 -499
  642. data/third_party/boringssl/ssl/d1_lib.c +38 -109
  643. data/third_party/boringssl/ssl/d1_pkt.c +173 -334
  644. data/third_party/boringssl/ssl/d1_srtp.c +20 -18
  645. data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
  646. data/third_party/boringssl/ssl/dtls_record.c +27 -26
  647. data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
  648. data/third_party/boringssl/ssl/handshake_server.c +1932 -0
  649. data/third_party/boringssl/ssl/internal.h +712 -439
  650. data/third_party/boringssl/ssl/s3_both.c +445 -257
  651. data/third_party/boringssl/ssl/s3_enc.c +53 -36
  652. data/third_party/boringssl/ssl/s3_lib.c +23 -268
  653. data/third_party/boringssl/ssl/s3_pkt.c +168 -364
  654. data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
  655. data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
  656. data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
  657. data/third_party/boringssl/ssl/ssl_cert.c +324 -49
  658. data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
  659. data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
  660. data/third_party/boringssl/ssl/ssl_file.c +21 -68
  661. data/third_party/boringssl/ssl/ssl_lib.c +881 -510
  662. data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
  663. data/third_party/boringssl/ssl/ssl_session.c +324 -103
  664. data/third_party/boringssl/ssl/ssl_stat.c +6 -88
  665. data/third_party/boringssl/ssl/t1_enc.c +23 -39
  666. data/third_party/boringssl/ssl/t1_lib.c +1120 -622
  667. data/third_party/boringssl/ssl/tls13_both.c +440 -0
  668. data/third_party/boringssl/ssl/tls13_client.c +682 -0
  669. data/third_party/boringssl/ssl/tls13_enc.c +391 -0
  670. data/third_party/boringssl/ssl/tls13_server.c +672 -0
  671. data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
  672. data/third_party/boringssl/ssl/tls_record.c +159 -77
  673. data/third_party/nanopb/pb.h +60 -28
  674. data/third_party/nanopb/pb_decode.c +120 -92
  675. data/third_party/nanopb/pb_decode.h +3 -3
  676. data/third_party/nanopb/pb_encode.c +73 -67
  677. data/third_party/nanopb/pb_encode.h +4 -4
  678. metadata +155 -89
  679. data/include/grpc/impl/codegen/byte_buffer.h +0 -122
  680. data/include/grpc/impl/codegen/log.h +0 -118
  681. data/include/grpc/impl/codegen/time.h +0 -130
  682. data/src/core/ext/client_config/client_channel.c +0 -593
  683. data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
  684. data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
  685. data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
  686. data/src/core/lib/iomgr/workqueue_posix.c +0 -151
  687. data/src/core/lib/security/transport/handshake.c +0 -368
  688. data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
  689. data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
  690. data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
  691. data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
  692. data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
  693. data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
  694. data/third_party/boringssl/crypto/directory.h +0 -66
  695. data/third_party/boringssl/crypto/directory_posix.c +0 -108
  696. data/third_party/boringssl/crypto/directory_win.c +0 -144
  697. data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
  698. data/third_party/boringssl/include/openssl/pqueue.h +0 -146
  699. data/third_party/boringssl/ssl/d1_clnt.c +0 -561
  700. data/third_party/boringssl/ssl/d1_srvr.c +0 -476
  701. data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
  702. data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
  703. data/third_party/boringssl/ssl/test/async_bio.h +0 -45
  704. data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
  705. data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -31,27 +31,82 @@
31
31
  *
32
32
  */
33
33
 
34
- #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_FACTORY_H
35
- #define GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_FACTORY_H
34
+ #ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
35
+ #define GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
36
36
 
37
- #include "src/core/ext/client_config/client_channel_factory.h"
38
- #include "src/core/ext/client_config/lb_policy.h"
39
- #include "src/core/lib/iomgr/resolve_address.h"
37
+ #include "src/core/ext/client_channel/client_channel_factory.h"
38
+ #include "src/core/ext/client_channel/lb_policy.h"
40
39
 
41
40
  #include "src/core/lib/iomgr/exec_ctx.h"
41
+ #include "src/core/lib/iomgr/resolve_address.h"
42
+
43
+ // Channel arg key for grpc_lb_addresses.
44
+ #define GRPC_ARG_LB_ADDRESSES "grpc.lb_addresses"
42
45
 
43
46
  typedef struct grpc_lb_policy_factory grpc_lb_policy_factory;
44
47
  typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable;
45
48
 
46
- /** grpc_lb_policy provides grpc_client_config objects to grpc_channel
47
- objects */
48
49
  struct grpc_lb_policy_factory {
49
50
  const grpc_lb_policy_factory_vtable *vtable;
50
51
  };
51
52
 
53
+ /** A resolved address alongside any LB related information associated with it.
54
+ * \a user_data, if not NULL, contains opaque data meant to be consumed by the
55
+ * gRPC LB policy. Note that no all LB policies support \a user_data as input.
56
+ * Those who don't will simply ignore it and will correspondingly return NULL in
57
+ * their namesake pick() output argument. */
58
+ typedef struct grpc_lb_address {
59
+ grpc_resolved_address address;
60
+ bool is_balancer;
61
+ char *balancer_name; /* For secure naming. */
62
+ void *user_data;
63
+ } grpc_lb_address;
64
+
65
+ typedef struct grpc_lb_user_data_vtable {
66
+ void *(*copy)(void *);
67
+ void (*destroy)(grpc_exec_ctx *exec_ctx, void *);
68
+ int (*cmp)(void *, void *);
69
+ } grpc_lb_user_data_vtable;
70
+
71
+ typedef struct grpc_lb_addresses {
72
+ size_t num_addresses;
73
+ grpc_lb_address *addresses;
74
+ const grpc_lb_user_data_vtable *user_data_vtable;
75
+ } grpc_lb_addresses;
76
+
77
+ /** Returns a grpc_addresses struct with enough space for
78
+ \a num_addresses addresses. The \a user_data_vtable argument may be
79
+ NULL if no user data will be added. */
80
+ grpc_lb_addresses *grpc_lb_addresses_create(
81
+ size_t num_addresses, const grpc_lb_user_data_vtable *user_data_vtable);
82
+
83
+ /** Creates a copy of \a addresses. */
84
+ grpc_lb_addresses *grpc_lb_addresses_copy(const grpc_lb_addresses *addresses);
85
+
86
+ /** Sets the value of the address at index \a index of \a addresses.
87
+ * \a address is a socket address of length \a address_len.
88
+ * Takes ownership of \a balancer_name. */
89
+ void grpc_lb_addresses_set_address(grpc_lb_addresses *addresses, size_t index,
90
+ void *address, size_t address_len,
91
+ bool is_balancer, char *balancer_name,
92
+ void *user_data);
93
+
94
+ /** Compares \a addresses1 and \a addresses2. */
95
+ int grpc_lb_addresses_cmp(const grpc_lb_addresses *addresses1,
96
+ const grpc_lb_addresses *addresses2);
97
+
98
+ /** Destroys \a addresses. */
99
+ void grpc_lb_addresses_destroy(grpc_exec_ctx *exec_ctx,
100
+ grpc_lb_addresses *addresses);
101
+
102
+ /** Returns a channel arg containing \a addresses. */
103
+ grpc_arg grpc_lb_addresses_create_channel_arg(
104
+ const grpc_lb_addresses *addresses);
105
+
106
+ /** Arguments passed to LB policies. */
52
107
  typedef struct grpc_lb_policy_args {
53
- grpc_resolved_addresses *addresses;
54
108
  grpc_client_channel_factory *client_channel_factory;
109
+ grpc_channel_args *args;
55
110
  } grpc_lb_policy_args;
56
111
 
57
112
  struct grpc_lb_policy_factory_vtable {
@@ -75,4 +130,4 @@ grpc_lb_policy *grpc_lb_policy_factory_create_lb_policy(
75
130
  grpc_exec_ctx *exec_ctx, grpc_lb_policy_factory *factory,
76
131
  grpc_lb_policy_args *args);
77
132
 
78
- #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_FACTORY_H */
133
+ #endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
@@ -31,10 +31,12 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/ext/client_config/lb_policy_registry.h"
34
+ #include "src/core/ext/client_channel/lb_policy_registry.h"
35
35
 
36
36
  #include <string.h>
37
37
 
38
+ #include "src/core/lib/support/string.h"
39
+
38
40
  #define MAX_POLICIES 10
39
41
 
40
42
  static grpc_lb_policy_factory *g_all_of_the_lb_policies[MAX_POLICIES];
@@ -52,8 +54,8 @@ void grpc_lb_policy_registry_shutdown(void) {
52
54
  void grpc_register_lb_policy(grpc_lb_policy_factory *factory) {
53
55
  int i;
54
56
  for (i = 0; i < g_number_of_lb_policies; i++) {
55
- GPR_ASSERT(0 != strcmp(factory->vtable->name,
56
- g_all_of_the_lb_policies[i]->vtable->name));
57
+ GPR_ASSERT(0 != gpr_stricmp(factory->vtable->name,
58
+ g_all_of_the_lb_policies[i]->vtable->name));
57
59
  }
58
60
  GPR_ASSERT(g_number_of_lb_policies != MAX_POLICIES);
59
61
  grpc_lb_policy_factory_ref(factory);
@@ -66,7 +68,7 @@ static grpc_lb_policy_factory *lookup_factory(const char *name) {
66
68
  if (name == NULL) return NULL;
67
69
 
68
70
  for (i = 0; i < g_number_of_lb_policies; i++) {
69
- if (0 == strcmp(name, g_all_of_the_lb_policies[i]->vtable->name)) {
71
+ if (0 == gpr_stricmp(name, g_all_of_the_lb_policies[i]->vtable->name)) {
70
72
  return g_all_of_the_lb_policies[i];
71
73
  }
72
74
  }
@@ -31,10 +31,10 @@
31
31
  *
32
32
  */
33
33
 
34
- #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_REGISTRY_H
35
- #define GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_REGISTRY_H
34
+ #ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
35
+ #define GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
36
36
 
37
- #include "src/core/ext/client_config/lb_policy_factory.h"
37
+ #include "src/core/ext/client_channel/lb_policy_factory.h"
38
38
  #include "src/core/lib/iomgr/exec_ctx.h"
39
39
 
40
40
  /** Initialize the registry and set \a default_factory as the factory to be
@@ -52,4 +52,4 @@ void grpc_register_lb_policy(grpc_lb_policy_factory *factory);
52
52
  grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name,
53
53
  grpc_lb_policy_args *args);
54
54
 
55
- #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_REGISTRY_H */
55
+ #endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */
@@ -31,11 +31,12 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/ext/client_config/parse_address.h"
34
+ #include "src/core/ext/client_channel/parse_address.h"
35
+ #include "src/core/lib/iomgr/sockaddr.h"
35
36
 
36
37
  #include <stdio.h>
37
38
  #include <string.h>
38
- #ifdef GPR_HAVE_UNIX_SOCKET
39
+ #ifdef GRPC_HAVE_UNIX_SOCKET
39
40
  #include <sys/un.h>
40
41
  #endif
41
42
 
@@ -44,33 +45,39 @@
44
45
  #include <grpc/support/log.h>
45
46
  #include <grpc/support/string_util.h>
46
47
 
47
- #ifdef GPR_HAVE_UNIX_SOCKET
48
- int parse_unix(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
49
- struct sockaddr_un *un = (struct sockaddr_un *)addr;
48
+ #ifdef GRPC_HAVE_UNIX_SOCKET
49
+
50
+ int parse_unix(grpc_uri *uri, grpc_resolved_address *resolved_addr) {
51
+ struct sockaddr_un *un = (struct sockaddr_un *)resolved_addr->addr;
50
52
 
51
53
  un->sun_family = AF_UNIX;
52
54
  strcpy(un->sun_path, uri->path);
53
- *len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
55
+ resolved_addr->len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
54
56
 
55
57
  return 1;
56
58
  }
57
- #endif
58
59
 
59
- int parse_ipv4(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
60
+ #else /* GRPC_HAVE_UNIX_SOCKET */
61
+
62
+ int parse_unix(grpc_uri *uri, grpc_resolved_address *resolved_addr) { abort(); }
63
+
64
+ #endif /* GRPC_HAVE_UNIX_SOCKET */
65
+
66
+ int parse_ipv4(grpc_uri *uri, grpc_resolved_address *resolved_addr) {
60
67
  const char *host_port = uri->path;
61
68
  char *host;
62
69
  char *port;
63
70
  int port_num;
64
71
  int result = 0;
65
- struct sockaddr_in *in = (struct sockaddr_in *)addr;
72
+ struct sockaddr_in *in = (struct sockaddr_in *)resolved_addr->addr;
66
73
 
67
74
  if (*host_port == '/') ++host_port;
68
75
  if (!gpr_split_host_port(host_port, &host, &port)) {
69
76
  return 0;
70
77
  }
71
78
 
72
- memset(in, 0, sizeof(*in));
73
- *len = sizeof(*in);
79
+ memset(resolved_addr, 0, sizeof(grpc_resolved_address));
80
+ resolved_addr->len = sizeof(struct sockaddr_in);
74
81
  in->sin_family = AF_INET;
75
82
  if (inet_pton(AF_INET, host, &in->sin_addr) == 0) {
76
83
  gpr_log(GPR_ERROR, "invalid ipv4 address: '%s'", host);
@@ -96,13 +103,13 @@ done:
96
103
  return result;
97
104
  }
98
105
 
99
- int parse_ipv6(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
106
+ int parse_ipv6(grpc_uri *uri, grpc_resolved_address *resolved_addr) {
100
107
  const char *host_port = uri->path;
101
108
  char *host;
102
109
  char *port;
103
110
  int port_num;
104
111
  int result = 0;
105
- struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)addr;
112
+ struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)resolved_addr->addr;
106
113
 
107
114
  if (*host_port == '/') ++host_port;
108
115
  if (!gpr_split_host_port(host_port, &host, &port)) {
@@ -110,7 +117,7 @@ int parse_ipv6(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
110
117
  }
111
118
 
112
119
  memset(in6, 0, sizeof(*in6));
113
- *len = sizeof(*in6);
120
+ resolved_addr->len = sizeof(*in6);
114
121
  in6->sin6_family = AF_INET6;
115
122
  if (inet_pton(AF_INET6, host, &in6->sin6_addr) == 0) {
116
123
  gpr_log(GPR_ERROR, "invalid ipv6 address: '%s'", host);
@@ -31,26 +31,24 @@
31
31
  *
32
32
  */
33
33
 
34
- #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_PARSE_ADDRESS_H
35
- #define GRPC_CORE_EXT_CLIENT_CONFIG_PARSE_ADDRESS_H
34
+ #ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_PARSE_ADDRESS_H
35
+ #define GRPC_CORE_EXT_CLIENT_CHANNEL_PARSE_ADDRESS_H
36
36
 
37
37
  #include <stddef.h>
38
38
 
39
- #include "src/core/ext/client_config/uri_parser.h"
40
- #include "src/core/lib/iomgr/sockaddr.h"
39
+ #include "src/core/ext/client_channel/uri_parser.h"
40
+ #include "src/core/lib/iomgr/resolve_address.h"
41
41
 
42
- #ifdef GPR_HAVE_UNIX_SOCKET
43
42
  /** Populate \a addr and \a len from \a uri, whose path is expected to contain a
44
43
  * unix socket path. Returns true upon success. */
45
- int parse_unix(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len);
46
- #endif
44
+ int parse_unix(grpc_uri *uri, grpc_resolved_address *resolved_addr);
47
45
 
48
46
  /** Populate /a addr and \a len from \a uri, whose path is expected to contain a
49
47
  * host:port pair. Returns true upon success. */
50
- int parse_ipv4(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len);
48
+ int parse_ipv4(grpc_uri *uri, grpc_resolved_address *resolved_addr);
51
49
 
52
50
  /** Populate /a addr and \a len from \a uri, whose path is expected to contain a
53
51
  * host:port pair. Returns true upon success. */
54
- int parse_ipv6(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len);
52
+ int parse_ipv6(grpc_uri *uri, grpc_resolved_address *resolved_addr);
55
53
 
56
- #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_PARSE_ADDRESS_H */
54
+ #endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_PARSE_ADDRESS_H */
@@ -31,7 +31,7 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/ext/client_config/resolver.h"
34
+ #include "src/core/ext/client_channel/resolver.h"
35
35
 
36
36
  void grpc_resolver_init(grpc_resolver *resolver,
37
37
  const grpc_resolver_vtable *vtable) {
@@ -76,7 +76,6 @@ void grpc_resolver_channel_saw_error(grpc_exec_ctx *exec_ctx,
76
76
  }
77
77
 
78
78
  void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
79
- grpc_client_config **target_config,
80
- grpc_closure *on_complete) {
81
- resolver->vtable->next(exec_ctx, resolver, target_config, on_complete);
79
+ grpc_channel_args **result, grpc_closure *on_complete) {
80
+ resolver->vtable->next(exec_ctx, resolver, result, on_complete);
82
81
  }
@@ -31,18 +31,16 @@
31
31
  *
32
32
  */
33
33
 
34
- #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H
35
- #define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H
34
+ #ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_H
35
+ #define GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_H
36
36
 
37
- #include "src/core/ext/client_config/client_config.h"
38
- #include "src/core/ext/client_config/subchannel.h"
37
+ #include "src/core/ext/client_channel/subchannel.h"
39
38
  #include "src/core/lib/iomgr/iomgr.h"
40
39
 
41
40
  typedef struct grpc_resolver grpc_resolver;
42
41
  typedef struct grpc_resolver_vtable grpc_resolver_vtable;
43
42
 
44
- /** grpc_resolver provides grpc_client_config objects to grpc_channel
45
- objects */
43
+ /** \a grpc_resolver provides \a grpc_channel_args objects to its caller */
46
44
  struct grpc_resolver {
47
45
  const grpc_resolver_vtable *vtable;
48
46
  gpr_refcount refs;
@@ -53,7 +51,7 @@ struct grpc_resolver_vtable {
53
51
  void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
54
52
  void (*channel_saw_error)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
55
53
  void (*next)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
56
- grpc_client_config **target_config, grpc_closure *on_complete);
54
+ grpc_channel_args **result, grpc_closure *on_complete);
57
55
  };
58
56
 
59
57
  #ifdef GRPC_RESOLVER_REFCOUNT_DEBUG
@@ -81,14 +79,12 @@ void grpc_resolver_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
81
79
  void grpc_resolver_channel_saw_error(grpc_exec_ctx *exec_ctx,
82
80
  grpc_resolver *resolver);
83
81
 
84
- /** Get the next client config. Called by the channel to fetch a new
85
- configuration. Expected to set *target_config with a new configuration,
86
- and then schedule on_complete for execution.
82
+ /** Get the next result from the resolver. Expected to set \a *result with
83
+ new channel args and then schedule \a on_complete for execution.
87
84
 
88
- If resolution is fatally broken, set *target_config to NULL and
89
- schedule on_complete. */
85
+ If resolution is fatally broken, set \a *result to NULL and
86
+ schedule \a on_complete. */
90
87
  void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
91
- grpc_client_config **target_config,
92
- grpc_closure *on_complete);
88
+ grpc_channel_args **result, grpc_closure *on_complete);
93
89
 
94
- #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H */
90
+ #endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_H */
@@ -31,7 +31,7 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/ext/client_config/resolver_factory.h"
34
+ #include "src/core/ext/client_channel/resolver_factory.h"
35
35
 
36
36
  void grpc_resolver_factory_ref(grpc_resolver_factory* factory) {
37
37
  factory->vtable->ref(factory);
@@ -43,9 +43,10 @@ void grpc_resolver_factory_unref(grpc_resolver_factory* factory) {
43
43
 
44
44
  /** Create a resolver instance for a name */
45
45
  grpc_resolver* grpc_resolver_factory_create_resolver(
46
- grpc_resolver_factory* factory, grpc_resolver_args* args) {
46
+ grpc_exec_ctx* exec_ctx, grpc_resolver_factory* factory,
47
+ grpc_resolver_args* args) {
47
48
  if (factory == NULL) return NULL;
48
- return factory->vtable->create_resolver(factory, args);
49
+ return factory->vtable->create_resolver(exec_ctx, factory, args);
49
50
  }
50
51
 
51
52
  char* grpc_resolver_factory_get_default_authority(
@@ -31,25 +31,25 @@
31
31
  *
32
32
  */
33
33
 
34
- #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_FACTORY_H
35
- #define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_FACTORY_H
34
+ #ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_FACTORY_H
35
+ #define GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_FACTORY_H
36
36
 
37
- #include "src/core/ext/client_config/client_channel_factory.h"
38
- #include "src/core/ext/client_config/resolver.h"
39
- #include "src/core/ext/client_config/uri_parser.h"
37
+ #include "src/core/ext/client_channel/client_channel_factory.h"
38
+ #include "src/core/ext/client_channel/resolver.h"
39
+ #include "src/core/ext/client_channel/uri_parser.h"
40
+ #include "src/core/lib/iomgr/pollset_set.h"
40
41
 
41
42
  typedef struct grpc_resolver_factory grpc_resolver_factory;
42
43
  typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable;
43
44
 
44
- /** grpc_resolver provides grpc_client_config objects to grpc_channel
45
- objects */
46
45
  struct grpc_resolver_factory {
47
46
  const grpc_resolver_factory_vtable *vtable;
48
47
  };
49
48
 
50
49
  typedef struct grpc_resolver_args {
51
50
  grpc_uri *uri;
52
- grpc_client_channel_factory *client_channel_factory;
51
+ const grpc_channel_args *args;
52
+ grpc_pollset_set *pollset_set;
53
53
  } grpc_resolver_args;
54
54
 
55
55
  struct grpc_resolver_factory_vtable {
@@ -57,7 +57,8 @@ struct grpc_resolver_factory_vtable {
57
57
  void (*unref)(grpc_resolver_factory *factory);
58
58
 
59
59
  /** Implementation of grpc_resolver_factory_create_resolver */
60
- grpc_resolver *(*create_resolver)(grpc_resolver_factory *factory,
60
+ grpc_resolver *(*create_resolver)(grpc_exec_ctx *exec_ctx,
61
+ grpc_resolver_factory *factory,
61
62
  grpc_resolver_args *args);
62
63
 
63
64
  /** Implementation of grpc_resolver_factory_get_default_authority */
@@ -72,11 +73,12 @@ void grpc_resolver_factory_unref(grpc_resolver_factory *resolver);
72
73
 
73
74
  /** Create a resolver instance for a name */
74
75
  grpc_resolver *grpc_resolver_factory_create_resolver(
75
- grpc_resolver_factory *factory, grpc_resolver_args *args);
76
+ grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory,
77
+ grpc_resolver_args *args);
76
78
 
77
79
  /** Return a (freshly allocated with gpr_malloc) string representing
78
80
  the default authority to use for this scheme. */
79
81
  char *grpc_resolver_factory_get_default_authority(
80
82
  grpc_resolver_factory *factory, grpc_uri *uri);
81
83
 
82
- #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_FACTORY_H */
84
+ #endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_FACTORY_H */
@@ -31,7 +31,7 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/ext/client_config/resolver_registry.h"
34
+ #include "src/core/ext/client_channel/resolver_registry.h"
35
35
 
36
36
  #include <string.h>
37
37
 
@@ -40,24 +40,22 @@
40
40
  #include <grpc/support/string_util.h>
41
41
 
42
42
  #define MAX_RESOLVERS 10
43
+ #define DEFAULT_RESOLVER_PREFIX_MAX_LENGTH 32
43
44
 
44
45
  static grpc_resolver_factory *g_all_of_the_resolvers[MAX_RESOLVERS];
45
46
  static int g_number_of_resolvers = 0;
46
47
 
47
- static char *g_default_resolver_prefix;
48
+ static char g_default_resolver_prefix[DEFAULT_RESOLVER_PREFIX_MAX_LENGTH] =
49
+ "dns:///";
48
50
 
49
- void grpc_resolver_registry_init(const char *default_resolver_prefix) {
50
- g_default_resolver_prefix = gpr_strdup(default_resolver_prefix);
51
- }
51
+ void grpc_resolver_registry_init() {}
52
52
 
53
53
  void grpc_resolver_registry_shutdown(void) {
54
- int i;
55
- for (i = 0; i < g_number_of_resolvers; i++) {
54
+ for (int i = 0; i < g_number_of_resolvers; i++) {
56
55
  grpc_resolver_factory_unref(g_all_of_the_resolvers[i]);
57
56
  }
58
- gpr_free(g_default_resolver_prefix);
59
57
  // FIXME(ctiller): this should live in grpc_resolver_registry_init,
60
- // however that would have the client_config plugin call this AFTER we start
58
+ // however that would have the client_channel plugin call this AFTER we start
61
59
  // registering resolvers from third party plugins, and so they'd never show
62
60
  // up.
63
61
  // We likely need some kind of dependency system for plugins.... what form
@@ -65,6 +63,17 @@ void grpc_resolver_registry_shutdown(void) {
65
63
  g_number_of_resolvers = 0;
66
64
  }
67
65
 
66
+ void grpc_resolver_registry_set_default_prefix(
67
+ const char *default_resolver_prefix) {
68
+ const size_t len = strlen(default_resolver_prefix);
69
+ GPR_ASSERT(len < DEFAULT_RESOLVER_PREFIX_MAX_LENGTH &&
70
+ "default resolver prefix too long");
71
+ GPR_ASSERT(len > 0 && "default resolver prefix can't be empty");
72
+ // By the previous assert, default_resolver_prefix is safe to be copied with a
73
+ // plain strcpy.
74
+ strcpy(g_default_resolver_prefix, default_resolver_prefix);
75
+ }
76
+
68
77
  void grpc_register_resolver_type(grpc_resolver_factory *factory) {
69
78
  int i;
70
79
  for (i = 0; i < g_number_of_resolvers; i++) {
@@ -100,52 +109,63 @@ static grpc_resolver_factory *lookup_factory_by_uri(grpc_uri *uri) {
100
109
  }
101
110
 
102
111
  static grpc_resolver_factory *resolve_factory(const char *target,
103
- grpc_uri **uri) {
104
- char *tmp;
112
+ grpc_uri **uri,
113
+ char **canonical_target) {
105
114
  grpc_resolver_factory *factory = NULL;
106
115
 
107
116
  GPR_ASSERT(uri != NULL);
108
117
  *uri = grpc_uri_parse(target, 1);
109
118
  factory = lookup_factory_by_uri(*uri);
110
119
  if (factory == NULL) {
111
- if (g_default_resolver_prefix != NULL) {
112
- grpc_uri_destroy(*uri);
113
- gpr_asprintf(&tmp, "%s%s", g_default_resolver_prefix, target);
114
- *uri = grpc_uri_parse(tmp, 1);
115
- factory = lookup_factory_by_uri(*uri);
116
- if (factory == NULL) {
117
- grpc_uri_destroy(grpc_uri_parse(target, 0));
118
- grpc_uri_destroy(grpc_uri_parse(tmp, 0));
119
- gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
120
- tmp);
121
- }
122
- gpr_free(tmp);
123
- } else {
120
+ grpc_uri_destroy(*uri);
121
+ gpr_asprintf(canonical_target, "%s%s", g_default_resolver_prefix, target);
122
+ *uri = grpc_uri_parse(*canonical_target, 1);
123
+ factory = lookup_factory_by_uri(*uri);
124
+ if (factory == NULL) {
124
125
  grpc_uri_destroy(grpc_uri_parse(target, 0));
125
- gpr_log(GPR_ERROR, "don't know how to resolve '%s'", target);
126
+ grpc_uri_destroy(grpc_uri_parse(*canonical_target, 0));
127
+ gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
128
+ *canonical_target);
126
129
  }
127
130
  }
128
131
  return factory;
129
132
  }
130
133
 
131
- grpc_resolver *grpc_resolver_create(
132
- const char *target, grpc_client_channel_factory *client_channel_factory) {
134
+ grpc_resolver *grpc_resolver_create(grpc_exec_ctx *exec_ctx, const char *target,
135
+ const grpc_channel_args *args,
136
+ grpc_pollset_set *pollset_set) {
133
137
  grpc_uri *uri = NULL;
134
- grpc_resolver_factory *factory = resolve_factory(target, &uri);
138
+ char *canonical_target = NULL;
139
+ grpc_resolver_factory *factory =
140
+ resolve_factory(target, &uri, &canonical_target);
135
141
  grpc_resolver *resolver;
136
- grpc_resolver_args args;
137
- memset(&args, 0, sizeof(args));
138
- args.uri = uri;
139
- args.client_channel_factory = client_channel_factory;
140
- resolver = grpc_resolver_factory_create_resolver(factory, &args);
142
+ grpc_resolver_args resolver_args;
143
+ memset(&resolver_args, 0, sizeof(resolver_args));
144
+ resolver_args.uri = uri;
145
+ resolver_args.args = args;
146
+ resolver_args.pollset_set = pollset_set;
147
+ resolver =
148
+ grpc_resolver_factory_create_resolver(exec_ctx, factory, &resolver_args);
141
149
  grpc_uri_destroy(uri);
150
+ gpr_free(canonical_target);
142
151
  return resolver;
143
152
  }
144
153
 
145
154
  char *grpc_get_default_authority(const char *target) {
146
155
  grpc_uri *uri = NULL;
147
- grpc_resolver_factory *factory = resolve_factory(target, &uri);
156
+ char *canonical_target = NULL;
157
+ grpc_resolver_factory *factory =
158
+ resolve_factory(target, &uri, &canonical_target);
148
159
  char *authority = grpc_resolver_factory_get_default_authority(factory, uri);
149
160
  grpc_uri_destroy(uri);
161
+ gpr_free(canonical_target);
150
162
  return authority;
151
163
  }
164
+
165
+ char *grpc_resolver_factory_add_default_prefix_if_needed(const char *target) {
166
+ grpc_uri *uri = NULL;
167
+ char *canonical_target = NULL;
168
+ resolve_factory(target, &uri, &canonical_target);
169
+ grpc_uri_destroy(uri);
170
+ return canonical_target == NULL ? gpr_strdup(target) : canonical_target;
171
+ }