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
@@ -0,0 +1,39 @@
1
+ //
2
+ // Copyright 2016, Google Inc.
3
+ // All rights reserved.
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ //
31
+
32
+ #ifndef GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H
33
+ #define GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H
34
+
35
+ #include "src/core/lib/channel/channel_stack.h"
36
+
37
+ extern const grpc_channel_filter grpc_message_size_filter;
38
+
39
+ #endif /* GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H */
@@ -40,33 +40,35 @@
40
40
 
41
41
  #include <zlib.h>
42
42
 
43
+ #include "src/core/lib/slice/slice_internal.h"
44
+
43
45
  #define OUTPUT_BLOCK_SIZE 1024
44
46
 
45
- static int zlib_body(z_stream* zs, gpr_slice_buffer* input,
46
- gpr_slice_buffer* output,
47
+ static int zlib_body(grpc_exec_ctx* exec_ctx, z_stream* zs,
48
+ grpc_slice_buffer* input, grpc_slice_buffer* output,
47
49
  int (*flate)(z_stream* zs, int flush)) {
48
50
  int r;
49
51
  int flush;
50
52
  size_t i;
51
- gpr_slice outbuf = gpr_slice_malloc(OUTPUT_BLOCK_SIZE);
53
+ grpc_slice outbuf = grpc_slice_malloc(OUTPUT_BLOCK_SIZE);
52
54
  const uInt uint_max = ~(uInt)0;
53
55
 
54
- GPR_ASSERT(GPR_SLICE_LENGTH(outbuf) <= uint_max);
55
- zs->avail_out = (uInt)GPR_SLICE_LENGTH(outbuf);
56
- zs->next_out = GPR_SLICE_START_PTR(outbuf);
56
+ GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
57
+ zs->avail_out = (uInt)GRPC_SLICE_LENGTH(outbuf);
58
+ zs->next_out = GRPC_SLICE_START_PTR(outbuf);
57
59
  flush = Z_NO_FLUSH;
58
60
  for (i = 0; i < input->count; i++) {
59
61
  if (i == input->count - 1) flush = Z_FINISH;
60
- GPR_ASSERT(GPR_SLICE_LENGTH(input->slices[i]) <= uint_max);
61
- zs->avail_in = (uInt)GPR_SLICE_LENGTH(input->slices[i]);
62
- zs->next_in = GPR_SLICE_START_PTR(input->slices[i]);
62
+ GPR_ASSERT(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
63
+ zs->avail_in = (uInt)GRPC_SLICE_LENGTH(input->slices[i]);
64
+ zs->next_in = GRPC_SLICE_START_PTR(input->slices[i]);
63
65
  do {
64
66
  if (zs->avail_out == 0) {
65
- gpr_slice_buffer_add_indexed(output, outbuf);
66
- outbuf = gpr_slice_malloc(OUTPUT_BLOCK_SIZE);
67
- GPR_ASSERT(GPR_SLICE_LENGTH(outbuf) <= uint_max);
68
- zs->avail_out = (uInt)GPR_SLICE_LENGTH(outbuf);
69
- zs->next_out = GPR_SLICE_START_PTR(outbuf);
67
+ grpc_slice_buffer_add_indexed(output, outbuf);
68
+ outbuf = grpc_slice_malloc(OUTPUT_BLOCK_SIZE);
69
+ GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
70
+ zs->avail_out = (uInt)GRPC_SLICE_LENGTH(outbuf);
71
+ zs->next_out = GRPC_SLICE_START_PTR(outbuf);
70
72
  }
71
73
  r = flate(zs, flush);
72
74
  if (r < 0 && r != Z_BUF_ERROR /* not fatal */) {
@@ -82,12 +84,12 @@ static int zlib_body(z_stream* zs, gpr_slice_buffer* input,
82
84
 
83
85
  GPR_ASSERT(outbuf.refcount);
84
86
  outbuf.data.refcounted.length -= zs->avail_out;
85
- gpr_slice_buffer_add_indexed(output, outbuf);
87
+ grpc_slice_buffer_add_indexed(output, outbuf);
86
88
 
87
89
  return 1;
88
90
 
89
91
  error:
90
- gpr_slice_unref(outbuf);
92
+ grpc_slice_unref_internal(exec_ctx, outbuf);
91
93
  return 0;
92
94
  }
93
95
 
@@ -97,8 +99,8 @@ static void* zalloc_gpr(void* opaque, unsigned int items, unsigned int size) {
97
99
 
98
100
  static void zfree_gpr(void* opaque, void* address) { gpr_free(address); }
99
101
 
100
- static int zlib_compress(gpr_slice_buffer* input, gpr_slice_buffer* output,
101
- int gzip) {
102
+ static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
103
+ grpc_slice_buffer* output, int gzip) {
102
104
  z_stream zs;
103
105
  int r;
104
106
  size_t i;
@@ -110,10 +112,11 @@ static int zlib_compress(gpr_slice_buffer* input, gpr_slice_buffer* output,
110
112
  r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0),
111
113
  8, Z_DEFAULT_STRATEGY);
112
114
  GPR_ASSERT(r == Z_OK);
113
- r = zlib_body(&zs, input, output, deflate) && output->length < input->length;
115
+ r = zlib_body(exec_ctx, &zs, input, output, deflate) &&
116
+ output->length < input->length;
114
117
  if (!r) {
115
118
  for (i = count_before; i < output->count; i++) {
116
- gpr_slice_unref(output->slices[i]);
119
+ grpc_slice_unref_internal(exec_ctx, output->slices[i]);
117
120
  }
118
121
  output->count = count_before;
119
122
  output->length = length_before;
@@ -122,8 +125,8 @@ static int zlib_compress(gpr_slice_buffer* input, gpr_slice_buffer* output,
122
125
  return r;
123
126
  }
124
127
 
125
- static int zlib_decompress(gpr_slice_buffer* input, gpr_slice_buffer* output,
126
- int gzip) {
128
+ static int zlib_decompress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
129
+ grpc_slice_buffer* output, int gzip) {
127
130
  z_stream zs;
128
131
  int r;
129
132
  size_t i;
@@ -134,10 +137,10 @@ static int zlib_decompress(gpr_slice_buffer* input, gpr_slice_buffer* output,
134
137
  zs.zfree = zfree_gpr;
135
138
  r = inflateInit2(&zs, 15 | (gzip ? 16 : 0));
136
139
  GPR_ASSERT(r == Z_OK);
137
- r = zlib_body(&zs, input, output, inflate);
140
+ r = zlib_body(exec_ctx, &zs, input, output, inflate);
138
141
  if (!r) {
139
142
  for (i = count_before; i < output->count; i++) {
140
- gpr_slice_unref(output->slices[i]);
143
+ grpc_slice_unref_internal(exec_ctx, output->slices[i]);
141
144
  }
142
145
  output->count = count_before;
143
146
  output->length = length_before;
@@ -146,25 +149,26 @@ static int zlib_decompress(gpr_slice_buffer* input, gpr_slice_buffer* output,
146
149
  return r;
147
150
  }
148
151
 
149
- static int copy(gpr_slice_buffer* input, gpr_slice_buffer* output) {
152
+ static int copy(grpc_slice_buffer* input, grpc_slice_buffer* output) {
150
153
  size_t i;
151
154
  for (i = 0; i < input->count; i++) {
152
- gpr_slice_buffer_add(output, gpr_slice_ref(input->slices[i]));
155
+ grpc_slice_buffer_add(output, grpc_slice_ref_internal(input->slices[i]));
153
156
  }
154
157
  return 1;
155
158
  }
156
159
 
157
- static int compress_inner(grpc_compression_algorithm algorithm,
158
- gpr_slice_buffer* input, gpr_slice_buffer* output) {
160
+ static int compress_inner(grpc_exec_ctx* exec_ctx,
161
+ grpc_compression_algorithm algorithm,
162
+ grpc_slice_buffer* input, grpc_slice_buffer* output) {
159
163
  switch (algorithm) {
160
164
  case GRPC_COMPRESS_NONE:
161
165
  /* the fallback path always needs to be send uncompressed: we simply
162
166
  rely on that here */
163
167
  return 0;
164
168
  case GRPC_COMPRESS_DEFLATE:
165
- return zlib_compress(input, output, 0);
169
+ return zlib_compress(exec_ctx, input, output, 0);
166
170
  case GRPC_COMPRESS_GZIP:
167
- return zlib_compress(input, output, 1);
171
+ return zlib_compress(exec_ctx, input, output, 1);
168
172
  case GRPC_COMPRESS_ALGORITHMS_COUNT:
169
173
  break;
170
174
  }
@@ -172,24 +176,26 @@ static int compress_inner(grpc_compression_algorithm algorithm,
172
176
  return 0;
173
177
  }
174
178
 
175
- int grpc_msg_compress(grpc_compression_algorithm algorithm,
176
- gpr_slice_buffer* input, gpr_slice_buffer* output) {
177
- if (!compress_inner(algorithm, input, output)) {
179
+ int grpc_msg_compress(grpc_exec_ctx* exec_ctx,
180
+ grpc_compression_algorithm algorithm,
181
+ grpc_slice_buffer* input, grpc_slice_buffer* output) {
182
+ if (!compress_inner(exec_ctx, algorithm, input, output)) {
178
183
  copy(input, output);
179
184
  return 0;
180
185
  }
181
186
  return 1;
182
187
  }
183
188
 
184
- int grpc_msg_decompress(grpc_compression_algorithm algorithm,
185
- gpr_slice_buffer* input, gpr_slice_buffer* output) {
189
+ int grpc_msg_decompress(grpc_exec_ctx* exec_ctx,
190
+ grpc_compression_algorithm algorithm,
191
+ grpc_slice_buffer* input, grpc_slice_buffer* output) {
186
192
  switch (algorithm) {
187
193
  case GRPC_COMPRESS_NONE:
188
194
  return copy(input, output);
189
195
  case GRPC_COMPRESS_DEFLATE:
190
- return zlib_decompress(input, output, 0);
196
+ return zlib_decompress(exec_ctx, input, output, 0);
191
197
  case GRPC_COMPRESS_GZIP:
192
- return zlib_decompress(input, output, 1);
198
+ return zlib_decompress(exec_ctx, input, output, 1);
193
199
  case GRPC_COMPRESS_ALGORITHMS_COUNT:
194
200
  break;
195
201
  }
@@ -35,18 +35,20 @@
35
35
  #define GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H
36
36
 
37
37
  #include <grpc/compression.h>
38
- #include <grpc/support/slice_buffer.h>
38
+ #include <grpc/slice_buffer.h>
39
39
 
40
40
  /* compress 'input' to 'output' using 'algorithm'.
41
41
  On success, appends compressed slices to output and returns 1.
42
42
  On failure, appends uncompressed slices to output and returns 0. */
43
- int grpc_msg_compress(grpc_compression_algorithm algorithm,
44
- gpr_slice_buffer* input, gpr_slice_buffer* output);
43
+ int grpc_msg_compress(grpc_exec_ctx* exec_ctx,
44
+ grpc_compression_algorithm algorithm,
45
+ grpc_slice_buffer* input, grpc_slice_buffer* output);
45
46
 
46
47
  /* decompress 'input' to 'output' using 'algorithm'.
47
48
  On success, appends slices to output and returns 1.
48
49
  On failure, output is unchanged, and returns 0. */
49
- int grpc_msg_decompress(grpc_compression_algorithm algorithm,
50
- gpr_slice_buffer* input, gpr_slice_buffer* output);
50
+ int grpc_msg_decompress(grpc_exec_ctx* exec_ctx,
51
+ grpc_compression_algorithm algorithm,
52
+ grpc_slice_buffer* input, grpc_slice_buffer* output);
51
53
 
52
54
  #endif /* GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H */
@@ -37,14 +37,14 @@
37
37
  #include <stdio.h>
38
38
  #include <string.h>
39
39
 
40
+ #include <grpc/slice.h>
40
41
  #include <grpc/support/alloc.h>
41
- #include <grpc/support/slice.h>
42
42
  #include <grpc/support/string_util.h>
43
43
  #include <grpc/support/useful.h>
44
44
  #include "src/core/lib/support/string.h"
45
45
 
46
46
  static void fill_common_header(const grpc_httpcli_request *request,
47
- gpr_strvec *buf) {
47
+ gpr_strvec *buf, bool connection_close) {
48
48
  size_t i;
49
49
  gpr_strvec_add(buf, gpr_strdup(request->http.path));
50
50
  gpr_strvec_add(buf, gpr_strdup(" HTTP/1.0\r\n"));
@@ -52,7 +52,8 @@ static void fill_common_header(const grpc_httpcli_request *request,
52
52
  gpr_strvec_add(buf, gpr_strdup("Host: "));
53
53
  gpr_strvec_add(buf, gpr_strdup(request->host));
54
54
  gpr_strvec_add(buf, gpr_strdup("\r\n"));
55
- gpr_strvec_add(buf, gpr_strdup("Connection: close\r\n"));
55
+ if (connection_close)
56
+ gpr_strvec_add(buf, gpr_strdup("Connection: close\r\n"));
56
57
  gpr_strvec_add(buf,
57
58
  gpr_strdup("User-Agent: " GRPC_HTTPCLI_USER_AGENT "\r\n"));
58
59
  /* user supplied headers */
@@ -64,25 +65,26 @@ static void fill_common_header(const grpc_httpcli_request *request,
64
65
  }
65
66
  }
66
67
 
67
- gpr_slice grpc_httpcli_format_get_request(const grpc_httpcli_request *request) {
68
+ grpc_slice grpc_httpcli_format_get_request(
69
+ const grpc_httpcli_request *request) {
68
70
  gpr_strvec out;
69
71
  char *flat;
70
72
  size_t flat_len;
71
73
 
72
74
  gpr_strvec_init(&out);
73
75
  gpr_strvec_add(&out, gpr_strdup("GET "));
74
- fill_common_header(request, &out);
76
+ fill_common_header(request, &out, true);
75
77
  gpr_strvec_add(&out, gpr_strdup("\r\n"));
76
78
 
77
79
  flat = gpr_strvec_flatten(&out, &flat_len);
78
80
  gpr_strvec_destroy(&out);
79
81
 
80
- return gpr_slice_new(flat, flat_len, gpr_free);
82
+ return grpc_slice_new(flat, flat_len, gpr_free);
81
83
  }
82
84
 
83
- gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
84
- const char *body_bytes,
85
- size_t body_size) {
85
+ grpc_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
86
+ const char *body_bytes,
87
+ size_t body_size) {
86
88
  gpr_strvec out;
87
89
  char *tmp;
88
90
  size_t out_len;
@@ -91,7 +93,7 @@ gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
91
93
  gpr_strvec_init(&out);
92
94
 
93
95
  gpr_strvec_add(&out, gpr_strdup("POST "));
94
- fill_common_header(request, &out);
96
+ fill_common_header(request, &out, true);
95
97
  if (body_bytes) {
96
98
  uint8_t has_content_type = 0;
97
99
  for (i = 0; i < request->http.hdr_count; i++) {
@@ -116,5 +118,18 @@ gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
116
118
  out_len += body_size;
117
119
  }
118
120
 
119
- return gpr_slice_new(tmp, out_len, gpr_free);
121
+ return grpc_slice_new(tmp, out_len, gpr_free);
122
+ }
123
+
124
+ grpc_slice grpc_httpcli_format_connect_request(
125
+ const grpc_httpcli_request *request) {
126
+ gpr_strvec out;
127
+ gpr_strvec_init(&out);
128
+ gpr_strvec_add(&out, gpr_strdup("CONNECT "));
129
+ fill_common_header(request, &out, false);
130
+ gpr_strvec_add(&out, gpr_strdup("\r\n"));
131
+ size_t flat_len;
132
+ char *flat = gpr_strvec_flatten(&out, &flat_len);
133
+ gpr_strvec_destroy(&out);
134
+ return grpc_slice_new(flat, flat_len, gpr_free);
120
135
  }
@@ -34,12 +34,14 @@
34
34
  #ifndef GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H
35
35
  #define GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H
36
36
 
37
- #include <grpc/support/slice.h>
37
+ #include <grpc/slice.h>
38
38
  #include "src/core/lib/http/httpcli.h"
39
39
 
40
- gpr_slice grpc_httpcli_format_get_request(const grpc_httpcli_request *request);
41
- gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
42
- const char *body_bytes,
43
- size_t body_size);
40
+ grpc_slice grpc_httpcli_format_get_request(const grpc_httpcli_request *request);
41
+ grpc_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
42
+ const char *body_bytes,
43
+ size_t body_size);
44
+ grpc_slice grpc_httpcli_format_connect_request(
45
+ const grpc_httpcli_request *request);
44
46
 
45
47
  #endif /* GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H */
@@ -32,7 +32,6 @@
32
32
  */
33
33
 
34
34
  #include "src/core/lib/http/httpcli.h"
35
- #include "src/core/lib/iomgr/sockaddr.h"
36
35
 
37
36
  #include <string.h>
38
37
 
@@ -48,10 +47,11 @@
48
47
  #include "src/core/lib/iomgr/resolve_address.h"
49
48
  #include "src/core/lib/iomgr/sockaddr_utils.h"
50
49
  #include "src/core/lib/iomgr/tcp_client.h"
50
+ #include "src/core/lib/slice/slice_internal.h"
51
51
  #include "src/core/lib/support/string.h"
52
52
 
53
53
  typedef struct {
54
- gpr_slice request_text;
54
+ grpc_slice request_text;
55
55
  grpc_http_parser parser;
56
56
  grpc_resolved_addresses *addresses;
57
57
  size_t next_address;
@@ -65,12 +65,13 @@ typedef struct {
65
65
  grpc_httpcli_context *context;
66
66
  grpc_polling_entity *pollent;
67
67
  grpc_iomgr_object iomgr_obj;
68
- gpr_slice_buffer incoming;
69
- gpr_slice_buffer outgoing;
68
+ grpc_slice_buffer incoming;
69
+ grpc_slice_buffer outgoing;
70
70
  grpc_closure on_read;
71
71
  grpc_closure done_write;
72
72
  grpc_closure connected;
73
73
  grpc_error *overall_error;
74
+ grpc_resource_quota *resource_quota;
74
75
  } internal_request;
75
76
 
76
77
  static grpc_httpcli_get_override g_get_override = NULL;
@@ -103,7 +104,7 @@ static void finish(grpc_exec_ctx *exec_ctx, internal_request *req,
103
104
  grpc_error *error) {
104
105
  grpc_polling_entity_del_from_pollset_set(exec_ctx, req->pollent,
105
106
  req->context->pollset_set);
106
- grpc_exec_ctx_sched(exec_ctx, req->on_done, error, NULL);
107
+ grpc_closure_sched(exec_ctx, req->on_done, error);
107
108
  grpc_http_parser_destroy(&req->parser);
108
109
  if (req->addresses != NULL) {
109
110
  grpc_resolved_addresses_destroy(req->addresses);
@@ -111,13 +112,14 @@ static void finish(grpc_exec_ctx *exec_ctx, internal_request *req,
111
112
  if (req->ep != NULL) {
112
113
  grpc_endpoint_destroy(exec_ctx, req->ep);
113
114
  }
114
- gpr_slice_unref(req->request_text);
115
+ grpc_slice_unref_internal(exec_ctx, req->request_text);
115
116
  gpr_free(req->host);
116
117
  gpr_free(req->ssl_host_override);
117
118
  grpc_iomgr_unregister_object(&req->iomgr_obj);
118
- gpr_slice_buffer_destroy(&req->incoming);
119
- gpr_slice_buffer_destroy(&req->outgoing);
119
+ grpc_slice_buffer_destroy_internal(exec_ctx, &req->incoming);
120
+ grpc_slice_buffer_destroy_internal(exec_ctx, &req->outgoing);
120
121
  GRPC_ERROR_UNREF(req->overall_error);
122
+ grpc_resource_quota_unref_internal(exec_ctx, req->resource_quota);
121
123
  gpr_free(req);
122
124
  }
123
125
 
@@ -126,7 +128,7 @@ static void append_error(internal_request *req, grpc_error *error) {
126
128
  req->overall_error = GRPC_ERROR_CREATE("Failed HTTP/1 client request");
127
129
  }
128
130
  grpc_resolved_address *addr = &req->addresses->addrs[req->next_address - 1];
129
- char *addr_text = grpc_sockaddr_to_uri((struct sockaddr *)addr->addr);
131
+ char *addr_text = grpc_sockaddr_to_uri(addr);
130
132
  req->overall_error = grpc_error_add_child(
131
133
  req->overall_error,
132
134
  grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, addr_text));
@@ -143,10 +145,10 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
143
145
  size_t i;
144
146
 
145
147
  for (i = 0; i < req->incoming.count; i++) {
146
- if (GPR_SLICE_LENGTH(req->incoming.slices[i])) {
148
+ if (GRPC_SLICE_LENGTH(req->incoming.slices[i])) {
147
149
  req->have_read_byte = 1;
148
150
  grpc_error *err =
149
- grpc_http_parser_parse(&req->parser, req->incoming.slices[i]);
151
+ grpc_http_parser_parse(&req->parser, req->incoming.slices[i], NULL);
150
152
  if (err != GRPC_ERROR_NONE) {
151
153
  finish(exec_ctx, req, err);
152
154
  return;
@@ -177,8 +179,8 @@ static void done_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
177
179
  }
178
180
 
179
181
  static void start_write(grpc_exec_ctx *exec_ctx, internal_request *req) {
180
- gpr_slice_ref(req->request_text);
181
- gpr_slice_buffer_add(&req->outgoing, req->request_text);
182
+ grpc_slice_ref_internal(req->request_text);
183
+ grpc_slice_buffer_add(&req->outgoing, req->request_text);
182
184
  grpc_endpoint_write(exec_ctx, req->ep, &req->outgoing, &req->done_write);
183
185
  }
184
186
 
@@ -223,10 +225,17 @@ static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req,
223
225
  return;
224
226
  }
225
227
  addr = &req->addresses->addrs[req->next_address++];
226
- grpc_closure_init(&req->connected, on_connected, req);
227
- grpc_tcp_client_connect(
228
- exec_ctx, &req->connected, &req->ep, req->context->pollset_set,
229
- (struct sockaddr *)&addr->addr, addr->len, req->deadline);
228
+ grpc_closure_init(&req->connected, on_connected, req,
229
+ grpc_schedule_on_exec_ctx);
230
+ grpc_arg arg;
231
+ arg.key = GRPC_ARG_RESOURCE_QUOTA;
232
+ arg.type = GRPC_ARG_POINTER;
233
+ arg.value.pointer.p = req->resource_quota;
234
+ arg.value.pointer.vtable = grpc_resource_quota_arg_vtable();
235
+ grpc_channel_args args = {1, &arg};
236
+ grpc_tcp_client_connect(exec_ctx, &req->connected, &req->ep,
237
+ req->context->pollset_set, &args, addr,
238
+ req->deadline);
230
239
  }
231
240
 
232
241
  static void on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
@@ -242,10 +251,11 @@ static void on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
242
251
  static void internal_request_begin(grpc_exec_ctx *exec_ctx,
243
252
  grpc_httpcli_context *context,
244
253
  grpc_polling_entity *pollent,
254
+ grpc_resource_quota *resource_quota,
245
255
  const grpc_httpcli_request *request,
246
256
  gpr_timespec deadline, grpc_closure *on_done,
247
257
  grpc_httpcli_response *response,
248
- const char *name, gpr_slice request_text) {
258
+ const char *name, grpc_slice request_text) {
249
259
  internal_request *req = gpr_malloc(sizeof(internal_request));
250
260
  memset(req, 0, sizeof(*req));
251
261
  req->request_text = request_text;
@@ -257,10 +267,12 @@ static void internal_request_begin(grpc_exec_ctx *exec_ctx,
257
267
  req->context = context;
258
268
  req->pollent = pollent;
259
269
  req->overall_error = GRPC_ERROR_NONE;
260
- grpc_closure_init(&req->on_read, on_read, req);
261
- grpc_closure_init(&req->done_write, done_write, req);
262
- gpr_slice_buffer_init(&req->incoming);
263
- gpr_slice_buffer_init(&req->outgoing);
270
+ req->resource_quota = grpc_resource_quota_ref_internal(resource_quota);
271
+ grpc_closure_init(&req->on_read, on_read, req, grpc_schedule_on_exec_ctx);
272
+ grpc_closure_init(&req->done_write, done_write, req,
273
+ grpc_schedule_on_exec_ctx);
274
+ grpc_slice_buffer_init(&req->incoming);
275
+ grpc_slice_buffer_init(&req->outgoing);
264
276
  grpc_iomgr_register_object(&req->iomgr_obj, name);
265
277
  req->host = gpr_strdup(request->host);
266
278
  req->ssl_host_override = gpr_strdup(request->ssl_host_override);
@@ -268,12 +280,16 @@ static void internal_request_begin(grpc_exec_ctx *exec_ctx,
268
280
  GPR_ASSERT(pollent);
269
281
  grpc_polling_entity_add_to_pollset_set(exec_ctx, req->pollent,
270
282
  req->context->pollset_set);
271
- grpc_resolve_address(exec_ctx, request->host, req->handshaker->default_port,
272
- grpc_closure_create(on_resolved, req), &req->addresses);
283
+ grpc_resolve_address(
284
+ exec_ctx, request->host, req->handshaker->default_port,
285
+ req->context->pollset_set,
286
+ grpc_closure_create(on_resolved, req, grpc_schedule_on_exec_ctx),
287
+ &req->addresses);
273
288
  }
274
289
 
275
290
  void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
276
291
  grpc_polling_entity *pollent,
292
+ grpc_resource_quota *resource_quota,
277
293
  const grpc_httpcli_request *request,
278
294
  gpr_timespec deadline, grpc_closure *on_done,
279
295
  grpc_httpcli_response *response) {
@@ -283,14 +299,15 @@ void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
283
299
  return;
284
300
  }
285
301
  gpr_asprintf(&name, "HTTP:GET:%s:%s", request->host, request->http.path);
286
- internal_request_begin(exec_ctx, context, pollent, request, deadline, on_done,
287
- response, name,
302
+ internal_request_begin(exec_ctx, context, pollent, resource_quota, request,
303
+ deadline, on_done, response, name,
288
304
  grpc_httpcli_format_get_request(request));
289
305
  gpr_free(name);
290
306
  }
291
307
 
292
308
  void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
293
309
  grpc_polling_entity *pollent,
310
+ grpc_resource_quota *resource_quota,
294
311
  const grpc_httpcli_request *request,
295
312
  const char *body_bytes, size_t body_size,
296
313
  gpr_timespec deadline, grpc_closure *on_done,
@@ -303,7 +320,8 @@ void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
303
320
  }
304
321
  gpr_asprintf(&name, "HTTP:POST:%s:%s", request->host, request->http.path);
305
322
  internal_request_begin(
306
- exec_ctx, context, pollent, request, deadline, on_done, response, name,
323
+ exec_ctx, context, pollent, resource_quota, request, deadline, on_done,
324
+ response, name,
307
325
  grpc_httpcli_format_post_request(request, body_bytes, body_size));
308
326
  gpr_free(name);
309
327
  }