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
@@ -54,18 +54,20 @@ typedef struct {
54
54
  grpc_credentials_metadata_cb cb;
55
55
  } grpc_composite_call_credentials_metadata_context;
56
56
 
57
- static void composite_call_destruct(grpc_call_credentials *creds) {
57
+ static void composite_call_destruct(grpc_exec_ctx *exec_ctx,
58
+ grpc_call_credentials *creds) {
58
59
  grpc_composite_call_credentials *c = (grpc_composite_call_credentials *)creds;
59
60
  size_t i;
60
61
  for (i = 0; i < c->inner.num_creds; i++) {
61
- grpc_call_credentials_unref(c->inner.creds_array[i]);
62
+ grpc_call_credentials_unref(exec_ctx, c->inner.creds_array[i]);
62
63
  }
63
64
  gpr_free(c->inner.creds_array);
64
65
  }
65
66
 
66
67
  static void composite_call_md_context_destroy(
68
+ grpc_exec_ctx *exec_ctx,
67
69
  grpc_composite_call_credentials_metadata_context *ctx) {
68
- grpc_credentials_md_store_unref(ctx->md_elems);
70
+ grpc_credentials_md_store_unref(exec_ctx, ctx->md_elems);
69
71
  gpr_free(ctx);
70
72
  }
71
73
 
@@ -103,7 +105,7 @@ static void composite_call_metadata_cb(grpc_exec_ctx *exec_ctx, void *user_data,
103
105
  /* We're done!. */
104
106
  ctx->cb(exec_ctx, ctx->user_data, ctx->md_elems->entries,
105
107
  ctx->md_elems->num_entries, GRPC_CREDENTIALS_OK, NULL);
106
- composite_call_md_context_destroy(ctx);
108
+ composite_call_md_context_destroy(exec_ctx, ctx);
107
109
  }
108
110
 
109
111
  static void composite_call_get_request_metadata(
@@ -209,17 +211,19 @@ grpc_call_credentials *grpc_credentials_contains_type(
209
211
 
210
212
  /* -- Composite channel credentials. -- */
211
213
 
212
- static void composite_channel_destruct(grpc_channel_credentials *creds) {
214
+ static void composite_channel_destruct(grpc_exec_ctx *exec_ctx,
215
+ grpc_channel_credentials *creds) {
213
216
  grpc_composite_channel_credentials *c =
214
217
  (grpc_composite_channel_credentials *)creds;
215
- grpc_channel_credentials_unref(c->inner_creds);
216
- grpc_call_credentials_unref(c->call_creds);
218
+ grpc_channel_credentials_unref(exec_ctx, c->inner_creds);
219
+ grpc_call_credentials_unref(exec_ctx, c->call_creds);
217
220
  }
218
221
 
219
222
  static grpc_security_status composite_channel_create_security_connector(
220
- grpc_channel_credentials *creds, grpc_call_credentials *call_creds,
221
- const char *target, const grpc_channel_args *args,
222
- grpc_channel_security_connector **sc, grpc_channel_args **new_args) {
223
+ grpc_exec_ctx *exec_ctx, grpc_channel_credentials *creds,
224
+ grpc_call_credentials *call_creds, const char *target,
225
+ const grpc_channel_args *args, grpc_channel_security_connector **sc,
226
+ grpc_channel_args **new_args) {
223
227
  grpc_composite_channel_credentials *c =
224
228
  (grpc_composite_channel_credentials *)creds;
225
229
  grpc_security_status status = GRPC_SECURITY_ERROR;
@@ -233,17 +237,27 @@ static grpc_security_status composite_channel_create_security_connector(
233
237
  grpc_call_credentials *composite_call_creds =
234
238
  grpc_composite_call_credentials_create(c->call_creds, call_creds, NULL);
235
239
  status = c->inner_creds->vtable->create_security_connector(
236
- c->inner_creds, composite_call_creds, target, args, sc, new_args);
237
- grpc_call_credentials_unref(composite_call_creds);
240
+ exec_ctx, c->inner_creds, composite_call_creds, target, args, sc,
241
+ new_args);
242
+ grpc_call_credentials_unref(exec_ctx, composite_call_creds);
238
243
  } else {
239
244
  status = c->inner_creds->vtable->create_security_connector(
240
- c->inner_creds, c->call_creds, target, args, sc, new_args);
245
+ exec_ctx, c->inner_creds, c->call_creds, target, args, sc, new_args);
241
246
  }
242
247
  return status;
243
248
  }
244
249
 
250
+ static grpc_channel_credentials *
251
+ composite_channel_duplicate_without_call_credentials(
252
+ grpc_channel_credentials *creds) {
253
+ grpc_composite_channel_credentials *c =
254
+ (grpc_composite_channel_credentials *)creds;
255
+ return grpc_channel_credentials_ref(c->inner_creds);
256
+ }
257
+
245
258
  static grpc_channel_credentials_vtable composite_channel_credentials_vtable = {
246
- composite_channel_destruct, composite_channel_create_security_connector};
259
+ composite_channel_destruct, composite_channel_create_security_connector,
260
+ composite_channel_duplicate_without_call_credentials};
247
261
 
248
262
  grpc_channel_credentials *grpc_composite_channel_credentials_create(
249
263
  grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds,
@@ -53,7 +53,7 @@ grpc_call_credentials *grpc_credentials_contains_type(
53
53
  grpc_call_credentials *creds, const char *type,
54
54
  grpc_call_credentials **composite_creds);
55
55
 
56
- /* -- Channel composite credentials. -- */
56
+ /* -- Composite channel credentials. -- */
57
57
 
58
58
  typedef struct {
59
59
  grpc_channel_credentials base;
@@ -61,7 +61,7 @@ typedef struct {
61
61
  grpc_call_credentials *call_creds;
62
62
  } grpc_composite_channel_credentials;
63
63
 
64
- /* -- Composite credentials. -- */
64
+ /* -- Composite call credentials. -- */
65
65
 
66
66
  typedef struct {
67
67
  grpc_call_credentials base;
@@ -66,8 +66,8 @@ grpc_credentials_metadata_request *grpc_credentials_metadata_request_create(
66
66
  }
67
67
 
68
68
  void grpc_credentials_metadata_request_destroy(
69
- grpc_credentials_metadata_request *r) {
70
- grpc_call_credentials_unref(r->creds);
69
+ grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *r) {
70
+ grpc_call_credentials_unref(exec_ctx, r->creds);
71
71
  grpc_http_response_destroy(&r->response);
72
72
  gpr_free(r);
73
73
  }
@@ -79,17 +79,22 @@ grpc_channel_credentials *grpc_channel_credentials_ref(
79
79
  return creds;
80
80
  }
81
81
 
82
- void grpc_channel_credentials_unref(grpc_channel_credentials *creds) {
82
+ void grpc_channel_credentials_unref(grpc_exec_ctx *exec_ctx,
83
+ grpc_channel_credentials *creds) {
83
84
  if (creds == NULL) return;
84
85
  if (gpr_unref(&creds->refcount)) {
85
- if (creds->vtable->destruct != NULL) creds->vtable->destruct(creds);
86
+ if (creds->vtable->destruct != NULL) {
87
+ creds->vtable->destruct(exec_ctx, creds);
88
+ }
86
89
  gpr_free(creds);
87
90
  }
88
91
  }
89
92
 
90
93
  void grpc_channel_credentials_release(grpc_channel_credentials *creds) {
91
94
  GRPC_API_TRACE("grpc_channel_credentials_release(creds=%p)", 1, (creds));
92
- grpc_channel_credentials_unref(creds);
95
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
96
+ grpc_channel_credentials_unref(&exec_ctx, creds);
97
+ grpc_exec_ctx_finish(&exec_ctx);
93
98
  }
94
99
 
95
100
  grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds) {
@@ -98,17 +103,22 @@ grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds) {
98
103
  return creds;
99
104
  }
100
105
 
101
- void grpc_call_credentials_unref(grpc_call_credentials *creds) {
106
+ void grpc_call_credentials_unref(grpc_exec_ctx *exec_ctx,
107
+ grpc_call_credentials *creds) {
102
108
  if (creds == NULL) return;
103
109
  if (gpr_unref(&creds->refcount)) {
104
- if (creds->vtable->destruct != NULL) creds->vtable->destruct(creds);
110
+ if (creds->vtable->destruct != NULL) {
111
+ creds->vtable->destruct(exec_ctx, creds);
112
+ }
105
113
  gpr_free(creds);
106
114
  }
107
115
  }
108
116
 
109
117
  void grpc_call_credentials_release(grpc_call_credentials *creds) {
110
118
  GRPC_API_TRACE("grpc_call_credentials_release(creds=%p)", 1, (creds));
111
- grpc_call_credentials_unref(creds);
119
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
120
+ grpc_call_credentials_unref(&exec_ctx, creds);
121
+ grpc_exec_ctx_finish(&exec_ctx);
112
122
  }
113
123
 
114
124
  void grpc_call_credentials_get_request_metadata(
@@ -126,16 +136,28 @@ void grpc_call_credentials_get_request_metadata(
126
136
  }
127
137
 
128
138
  grpc_security_status grpc_channel_credentials_create_security_connector(
129
- grpc_channel_credentials *channel_creds, const char *target,
130
- const grpc_channel_args *args, grpc_channel_security_connector **sc,
131
- grpc_channel_args **new_args) {
139
+ grpc_exec_ctx *exec_ctx, grpc_channel_credentials *channel_creds,
140
+ const char *target, const grpc_channel_args *args,
141
+ grpc_channel_security_connector **sc, grpc_channel_args **new_args) {
132
142
  *new_args = NULL;
133
143
  if (channel_creds == NULL) {
134
144
  return GRPC_SECURITY_ERROR;
135
145
  }
136
146
  GPR_ASSERT(channel_creds->vtable->create_security_connector != NULL);
137
147
  return channel_creds->vtable->create_security_connector(
138
- channel_creds, NULL, target, args, sc, new_args);
148
+ exec_ctx, channel_creds, NULL, target, args, sc, new_args);
149
+ }
150
+
151
+ grpc_channel_credentials *
152
+ grpc_channel_credentials_duplicate_without_call_credentials(
153
+ grpc_channel_credentials *channel_creds) {
154
+ if (channel_creds != NULL && channel_creds->vtable != NULL &&
155
+ channel_creds->vtable->duplicate_without_call_credentials != NULL) {
156
+ return channel_creds->vtable->duplicate_without_call_credentials(
157
+ channel_creds);
158
+ } else {
159
+ return grpc_channel_credentials_ref(channel_creds);
160
+ }
139
161
  }
140
162
 
141
163
  grpc_server_credentials *grpc_server_credentials_ref(
@@ -145,10 +167,13 @@ grpc_server_credentials *grpc_server_credentials_ref(
145
167
  return creds;
146
168
  }
147
169
 
148
- void grpc_server_credentials_unref(grpc_server_credentials *creds) {
170
+ void grpc_server_credentials_unref(grpc_exec_ctx *exec_ctx,
171
+ grpc_server_credentials *creds) {
149
172
  if (creds == NULL) return;
150
173
  if (gpr_unref(&creds->refcount)) {
151
- if (creds->vtable->destruct != NULL) creds->vtable->destruct(creds);
174
+ if (creds->vtable->destruct != NULL) {
175
+ creds->vtable->destruct(exec_ctx, creds);
176
+ }
152
177
  if (creds->processor.destroy != NULL && creds->processor.state != NULL) {
153
178
  creds->processor.destroy(creds->processor.state);
154
179
  }
@@ -158,16 +183,19 @@ void grpc_server_credentials_unref(grpc_server_credentials *creds) {
158
183
 
159
184
  void grpc_server_credentials_release(grpc_server_credentials *creds) {
160
185
  GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds));
161
- grpc_server_credentials_unref(creds);
186
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
187
+ grpc_server_credentials_unref(&exec_ctx, creds);
188
+ grpc_exec_ctx_finish(&exec_ctx);
162
189
  }
163
190
 
164
191
  grpc_security_status grpc_server_credentials_create_security_connector(
165
- grpc_server_credentials *creds, grpc_server_security_connector **sc) {
192
+ grpc_exec_ctx *exec_ctx, grpc_server_credentials *creds,
193
+ grpc_server_security_connector **sc) {
166
194
  if (creds == NULL || creds->vtable->create_security_connector == NULL) {
167
195
  gpr_log(GPR_ERROR, "Server credentials cannot create security context.");
168
196
  return GRPC_SECURITY_ERROR;
169
197
  }
170
- return creds->vtable->create_security_connector(creds, sc);
198
+ return creds->vtable->create_security_connector(exec_ctx, creds, sc);
171
199
  }
172
200
 
173
201
  void grpc_server_credentials_set_auth_metadata_processor(
@@ -184,8 +212,9 @@ void grpc_server_credentials_set_auth_metadata_processor(
184
212
  creds->processor = processor;
185
213
  }
186
214
 
187
- static void server_credentials_pointer_arg_destroy(void *p) {
188
- grpc_server_credentials_unref(p);
215
+ static void server_credentials_pointer_arg_destroy(grpc_exec_ctx *exec_ctx,
216
+ void *p) {
217
+ grpc_server_credentials_unref(exec_ctx, p);
189
218
  }
190
219
 
191
220
  static void *server_credentials_pointer_arg_copy(void *p) {
@@ -101,12 +101,16 @@ void grpc_override_well_known_credentials_path_getter(
101
101
  /* --- grpc_channel_credentials. --- */
102
102
 
103
103
  typedef struct {
104
- void (*destruct)(grpc_channel_credentials *c);
104
+ void (*destruct)(grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c);
105
105
 
106
106
  grpc_security_status (*create_security_connector)(
107
- grpc_channel_credentials *c, grpc_call_credentials *call_creds,
108
- const char *target, const grpc_channel_args *args,
109
- grpc_channel_security_connector **sc, grpc_channel_args **new_args);
107
+ grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c,
108
+ grpc_call_credentials *call_creds, const char *target,
109
+ const grpc_channel_args *args, grpc_channel_security_connector **sc,
110
+ grpc_channel_args **new_args);
111
+
112
+ grpc_channel_credentials *(*duplicate_without_call_credentials)(
113
+ grpc_channel_credentials *c);
110
114
  } grpc_channel_credentials_vtable;
111
115
 
112
116
  struct grpc_channel_credentials {
@@ -117,22 +121,30 @@ struct grpc_channel_credentials {
117
121
 
118
122
  grpc_channel_credentials *grpc_channel_credentials_ref(
119
123
  grpc_channel_credentials *creds);
120
- void grpc_channel_credentials_unref(grpc_channel_credentials *creds);
124
+ void grpc_channel_credentials_unref(grpc_exec_ctx *exec_ctx,
125
+ grpc_channel_credentials *creds);
121
126
 
122
127
  /* Creates a security connector for the channel. May also create new channel
123
128
  args for the channel to be used in place of the passed in const args if
124
129
  returned non NULL. In that case the caller is responsible for destroying
125
130
  new_args after channel creation. */
126
131
  grpc_security_status grpc_channel_credentials_create_security_connector(
127
- grpc_channel_credentials *creds, const char *target,
128
- const grpc_channel_args *args, grpc_channel_security_connector **sc,
129
- grpc_channel_args **new_args);
132
+ grpc_exec_ctx *exec_ctx, grpc_channel_credentials *creds,
133
+ const char *target, const grpc_channel_args *args,
134
+ grpc_channel_security_connector **sc, grpc_channel_args **new_args);
135
+
136
+ /* Creates a version of the channel credentials without any attached call
137
+ credentials. This can be used in order to open a channel to a non-trusted
138
+ gRPC load balancer. */
139
+ grpc_channel_credentials *
140
+ grpc_channel_credentials_duplicate_without_call_credentials(
141
+ grpc_channel_credentials *creds);
130
142
 
131
143
  /* --- grpc_credentials_md. --- */
132
144
 
133
145
  typedef struct {
134
- gpr_slice key;
135
- gpr_slice value;
146
+ grpc_slice key;
147
+ grpc_slice value;
136
148
  } grpc_credentials_md;
137
149
 
138
150
  typedef struct {
@@ -147,12 +159,13 @@ grpc_credentials_md_store *grpc_credentials_md_store_create(
147
159
 
148
160
  /* Will ref key and value. */
149
161
  void grpc_credentials_md_store_add(grpc_credentials_md_store *store,
150
- gpr_slice key, gpr_slice value);
162
+ grpc_slice key, grpc_slice value);
151
163
  void grpc_credentials_md_store_add_cstrings(grpc_credentials_md_store *store,
152
164
  const char *key, const char *value);
153
165
  grpc_credentials_md_store *grpc_credentials_md_store_ref(
154
166
  grpc_credentials_md_store *store);
155
- void grpc_credentials_md_store_unref(grpc_credentials_md_store *store);
167
+ void grpc_credentials_md_store_unref(grpc_exec_ctx *exec_ctx,
168
+ grpc_credentials_md_store *store);
156
169
 
157
170
  /* --- grpc_call_credentials. --- */
158
171
 
@@ -162,7 +175,7 @@ typedef void (*grpc_credentials_metadata_cb)(
162
175
  size_t num_md, grpc_credentials_status status, const char *error_details);
163
176
 
164
177
  typedef struct {
165
- void (*destruct)(grpc_call_credentials *c);
178
+ void (*destruct)(grpc_exec_ctx *exec_ctx, grpc_call_credentials *c);
166
179
  void (*get_request_metadata)(grpc_exec_ctx *exec_ctx,
167
180
  grpc_call_credentials *c,
168
181
  grpc_polling_entity *pollent,
@@ -178,7 +191,8 @@ struct grpc_call_credentials {
178
191
  };
179
192
 
180
193
  grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds);
181
- void grpc_call_credentials_unref(grpc_call_credentials *creds);
194
+ void grpc_call_credentials_unref(grpc_exec_ctx *exec_ctx,
195
+ grpc_call_credentials *creds);
182
196
  void grpc_call_credentials_get_request_metadata(
183
197
  grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds,
184
198
  grpc_polling_entity *pollent, grpc_auth_metadata_context context,
@@ -192,9 +206,10 @@ grpc_call_credentials *grpc_md_only_test_credentials_create(
192
206
  /* --- grpc_server_credentials. --- */
193
207
 
194
208
  typedef struct {
195
- void (*destruct)(grpc_server_credentials *c);
209
+ void (*destruct)(grpc_exec_ctx *exec_ctx, grpc_server_credentials *c);
196
210
  grpc_security_status (*create_security_connector)(
197
- grpc_server_credentials *c, grpc_server_security_connector **sc);
211
+ grpc_exec_ctx *exec_ctx, grpc_server_credentials *c,
212
+ grpc_server_security_connector **sc);
198
213
  } grpc_server_credentials_vtable;
199
214
 
200
215
  struct grpc_server_credentials {
@@ -205,12 +220,14 @@ struct grpc_server_credentials {
205
220
  };
206
221
 
207
222
  grpc_security_status grpc_server_credentials_create_security_connector(
208
- grpc_server_credentials *creds, grpc_server_security_connector **sc);
223
+ grpc_exec_ctx *exec_ctx, grpc_server_credentials *creds,
224
+ grpc_server_security_connector **sc);
209
225
 
210
226
  grpc_server_credentials *grpc_server_credentials_ref(
211
227
  grpc_server_credentials *creds);
212
228
 
213
- void grpc_server_credentials_unref(grpc_server_credentials *creds);
229
+ void grpc_server_credentials_unref(grpc_exec_ctx *exec_ctx,
230
+ grpc_server_credentials *creds);
214
231
 
215
232
  #define GRPC_SERVER_CREDENTIALS_ARG "grpc.server_credentials"
216
233
 
@@ -233,6 +250,6 @@ grpc_credentials_metadata_request *grpc_credentials_metadata_request_create(
233
250
  void *user_data);
234
251
 
235
252
  void grpc_credentials_metadata_request_destroy(
236
- grpc_credentials_metadata_request *r);
253
+ grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *r);
237
254
 
238
255
  #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_CREDENTIALS_H */
@@ -37,6 +37,8 @@
37
37
 
38
38
  #include <string.h>
39
39
 
40
+ #include "src/core/lib/slice/slice_internal.h"
41
+
40
42
  static void store_ensure_capacity(grpc_credentials_md_store *store) {
41
43
  if (store->num_entries == store->allocated) {
42
44
  store->allocated = (store->allocated == 0) ? 1 : store->allocated * 2;
@@ -59,11 +61,11 @@ grpc_credentials_md_store *grpc_credentials_md_store_create(
59
61
  }
60
62
 
61
63
  void grpc_credentials_md_store_add(grpc_credentials_md_store *store,
62
- gpr_slice key, gpr_slice value) {
64
+ grpc_slice key, grpc_slice value) {
63
65
  if (store == NULL) return;
64
66
  store_ensure_capacity(store);
65
- store->entries[store->num_entries].key = gpr_slice_ref(key);
66
- store->entries[store->num_entries].value = gpr_slice_ref(value);
67
+ store->entries[store->num_entries].key = grpc_slice_ref_internal(key);
68
+ store->entries[store->num_entries].value = grpc_slice_ref_internal(value);
67
69
  store->num_entries++;
68
70
  }
69
71
 
@@ -72,9 +74,9 @@ void grpc_credentials_md_store_add_cstrings(grpc_credentials_md_store *store,
72
74
  const char *value) {
73
75
  if (store == NULL) return;
74
76
  store_ensure_capacity(store);
75
- store->entries[store->num_entries].key = gpr_slice_from_copied_string(key);
77
+ store->entries[store->num_entries].key = grpc_slice_from_copied_string(key);
76
78
  store->entries[store->num_entries].value =
77
- gpr_slice_from_copied_string(value);
79
+ grpc_slice_from_copied_string(value);
78
80
  store->num_entries++;
79
81
  }
80
82
 
@@ -85,14 +87,15 @@ grpc_credentials_md_store *grpc_credentials_md_store_ref(
85
87
  return store;
86
88
  }
87
89
 
88
- void grpc_credentials_md_store_unref(grpc_credentials_md_store *store) {
90
+ void grpc_credentials_md_store_unref(grpc_exec_ctx *exec_ctx,
91
+ grpc_credentials_md_store *store) {
89
92
  if (store == NULL) return;
90
93
  if (gpr_unref(&store->refcount)) {
91
94
  if (store->entries != NULL) {
92
95
  size_t i;
93
96
  for (i = 0; i < store->num_entries; i++) {
94
- gpr_slice_unref(store->entries[i].key);
95
- gpr_slice_unref(store->entries[i].value);
97
+ grpc_slice_unref_internal(exec_ctx, store->entries[i].key);
98
+ grpc_slice_unref_internal(exec_ctx, store->entries[i].value);
96
99
  }
97
100
  gpr_free(store->entries);
98
101
  }
@@ -45,23 +45,25 @@
45
45
  /* -- Fake transport security credentials. -- */
46
46
 
47
47
  static grpc_security_status fake_transport_security_create_security_connector(
48
- grpc_channel_credentials *c, grpc_call_credentials *call_creds,
49
- const char *target, const grpc_channel_args *args,
50
- grpc_channel_security_connector **sc, grpc_channel_args **new_args) {
48
+ grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c,
49
+ grpc_call_credentials *call_creds, const char *target,
50
+ const grpc_channel_args *args, grpc_channel_security_connector **sc,
51
+ grpc_channel_args **new_args) {
51
52
  *sc = grpc_fake_channel_security_connector_create(call_creds);
52
53
  return GRPC_SECURITY_OK;
53
54
  }
54
55
 
55
56
  static grpc_security_status
56
57
  fake_transport_security_server_create_security_connector(
57
- grpc_server_credentials *c, grpc_server_security_connector **sc) {
58
+ grpc_exec_ctx *exec_ctx, grpc_server_credentials *c,
59
+ grpc_server_security_connector **sc) {
58
60
  *sc = grpc_fake_server_security_connector_create();
59
61
  return GRPC_SECURITY_OK;
60
62
  }
61
63
 
62
64
  static grpc_channel_credentials_vtable
63
65
  fake_transport_security_credentials_vtable = {
64
- NULL, fake_transport_security_create_security_connector};
66
+ NULL, fake_transport_security_create_security_connector, NULL};
65
67
 
66
68
  static grpc_server_credentials_vtable
67
69
  fake_transport_security_server_credentials_vtable = {
@@ -89,9 +91,10 @@ grpc_server_credentials *grpc_fake_transport_security_server_credentials_create(
89
91
 
90
92
  /* -- Metadata-only test credentials. -- */
91
93
 
92
- static void md_only_test_destruct(grpc_call_credentials *creds) {
94
+ static void md_only_test_destruct(grpc_exec_ctx *exec_ctx,
95
+ grpc_call_credentials *creds) {
93
96
  grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)creds;
94
- grpc_credentials_md_store_unref(c->md_store);
97
+ grpc_credentials_md_store_unref(exec_ctx, c->md_store);
95
98
  }
96
99
 
97
100
  static void on_simulated_token_fetch_done(grpc_exec_ctx *exec_ctx,
@@ -101,7 +104,7 @@ static void on_simulated_token_fetch_done(grpc_exec_ctx *exec_ctx,
101
104
  grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)r->creds;
102
105
  r->cb(exec_ctx, r->user_data, c->md_store->entries, c->md_store->num_entries,
103
106
  GRPC_CREDENTIALS_OK, NULL);
104
- grpc_credentials_metadata_request_destroy(r);
107
+ grpc_credentials_metadata_request_destroy(exec_ctx, r);
105
108
  }
106
109
 
107
110
  static void md_only_test_get_request_metadata(
@@ -113,9 +116,10 @@ static void md_only_test_get_request_metadata(
113
116
  if (c->is_async) {
114
117
  grpc_credentials_metadata_request *cb_arg =
115
118
  grpc_credentials_metadata_request_create(creds, cb, user_data);
116
- grpc_executor_push(
117
- grpc_closure_create(on_simulated_token_fetch_done, cb_arg),
118
- GRPC_ERROR_NONE);
119
+ grpc_closure_sched(exec_ctx,
120
+ grpc_closure_create(on_simulated_token_fetch_done,
121
+ cb_arg, grpc_executor_scheduler),
122
+ GRPC_ERROR_NONE);
119
123
  } else {
120
124
  cb(exec_ctx, user_data, c->md_store->entries, 1, GRPC_CREDENTIALS_OK, NULL);
121
125
  }