awesome-grpc-that-works 0.12.2 → 0.14.0.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/Makefile +5783 -22121
  4. data/include/grpc/byte_buffer.h +2 -83
  5. data/include/grpc/census.h +173 -121
  6. data/include/grpc/compression.h +14 -38
  7. data/include/grpc/grpc.h +85 -434
  8. data/include/grpc/grpc_security.h +76 -46
  9. data/include/grpc/grpc_zookeeper.h +1 -1
  10. data/include/grpc/impl/codegen/alloc.h +74 -0
  11. data/include/grpc/impl/codegen/atm.h +92 -0
  12. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  13. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  14. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  15. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  16. data/include/grpc/impl/codegen/compression_types.h +73 -0
  17. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  18. data/include/grpc/impl/codegen/grpc_types.h +378 -0
  19. data/include/grpc/impl/codegen/log.h +110 -0
  20. data/include/grpc/impl/codegen/port_platform.h +370 -0
  21. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  22. data/include/grpc/impl/codegen/slice.h +182 -0
  23. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  24. data/include/grpc/impl/codegen/status.h +163 -0
  25. data/include/grpc/impl/codegen/sync.h +316 -0
  26. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  27. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  28. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  29. data/include/grpc/impl/codegen/time.h +130 -0
  30. data/include/grpc/status.h +2 -126
  31. data/include/grpc/support/alloc.h +2 -35
  32. data/include/grpc/support/atm.h +2 -55
  33. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  34. data/include/grpc/support/atm_gcc_sync.h +2 -50
  35. data/include/grpc/support/atm_win32.h +2 -88
  36. data/include/grpc/support/avl.h +10 -9
  37. data/include/grpc/support/cmdline.h +15 -13
  38. data/include/grpc/support/cpu.h +5 -3
  39. data/include/grpc/support/histogram.h +23 -20
  40. data/include/grpc/support/host_port.h +5 -3
  41. data/include/grpc/support/log.h +2 -71
  42. data/include/grpc/support/log_win32.h +2 -2
  43. data/include/grpc/support/port_platform.h +2 -319
  44. data/include/grpc/support/slice.h +2 -145
  45. data/include/grpc/support/slice_buffer.h +2 -65
  46. data/include/grpc/support/string_util.h +3 -3
  47. data/include/grpc/support/subprocess.h +8 -6
  48. data/include/grpc/support/sync.h +2 -278
  49. data/include/grpc/support/sync_generic.h +2 -18
  50. data/include/grpc/support/sync_posix.h +2 -10
  51. data/include/grpc/support/sync_win32.h +2 -12
  52. data/include/grpc/support/thd.h +11 -11
  53. data/include/grpc/support/time.h +2 -91
  54. data/include/grpc/support/tls.h +1 -1
  55. data/include/grpc/support/tls_gcc.h +1 -1
  56. data/include/grpc/support/tls_msvc.h +1 -1
  57. data/include/grpc/support/tls_pthread.h +2 -2
  58. data/include/grpc/support/useful.h +3 -1
  59. data/src/boringssl/err_data.c +1252 -0
  60. data/src/core/census/context.c +471 -8
  61. data/src/core/census/grpc_filter.c +5 -5
  62. data/src/core/census/initialize.c +4 -7
  63. data/src/core/census/mlog.c +600 -0
  64. data/src/core/census/mlog.h +95 -0
  65. data/src/core/census/operation.c +2 -2
  66. data/src/core/census/placeholders.c +109 -0
  67. data/src/core/census/rpc_metric_id.h +6 -6
  68. data/src/core/census/tracing.c +1 -1
  69. data/src/core/channel/channel_args.c +71 -9
  70. data/src/core/channel/channel_args.h +7 -1
  71. data/src/core/channel/channel_stack.c +1 -1
  72. data/src/core/channel/client_channel.c +33 -30
  73. data/src/core/channel/client_uchannel.c +3 -3
  74. data/src/core/channel/compress_filter.c +8 -8
  75. data/src/core/channel/http_client_filter.c +4 -4
  76. data/src/core/channel/http_server_filter.c +11 -11
  77. data/src/core/channel/subchannel_call_holder.c +11 -11
  78. data/src/core/client_config/connector.c +3 -2
  79. data/src/core/client_config/connector.h +2 -2
  80. data/src/core/client_config/lb_policies/load_balancer_api.c +163 -0
  81. data/src/core/client_config/lb_policies/load_balancer_api.h +85 -0
  82. data/src/core/client_config/lb_policies/pick_first.c +57 -40
  83. data/src/core/client_config/lb_policies/round_robin.c +14 -15
  84. data/src/core/client_config/lb_policy.c +3 -3
  85. data/src/core/client_config/lb_policy.h +3 -2
  86. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  87. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  88. data/src/core/client_config/subchannel.c +84 -39
  89. data/src/core/client_config/subchannel.h +15 -6
  90. data/src/core/client_config/subchannel_index.c +261 -0
  91. data/src/core/client_config/subchannel_index.h +77 -0
  92. data/src/core/compression/{algorithm.c → compression_algorithm.c} +3 -3
  93. data/src/core/httpcli/format_request.c +1 -1
  94. data/src/core/httpcli/httpcli.c +18 -16
  95. data/src/core/httpcli/httpcli.h +3 -2
  96. data/src/core/httpcli/httpcli_security_connector.c +9 -10
  97. data/src/core/httpcli/parser.c +7 -7
  98. data/src/core/httpcli/parser.h +1 -1
  99. data/src/core/iomgr/closure.c +7 -7
  100. data/src/core/iomgr/closure.h +6 -5
  101. data/src/core/iomgr/exec_ctx.c +12 -8
  102. data/src/core/iomgr/exec_ctx.h +12 -5
  103. data/src/core/iomgr/executor.c +4 -4
  104. data/src/core/iomgr/executor.h +2 -2
  105. data/src/core/iomgr/fd_posix.c +32 -19
  106. data/src/core/iomgr/fd_posix.h +7 -4
  107. data/src/core/iomgr/iocp_windows.c +7 -9
  108. data/src/core/iomgr/iomgr.c +2 -2
  109. data/src/core/iomgr/pollset.h +9 -10
  110. data/src/core/iomgr/pollset_multipoller_with_epoll.c +71 -5
  111. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +9 -5
  112. data/src/core/iomgr/pollset_posix.c +44 -49
  113. data/src/core/iomgr/pollset_posix.h +14 -8
  114. data/src/core/iomgr/pollset_set.h +3 -9
  115. data/src/core/iomgr/pollset_set_posix.c +23 -3
  116. data/src/core/iomgr/pollset_set_posix.h +2 -18
  117. data/src/core/iomgr/pollset_set_windows.c +3 -3
  118. data/src/core/iomgr/pollset_set_windows.h +2 -2
  119. data/src/core/iomgr/pollset_windows.c +29 -37
  120. data/src/core/iomgr/pollset_windows.h +1 -5
  121. data/src/core/iomgr/resolve_address_posix.c +2 -2
  122. data/src/core/iomgr/resolve_address_windows.c +2 -2
  123. data/src/core/iomgr/sockaddr_utils.c +6 -6
  124. data/src/core/iomgr/sockaddr_win32.h +1 -6
  125. data/src/core/iomgr/tcp_client_posix.c +14 -12
  126. data/src/core/iomgr/tcp_client_windows.c +4 -4
  127. data/src/core/iomgr/tcp_posix.c +18 -10
  128. data/src/core/iomgr/tcp_posix.h +7 -1
  129. data/src/core/iomgr/tcp_server.h +40 -20
  130. data/src/core/iomgr/tcp_server_posix.c +106 -49
  131. data/src/core/iomgr/tcp_server_windows.c +98 -49
  132. data/src/core/iomgr/tcp_windows.c +11 -15
  133. data/src/core/iomgr/timer.c +10 -11
  134. data/src/core/iomgr/timer.h +22 -2
  135. data/src/core/iomgr/timer_heap.c +10 -10
  136. data/src/core/iomgr/timer_heap.h +2 -2
  137. data/src/core/iomgr/udp_server.c +7 -16
  138. data/src/core/iomgr/udp_server.h +2 -9
  139. data/src/core/iomgr/workqueue.h +2 -4
  140. data/src/core/iomgr/workqueue_posix.c +4 -3
  141. data/src/core/iomgr/workqueue_posix.h +3 -1
  142. data/src/core/json/json_reader.c +11 -12
  143. data/src/core/json/json_reader.h +4 -4
  144. data/src/core/json/json_string.c +19 -19
  145. data/src/core/json/json_writer.c +7 -9
  146. data/src/core/profiling/basic_timers.c +1 -1
  147. data/src/core/proto/grpc/lb/v0/load_balancer.pb.c +119 -0
  148. data/src/core/proto/grpc/lb/v0/load_balancer.pb.h +182 -0
  149. data/src/core/security/{base64.c → b64.c} +10 -10
  150. data/src/core/security/{base64.h → b64.h} +1 -1
  151. data/src/core/security/client_auth_filter.c +4 -5
  152. data/src/core/security/credentials.c +17 -10
  153. data/src/core/security/credentials.h +3 -3
  154. data/src/core/security/google_default_credentials.c +27 -22
  155. data/src/core/security/handshake.c +21 -12
  156. data/src/core/security/handshake.h +2 -1
  157. data/src/core/security/json_token.c +14 -8
  158. data/src/core/security/jwt_verifier.c +4 -3
  159. data/src/core/security/secure_endpoint.c +16 -16
  160. data/src/core/security/security_connector.c +131 -81
  161. data/src/core/security/security_connector.h +47 -27
  162. data/src/core/security/security_context.c +8 -3
  163. data/src/core/security/server_auth_filter.c +5 -5
  164. data/src/core/security/server_secure_chttp2.c +36 -37
  165. data/src/core/statistics/census_interface.h +2 -2
  166. data/src/core/statistics/census_rpc_stats.h +3 -3
  167. data/src/core/support/alloc.c +1 -1
  168. data/src/core/support/avl.c +2 -2
  169. data/src/core/support/cpu_posix.c +2 -2
  170. data/src/core/support/env_linux.c +28 -1
  171. data/src/core/support/env_win32.c +15 -7
  172. data/src/core/support/histogram.c +5 -5
  173. data/src/core/support/{file.c → load_file.c} +2 -2
  174. data/src/core/support/{file.h → load_file.h} +4 -12
  175. data/src/core/support/log_posix.c +1 -1
  176. data/src/core/support/log_win32.c +4 -3
  177. data/src/core/support/murmur_hash.c +11 -11
  178. data/src/core/support/murmur_hash.h +1 -1
  179. data/src/core/support/slice.c +11 -11
  180. data/src/core/support/slice_buffer.c +6 -6
  181. data/src/core/support/stack_lockfree.c +20 -10
  182. data/src/core/support/string.c +15 -15
  183. data/src/core/support/string.h +5 -5
  184. data/src/core/support/string_win32.c +5 -5
  185. data/src/core/support/subprocess_windows.c +141 -0
  186. data/src/core/support/sync.c +4 -4
  187. data/src/core/support/sync_posix.c +2 -2
  188. data/src/core/support/sync_win32.c +10 -5
  189. data/src/core/support/time.c +29 -29
  190. data/src/core/support/time_posix.c +15 -6
  191. data/src/core/support/time_precise.c +2 -2
  192. data/src/core/support/time_win32.c +18 -9
  193. data/src/core/support/tls_pthread.c +1 -1
  194. data/src/core/support/tmpfile.h +55 -0
  195. data/src/core/support/{file_posix.c → tmpfile_posix.c} +2 -2
  196. data/src/core/support/{file_win32.c → tmpfile_win32.c} +2 -2
  197. data/src/core/support/wrap_memcpy.c +53 -0
  198. data/src/core/surface/alarm.c +84 -0
  199. data/src/core/surface/byte_buffer_reader.c +1 -1
  200. data/src/core/surface/call.c +175 -116
  201. data/src/core/surface/call.h +2 -2
  202. data/src/core/surface/call_test_only.h +2 -2
  203. data/src/core/surface/channel.c +9 -9
  204. data/src/core/surface/channel.h +1 -1
  205. data/src/core/surface/channel_connectivity.c +3 -3
  206. data/src/core/surface/channel_create.c +4 -4
  207. data/src/core/surface/channel_ping.c +2 -2
  208. data/src/core/surface/completion_queue.c +84 -53
  209. data/src/core/surface/completion_queue.h +1 -1
  210. data/src/core/surface/init.c +11 -5
  211. data/src/core/surface/lame_client.c +2 -3
  212. data/src/core/surface/secure_channel_create.c +9 -10
  213. data/src/core/surface/server.c +30 -30
  214. data/src/core/surface/server_chttp2.c +8 -8
  215. data/src/core/surface/server_create.c +1 -4
  216. data/src/core/surface/validate_metadata.c +4 -4
  217. data/src/core/surface/version.c +2 -2
  218. data/src/core/transport/byte_stream.c +8 -6
  219. data/src/core/transport/byte_stream.h +6 -5
  220. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  221. data/src/core/transport/chttp2/frame_data.c +29 -26
  222. data/src/core/transport/chttp2/frame_data.h +6 -6
  223. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  224. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  225. data/src/core/transport/chttp2/frame_ping.c +6 -6
  226. data/src/core/transport/chttp2/frame_ping.h +5 -5
  227. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  228. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  229. data/src/core/transport/chttp2/frame_settings.c +30 -30
  230. data/src/core/transport/chttp2/frame_settings.h +13 -13
  231. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  232. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  233. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  234. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  235. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  236. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  237. data/src/core/transport/chttp2/hpack_table.c +13 -13
  238. data/src/core/transport/chttp2/hpack_table.h +11 -11
  239. data/src/core/transport/chttp2/internal.h +103 -87
  240. data/src/core/transport/chttp2/parsing.c +25 -25
  241. data/src/core/transport/chttp2/stream_lists.c +38 -1
  242. data/src/core/transport/chttp2/stream_map.c +13 -14
  243. data/src/core/transport/chttp2/stream_map.h +6 -7
  244. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  245. data/src/core/transport/chttp2/varint.c +8 -9
  246. data/src/core/transport/chttp2/varint.h +7 -8
  247. data/src/core/transport/chttp2/writing.c +25 -22
  248. data/src/core/transport/chttp2_transport.c +147 -100
  249. data/src/core/transport/connectivity_state.c +6 -6
  250. data/src/core/transport/metadata.c +18 -18
  251. data/src/core/transport/metadata.h +5 -5
  252. data/src/core/transport/static_metadata.c +32 -33
  253. data/src/core/transport/static_metadata.h +8 -8
  254. data/src/core/transport/transport.c +6 -5
  255. data/src/core/transport/transport.h +17 -1
  256. data/src/core/tsi/fake_transport_security.c +7 -7
  257. data/src/core/tsi/ssl_transport_security.c +6 -4
  258. data/src/core/{iomgr/timer_internal.h → tsi/ssl_types.h} +19 -25
  259. data/src/ruby/ext/grpc/extconf.rb +52 -14
  260. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  261. data/src/ruby/ext/grpc/rb_call.c +7 -3
  262. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  263. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  264. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  265. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  266. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  267. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  268. data/src/ruby/ext/grpc/rb_grpc.c +28 -19
  269. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +562 -0
  270. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +846 -0
  271. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  272. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  273. data/src/ruby/ext/grpc/rb_server.c +3 -1
  274. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  275. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  276. data/src/ruby/lib/grpc/errors.rb +2 -2
  277. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  278. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  279. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  280. data/src/ruby/lib/grpc/grpc.rb +34 -0
  281. data/src/ruby/lib/grpc/version.rb +1 -1
  282. data/src/ruby/pb/README.md +2 -2
  283. data/src/ruby/pb/generate_proto_ruby.sh +2 -2
  284. data/src/ruby/pb/grpc/health/checker.rb +11 -11
  285. data/src/ruby/pb/grpc/health/v1/health.rb +28 -0
  286. data/src/ruby/pb/grpc/health/{v1alpha → v1}/health_services.rb +4 -4
  287. data/src/ruby/spec/client_server_spec.rb +2 -1
  288. data/src/ruby/spec/pb/health/checker_spec.rb +23 -37
  289. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  290. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  291. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  292. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  293. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  294. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  295. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  296. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  297. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  298. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  299. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  300. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  301. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  302. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  303. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  304. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  305. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  306. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  307. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  308. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  309. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  310. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  311. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  312. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  313. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  314. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  315. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  316. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  317. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  318. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  319. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  320. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  321. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  322. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  323. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  324. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  325. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  326. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  327. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  328. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  329. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  330. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  331. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  332. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  333. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  334. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  335. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  336. data/third_party/boringssl/crypto/bio/file.c +349 -0
  337. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  338. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  339. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  340. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  341. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  342. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  343. data/third_party/boringssl/crypto/bn/add.c +377 -0
  344. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  345. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  346. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  347. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  348. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  349. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  350. data/third_party/boringssl/crypto/bn/div.c +625 -0
  351. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  352. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  353. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  354. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  355. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  356. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  357. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  358. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  359. data/third_party/boringssl/crypto/bn/random.c +326 -0
  360. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  361. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  362. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  363. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  364. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  365. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  366. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  367. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  368. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  369. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  370. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  371. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  372. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  373. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  374. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  375. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  376. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  377. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  378. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  379. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  380. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  381. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  382. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  383. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  384. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  385. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  386. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  387. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  388. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  389. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  390. data/third_party/boringssl/crypto/crypto.c +140 -0
  391. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  392. data/third_party/boringssl/crypto/des/des.c +771 -0
  393. data/third_party/boringssl/crypto/des/internal.h +212 -0
  394. data/third_party/boringssl/crypto/dh/check.c +180 -0
  395. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  396. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  397. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  398. data/third_party/boringssl/crypto/dh/params.c +301 -0
  399. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  400. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  401. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  402. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  403. data/third_party/boringssl/crypto/directory.h +66 -0
  404. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  405. data/third_party/boringssl/crypto/directory_win.c +144 -0
  406. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  407. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  408. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  409. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  410. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  411. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  412. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  413. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  414. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  415. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  416. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  417. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  418. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  419. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  420. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  421. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  422. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  423. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  424. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  425. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  426. data/third_party/boringssl/crypto/err/err.c +756 -0
  427. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  428. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  429. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  430. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  431. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  432. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  433. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  434. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  435. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  436. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  437. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  438. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  439. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  440. data/third_party/boringssl/crypto/ex_data.c +294 -0
  441. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  442. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  443. data/third_party/boringssl/crypto/internal.h +532 -0
  444. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  445. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  446. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  447. data/third_party/boringssl/crypto/mem.c +200 -0
  448. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  449. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  450. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  451. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  452. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  453. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  454. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  455. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  456. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  457. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  458. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  459. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  460. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  461. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  462. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  463. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  464. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  465. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  466. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  467. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  468. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  469. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  470. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  471. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  472. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  473. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  474. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  475. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  476. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  477. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  478. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  479. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  480. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  481. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  482. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  483. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  484. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  485. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  486. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  487. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  488. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  489. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  490. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  491. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  492. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  493. data/third_party/boringssl/crypto/thread.c +101 -0
  494. data/third_party/boringssl/crypto/thread_none.c +55 -0
  495. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  496. data/third_party/boringssl/crypto/thread_win.c +282 -0
  497. data/third_party/boringssl/crypto/time_support.c +212 -0
  498. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  499. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  500. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  501. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  502. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  503. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  504. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  505. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  506. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  507. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  508. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  509. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  510. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  511. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  512. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  513. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  514. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  515. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  516. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  517. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  518. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  519. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  520. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  521. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  522. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  523. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  524. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  525. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  526. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  527. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  528. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  529. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  530. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  531. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  532. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  533. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  534. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  535. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  536. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  537. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  538. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  539. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  540. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  541. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  542. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  543. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  544. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  545. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  546. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  547. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  548. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  549. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  550. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  551. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  552. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  553. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  554. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  555. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  556. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  557. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  558. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  559. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  560. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  561. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  562. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  563. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  564. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  565. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  566. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  567. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  568. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  569. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  570. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  571. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  572. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  573. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  574. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  575. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  576. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  577. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  578. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  579. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  580. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  581. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  582. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  583. data/third_party/boringssl/include/openssl/aead.h +346 -0
  584. data/third_party/boringssl/include/openssl/aes.h +158 -0
  585. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  586. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  587. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  588. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  589. data/third_party/boringssl/include/openssl/base.h +261 -0
  590. data/third_party/boringssl/include/openssl/base64.h +184 -0
  591. data/third_party/boringssl/include/openssl/bio.h +902 -0
  592. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  593. data/third_party/boringssl/include/openssl/bn.h +885 -0
  594. data/third_party/boringssl/include/openssl/buf.h +118 -0
  595. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  596. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  597. data/third_party/boringssl/include/openssl/cast.h +96 -0
  598. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  599. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  600. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  601. data/third_party/boringssl/include/openssl/conf.h +145 -0
  602. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  603. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  604. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  605. data/third_party/boringssl/include/openssl/des.h +177 -0
  606. data/third_party/boringssl/include/openssl/dh.h +238 -0
  607. data/third_party/boringssl/include/openssl/digest.h +258 -0
  608. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  609. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  610. data/third_party/boringssl/include/openssl/ec.h +355 -0
  611. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  612. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  613. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  614. data/third_party/boringssl/include/openssl/engine.h +98 -0
  615. data/third_party/boringssl/include/openssl/err.h +487 -0
  616. data/third_party/boringssl/include/openssl/evp.h +750 -0
  617. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  618. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  619. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  620. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  621. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  622. data/third_party/boringssl/include/openssl/md4.h +102 -0
  623. data/third_party/boringssl/include/openssl/md5.h +107 -0
  624. data/third_party/boringssl/include/openssl/mem.h +140 -0
  625. data/third_party/boringssl/include/openssl/obj.h +198 -0
  626. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  627. data/third_party/boringssl/include/openssl/objects.h +18 -0
  628. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  629. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  630. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  631. data/third_party/boringssl/include/openssl/pem.h +521 -0
  632. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  633. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  634. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  635. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  636. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  637. data/third_party/boringssl/include/openssl/rand.h +113 -0
  638. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  639. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  640. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  641. data/third_party/boringssl/include/openssl/sha.h +256 -0
  642. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  643. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  644. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  645. data/third_party/boringssl/include/openssl/stack.h +298 -0
  646. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  647. data/third_party/boringssl/include/openssl/thread.h +173 -0
  648. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  649. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  650. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  651. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  652. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  653. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  654. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  655. data/third_party/boringssl/ssl/d1_both.c +880 -0
  656. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  657. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  658. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  659. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  660. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  661. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  662. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  663. data/third_party/boringssl/ssl/internal.h +1276 -0
  664. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  665. data/third_party/boringssl/ssl/s3_both.c +571 -0
  666. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  667. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  668. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  669. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  670. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  671. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  672. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  673. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  674. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  675. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  676. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  677. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  678. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  679. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  680. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  681. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  682. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  683. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  684. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  685. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  686. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  687. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  688. data/third_party/boringssl/ssl/tls_record.c +342 -0
  689. data/third_party/nanopb/pb.h +547 -0
  690. data/third_party/nanopb/pb_common.c +97 -0
  691. data/third_party/nanopb/pb_common.h +42 -0
  692. data/third_party/nanopb/pb_decode.c +1319 -0
  693. data/third_party/nanopb/pb_decode.h +149 -0
  694. data/third_party/nanopb/pb_encode.c +690 -0
  695. data/third_party/nanopb/pb_encode.h +154 -0
  696. data/third_party/zlib/adler32.c +179 -0
  697. data/third_party/zlib/compress.c +80 -0
  698. data/third_party/zlib/crc32.c +425 -0
  699. data/third_party/zlib/crc32.h +441 -0
  700. data/third_party/zlib/deflate.c +1967 -0
  701. data/third_party/zlib/deflate.h +346 -0
  702. data/third_party/zlib/gzclose.c +25 -0
  703. data/third_party/zlib/gzguts.h +209 -0
  704. data/third_party/zlib/gzlib.c +634 -0
  705. data/third_party/zlib/gzread.c +594 -0
  706. data/third_party/zlib/gzwrite.c +577 -0
  707. data/third_party/zlib/infback.c +640 -0
  708. data/third_party/zlib/inffast.c +340 -0
  709. data/third_party/zlib/inffast.h +11 -0
  710. data/third_party/zlib/inffixed.h +94 -0
  711. data/third_party/zlib/inflate.c +1512 -0
  712. data/third_party/zlib/inflate.h +122 -0
  713. data/third_party/zlib/inftrees.c +306 -0
  714. data/third_party/zlib/inftrees.h +62 -0
  715. data/third_party/zlib/trees.c +1226 -0
  716. data/third_party/zlib/trees.h +128 -0
  717. data/third_party/zlib/uncompr.c +59 -0
  718. data/third_party/zlib/zconf.h +511 -0
  719. data/third_party/zlib/zlib.h +1768 -0
  720. data/third_party/zlib/zutil.c +324 -0
  721. data/third_party/zlib/zutil.h +253 -0
  722. metadata +504 -20
  723. data/Rakefile +0 -63
  724. data/src/ruby/pb/grpc/health/v1alpha/health.rb +0 -29
@@ -75,8 +75,8 @@ void gpr_precise_clock_now(gpr_timespec *clk) {
75
75
  gpr_get_cycle_counter(&counter);
76
76
  secs = (double)(counter - start_cycle) / cycles_per_second;
77
77
  clk->clock_type = GPR_CLOCK_PRECISE;
78
- clk->tv_sec = (gpr_int64)secs;
79
- clk->tv_nsec = (gpr_int32)(1e9 * (secs - (double)clk->tv_sec));
78
+ clk->tv_sec = (int64_t)secs;
79
+ clk->tv_nsec = (int32_t)(1e9 * (secs - (double)clk->tv_sec));
80
80
  }
81
81
 
82
82
  #else /* GRPC_TIMERS_RDTSC */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -37,9 +37,12 @@
37
37
 
38
38
  #ifdef GPR_WIN32
39
39
 
40
+ #include <grpc/support/log.h>
40
41
  #include <grpc/support/time.h>
41
42
  #include <src/core/support/time_precise.h>
42
43
  #include <sys/timeb.h>
44
+ #include <process.h>
45
+ #include <limits.h>
43
46
 
44
47
  #include "src/core/support/block_annotate.h"
45
48
 
@@ -50,11 +53,12 @@ void gpr_time_init(void) {
50
53
  LARGE_INTEGER frequency;
51
54
  QueryPerformanceFrequency(&frequency);
52
55
  QueryPerformanceCounter(&g_start_time);
53
- g_time_scale = 1.0 / frequency.QuadPart;
56
+ g_time_scale = 1.0 / (double)frequency.QuadPart;
54
57
  }
55
58
 
56
59
  gpr_timespec gpr_now(gpr_clock_type clock) {
57
60
  gpr_timespec now_tv;
61
+ LONGLONG diff;
58
62
  struct _timeb now_tb;
59
63
  LARGE_INTEGER timestamp;
60
64
  double now_dbl;
@@ -62,15 +66,19 @@ gpr_timespec gpr_now(gpr_clock_type clock) {
62
66
  switch (clock) {
63
67
  case GPR_CLOCK_REALTIME:
64
68
  _ftime_s(&now_tb);
65
- now_tv.tv_sec = (gpr_int64)now_tb.time;
69
+ now_tv.tv_sec = (int64_t)now_tb.time;
66
70
  now_tv.tv_nsec = now_tb.millitm * 1000000;
67
71
  break;
68
72
  case GPR_CLOCK_MONOTONIC:
69
73
  case GPR_CLOCK_PRECISE:
70
74
  QueryPerformanceCounter(&timestamp);
71
- now_dbl = (timestamp.QuadPart - g_start_time.QuadPart) * g_time_scale;
72
- now_tv.tv_sec = (gpr_int64)now_dbl;
73
- now_tv.tv_nsec = (gpr_int32)((now_dbl - (double)now_tv.tv_sec) * 1e9);
75
+ diff = timestamp.QuadPart - g_start_time.QuadPart;
76
+ now_dbl = (double)diff * g_time_scale;
77
+ now_tv.tv_sec = (int64_t)now_dbl;
78
+ now_tv.tv_nsec = (int32_t)((now_dbl - (double)now_tv.tv_sec) * 1e9);
79
+ break;
80
+ case GPR_TIMESPAN:
81
+ abort();
74
82
  break;
75
83
  }
76
84
  return now_tv;
@@ -79,7 +87,7 @@ gpr_timespec gpr_now(gpr_clock_type clock) {
79
87
  void gpr_sleep_until(gpr_timespec until) {
80
88
  gpr_timespec now;
81
89
  gpr_timespec delta;
82
- DWORD sleep_millis;
90
+ int64_t sleep_millis;
83
91
 
84
92
  for (;;) {
85
93
  /* We could simplify by using clock_nanosleep instead, but it might be
@@ -91,9 +99,10 @@ void gpr_sleep_until(gpr_timespec until) {
91
99
 
92
100
  delta = gpr_time_sub(until, now);
93
101
  sleep_millis =
94
- (DWORD)delta.tv_sec * GPR_MS_PER_SEC + delta.tv_nsec / GPR_NS_PER_MS;
102
+ delta.tv_sec * GPR_MS_PER_SEC + delta.tv_nsec / GPR_NS_PER_MS;
103
+ GPR_ASSERT((sleep_millis >= 0) && (sleep_millis <= INT_MAX));
95
104
  GRPC_SCHEDULING_START_BLOCKING_REGION;
96
- Sleep(sleep_millis);
105
+ Sleep((DWORD)sleep_millis);
97
106
  GRPC_SCHEDULING_END_BLOCKING_REGION;
98
107
  }
99
108
  }
@@ -37,7 +37,7 @@
37
37
 
38
38
  #include <grpc/support/tls.h>
39
39
 
40
- gpr_intptr gpr_tls_set(struct gpr_pthread_thread_local *tls, gpr_intptr value) {
40
+ intptr_t gpr_tls_set(struct gpr_pthread_thread_local *tls, intptr_t value) {
41
41
  GPR_ASSERT(0 == pthread_setspecific(tls->key, (void *)value));
42
42
  return value;
43
43
  }
@@ -0,0 +1,55 @@
1
+ /*
2
+ *
3
+ * Copyright 2015-2016, Google Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are
8
+ * met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following disclaimer
14
+ * in the documentation and/or other materials provided with the
15
+ * distribution.
16
+ * * Neither the name of Google Inc. nor the names of its
17
+ * contributors may be used to endorse or promote products derived from
18
+ * this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ */
33
+
34
+ #ifndef GRPC_INTERNAL_CORE_SUPPORT_TMPFILE_H
35
+ #define GRPC_INTERNAL_CORE_SUPPORT_TMPFILE_H
36
+
37
+ #include <stdio.h>
38
+
39
+ #include <grpc/support/slice.h>
40
+
41
+ #ifdef __cplusplus
42
+ extern "C" {
43
+ #endif
44
+
45
+ /* Creates a temporary file from a prefix.
46
+ If tmp_filename is not NULL, *tmp_filename is assigned the name of the
47
+ created file and it is the responsibility of the caller to gpr_free it
48
+ unless an error occurs in which case it will be set to NULL. */
49
+ FILE *gpr_tmpfile(const char *prefix, char **tmp_filename);
50
+
51
+ #ifdef __cplusplus
52
+ }
53
+ #endif
54
+
55
+ #endif /* GRPC_INTERNAL_CORE_SUPPORT_TMPFILE_H */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -35,7 +35,7 @@
35
35
 
36
36
  #ifdef GPR_POSIX_FILE
37
37
 
38
- #include "src/core/support/file.h"
38
+ #include "src/core/support/tmpfile.h"
39
39
 
40
40
  #include <errno.h>
41
41
  #include <stdlib.h>
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -44,8 +44,8 @@
44
44
  #include <grpc/support/log.h>
45
45
  #include <grpc/support/string_util.h>
46
46
 
47
- #include "src/core/support/file.h"
48
47
  #include "src/core/support/string_win32.h"
48
+ #include "src/core/support/tmpfile.h"
49
49
 
50
50
  FILE *gpr_tmpfile(const char *prefix, char **tmp_filename_out) {
51
51
  FILE *result = NULL;
@@ -0,0 +1,53 @@
1
+ /*
2
+ *
3
+ * Copyright 2016, Google Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are
8
+ * met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following disclaimer
14
+ * in the documentation and/or other materials provided with the
15
+ * distribution.
16
+ * * Neither the name of Google Inc. nor the names of its
17
+ * contributors may be used to endorse or promote products derived from
18
+ * this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ */
33
+
34
+ #include <string.h>
35
+
36
+ /* Provide a wrapped memcpy for targets that need to be backwards
37
+ * compatible with older libc's.
38
+ *
39
+ * Enable by setting LDFLAGS=-Wl,-wrap,memcpy when linking.
40
+ */
41
+
42
+ #ifdef __linux__
43
+ #ifdef __x86_64__
44
+ __asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
45
+ void *__wrap_memcpy(void *destination, const void *source, size_t num) {
46
+ return memcpy(destination, source, num);
47
+ }
48
+ #else /* !__x86_64__ */
49
+ void *__wrap_memcpy(void *destination, const void *source, size_t num) {
50
+ return memmove(destination, source, num);
51
+ }
52
+ #endif
53
+ #endif
@@ -0,0 +1,84 @@
1
+ /*
2
+ *
3
+ * Copyright 2015-2016, Google Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are
8
+ * met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following disclaimer
14
+ * in the documentation and/or other materials provided with the
15
+ * distribution.
16
+ * * Neither the name of Google Inc. nor the names of its
17
+ * contributors may be used to endorse or promote products derived from
18
+ * this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ */
33
+
34
+ #include "src/core/iomgr/timer.h"
35
+ #include "src/core/surface/completion_queue.h"
36
+ #include <grpc/grpc.h>
37
+ #include <grpc/support/alloc.h>
38
+
39
+ struct grpc_alarm {
40
+ grpc_timer alarm;
41
+ grpc_cq_completion completion;
42
+ /** completion queue where events about this alarm will be posted */
43
+ grpc_completion_queue *cq;
44
+ /** user supplied tag */
45
+ void *tag;
46
+ };
47
+
48
+ static void do_nothing_end_completion(grpc_exec_ctx *exec_ctx, void *arg,
49
+ grpc_cq_completion *c) {}
50
+
51
+ static void alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
52
+ grpc_alarm *alarm = arg;
53
+ grpc_cq_end_op(exec_ctx, alarm->cq, alarm->tag, success,
54
+ do_nothing_end_completion, NULL, &alarm->completion);
55
+ }
56
+
57
+ grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline,
58
+ void *tag) {
59
+ grpc_alarm *alarm = gpr_malloc(sizeof(grpc_alarm));
60
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
61
+
62
+ GRPC_CQ_INTERNAL_REF(cq, "alarm");
63
+ alarm->cq = cq;
64
+ alarm->tag = tag;
65
+
66
+ grpc_cq_begin_op(cq, tag);
67
+ grpc_timer_init(&exec_ctx, &alarm->alarm,
68
+ gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC),
69
+ alarm_cb, alarm, gpr_now(GPR_CLOCK_MONOTONIC));
70
+ grpc_exec_ctx_finish(&exec_ctx);
71
+ return alarm;
72
+ }
73
+
74
+ void grpc_alarm_cancel(grpc_alarm *alarm) {
75
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
76
+ grpc_timer_cancel(&exec_ctx, &alarm->alarm);
77
+ grpc_exec_ctx_finish(&exec_ctx);
78
+ }
79
+
80
+ void grpc_alarm_destroy(grpc_alarm *alarm) {
81
+ grpc_alarm_cancel(alarm);
82
+ GRPC_CQ_INTERNAL_UNREF(alarm->cq, "alarm");
83
+ gpr_free(alarm);
84
+ }
@@ -110,7 +110,7 @@ gpr_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader *reader) {
110
110
  size_t bytes_read = 0;
111
111
  const size_t input_size = grpc_byte_buffer_length(reader->buffer_out);
112
112
  gpr_slice out_slice = gpr_slice_malloc(input_size);
113
- gpr_uint8 *const outbuf = GPR_SLICE_START_PTR(out_slice); /* just an alias */
113
+ uint8_t *const outbuf = GPR_SLICE_START_PTR(out_slice); /* just an alias */
114
114
 
115
115
  while (grpc_byte_buffer_reader_next(reader, &in_slice) != 0) {
116
116
  const size_t slice_length = GPR_SLICE_LENGTH(in_slice);
@@ -92,7 +92,7 @@ typedef enum {
92
92
  } status_source;
93
93
 
94
94
  typedef struct {
95
- gpr_uint8 is_set;
95
+ uint8_t is_set;
96
96
  grpc_status_code code;
97
97
  grpc_mdstr *details;
98
98
  } received_status;
@@ -123,14 +123,14 @@ typedef struct batch_control {
123
123
  void *notify_tag;
124
124
  gpr_refcount steps_to_complete;
125
125
 
126
- gpr_uint8 send_initial_metadata;
127
- gpr_uint8 send_message;
128
- gpr_uint8 send_final_op;
129
- gpr_uint8 recv_initial_metadata;
130
- gpr_uint8 recv_message;
131
- gpr_uint8 recv_final_op;
132
- gpr_uint8 is_notify_tag_closure;
133
- gpr_uint8 success;
126
+ uint8_t send_initial_metadata;
127
+ uint8_t send_message;
128
+ uint8_t send_final_op;
129
+ uint8_t recv_initial_metadata;
130
+ uint8_t recv_message;
131
+ uint8_t recv_final_op;
132
+ uint8_t is_notify_tag_closure;
133
+ uint8_t success;
134
134
  } batch_control;
135
135
 
136
136
  struct grpc_call {
@@ -142,22 +142,25 @@ struct grpc_call {
142
142
  gpr_mu mu;
143
143
 
144
144
  /* client or server call */
145
- gpr_uint8 is_client;
145
+ uint8_t is_client;
146
146
  /* is the alarm set */
147
- gpr_uint8 have_alarm;
147
+ uint8_t have_alarm;
148
148
  /** has grpc_call_destroy been called */
149
- gpr_uint8 destroy_called;
149
+ uint8_t destroy_called;
150
150
  /** flag indicating that cancellation is inherited */
151
- gpr_uint8 cancellation_is_inherited;
151
+ uint8_t cancellation_is_inherited;
152
152
  /** bitmask of live batches */
153
- gpr_uint8 used_batches;
153
+ uint8_t used_batches;
154
154
  /** which ops are in-flight */
155
- gpr_uint8 sent_initial_metadata;
156
- gpr_uint8 sending_message;
157
- gpr_uint8 sent_final_op;
158
- gpr_uint8 received_initial_metadata;
159
- gpr_uint8 receiving_message;
160
- gpr_uint8 received_final_op;
155
+ uint8_t sent_initial_metadata;
156
+ uint8_t sending_message;
157
+ uint8_t sent_final_op;
158
+ uint8_t received_initial_metadata;
159
+ uint8_t receiving_message;
160
+ uint8_t received_final_op;
161
+
162
+ /* have we received initial metadata */
163
+ bool has_initial_md_been_received;
161
164
 
162
165
  batch_control active_batches[MAX_CONCURRENT_BATCHES];
163
166
 
@@ -174,7 +177,7 @@ struct grpc_call {
174
177
  /* Compression algorithm for the call */
175
178
  grpc_compression_algorithm compression_algorithm;
176
179
  /* Supported encodings (compression algorithms), a bitset */
177
- gpr_uint32 encodings_accepted_by_peer;
180
+ uint32_t encodings_accepted_by_peer;
178
181
 
179
182
  /* Contexts for various subsystems (security, tracing, ...). */
180
183
  grpc_call_context_element context[GRPC_CONTEXT_COUNT];
@@ -200,7 +203,8 @@ struct grpc_call {
200
203
  gpr_slice receiving_slice;
201
204
  grpc_closure receiving_slice_ready;
202
205
  grpc_closure receiving_stream_ready;
203
- gpr_uint32 test_only_last_message_flags;
206
+ grpc_closure receiving_initial_metadata_ready;
207
+ uint32_t test_only_last_message_flags;
204
208
 
205
209
  union {
206
210
  struct {
@@ -212,6 +216,11 @@ struct grpc_call {
212
216
  int *cancelled;
213
217
  } server;
214
218
  } final_op;
219
+
220
+ struct {
221
+ void *bctlp;
222
+ bool success;
223
+ } saved_receiving_stream_ready_ctx;
215
224
  };
216
225
 
217
226
  #define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call) + 1))
@@ -229,12 +238,12 @@ static grpc_call_error cancel_with_status(grpc_exec_ctx *exec_ctx, grpc_call *c,
229
238
  grpc_status_code status,
230
239
  const char *description);
231
240
  static void destroy_call(grpc_exec_ctx *exec_ctx, void *call_stack,
232
- int success);
241
+ bool success);
233
242
  static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
234
- int success);
243
+ bool success);
235
244
 
236
245
  grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call,
237
- gpr_uint32 propagation_mask,
246
+ uint32_t propagation_mask,
238
247
  grpc_completion_queue *cq,
239
248
  const void *server_transport_data,
240
249
  grpc_mdelem **add_initial_metadata,
@@ -351,7 +360,7 @@ void grpc_call_internal_unref(grpc_exec_ctx *exec_ctx, grpc_call *c REF_ARG) {
351
360
  GRPC_CALL_STACK_UNREF(exec_ctx, CALL_STACK_FROM_CALL(c), REF_REASON);
352
361
  }
353
362
 
354
- static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, int success) {
363
+ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
355
364
  size_t i;
356
365
  int ii;
357
366
  grpc_call *c = call;
@@ -361,7 +370,7 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, int success) {
361
370
  &c->metadata_batch[1 /* is_receiving */][i /* is_initial */]);
362
371
  }
363
372
  if (c->receiving_stream != NULL) {
364
- grpc_byte_stream_destroy(c->receiving_stream);
373
+ grpc_byte_stream_destroy(exec_ctx, c->receiving_stream);
365
374
  }
366
375
  grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c));
367
376
  GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call");
@@ -387,7 +396,7 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, int success) {
387
396
  }
388
397
 
389
398
  static void set_status_code(grpc_call *call, status_source source,
390
- gpr_uint32 status) {
399
+ uint32_t status) {
391
400
  if (call->status[source].is_set) return;
392
401
 
393
402
  call->status[source].is_set = 1;
@@ -410,8 +419,8 @@ grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
410
419
  return algorithm;
411
420
  }
412
421
 
413
- gpr_uint32 grpc_call_test_only_get_message_flags(grpc_call *call) {
414
- gpr_uint32 flags;
422
+ uint32_t grpc_call_test_only_get_message_flags(grpc_call *call) {
423
+ uint32_t flags;
415
424
  gpr_mu_lock(&call->mu);
416
425
  flags = call->test_only_last_message_flags;
417
426
  gpr_mu_unlock(&call->mu);
@@ -431,7 +440,7 @@ static void set_encodings_accepted_by_peer(grpc_call *call, grpc_mdelem *mdel) {
431
440
  grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
432
441
  if (accepted_user_data != NULL) {
433
442
  call->encodings_accepted_by_peer =
434
- (gpr_uint32)(((gpr_uintptr)accepted_user_data) - 1);
443
+ (uint32_t)(((uintptr_t)accepted_user_data) - 1);
435
444
  return;
436
445
  }
437
446
 
@@ -464,11 +473,11 @@ static void set_encodings_accepted_by_peer(grpc_call *call, grpc_mdelem *mdel) {
464
473
 
465
474
  grpc_mdelem_set_user_data(
466
475
  mdel, destroy_encodings_accepted_by_peer,
467
- (void *)(((gpr_uintptr)call->encodings_accepted_by_peer) + 1));
476
+ (void *)(((uintptr_t)call->encodings_accepted_by_peer) + 1));
468
477
  }
469
478
 
470
- gpr_uint32 grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call *call) {
471
- gpr_uint32 encodings_accepted_by_peer;
479
+ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call *call) {
480
+ uint32_t encodings_accepted_by_peer;
472
481
  gpr_mu_lock(&call->mu);
473
482
  encodings_accepted_by_peer = call->encodings_accepted_by_peer;
474
483
  gpr_mu_unlock(&call->mu);
@@ -562,7 +571,7 @@ static int prepare_application_metadata(grpc_call *call, int count,
562
571
  grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
563
572
  GPR_ASSERT(sizeof(grpc_linked_mdelem) == sizeof(md->internal_data));
564
573
  l->md = grpc_mdelem_from_string_and_buffer(
565
- md->key, (const gpr_uint8 *)md->value, md->value_length);
574
+ md->key, (const uint8_t *)md->value, md->value_length);
566
575
  if (!grpc_header_key_is_legal(grpc_mdstr_as_c_string(l->md->key),
567
576
  GRPC_MDSTR_LENGTH(l->md->key))) {
568
577
  gpr_log(GPR_ERROR, "attempt to send invalid metadata key: %s",
@@ -688,13 +697,13 @@ typedef struct cancel_closure {
688
697
  grpc_status_code status;
689
698
  } cancel_closure;
690
699
 
691
- static void done_cancel(grpc_exec_ctx *exec_ctx, void *ccp, int success) {
700
+ static void done_cancel(grpc_exec_ctx *exec_ctx, void *ccp, bool success) {
692
701
  cancel_closure *cc = ccp;
693
702
  GRPC_CALL_INTERNAL_UNREF(exec_ctx, cc->call, "cancel");
694
703
  gpr_free(cc);
695
704
  }
696
705
 
697
- static void send_cancel(grpc_exec_ctx *exec_ctx, void *ccp, int success) {
706
+ static void send_cancel(grpc_exec_ctx *exec_ctx, void *ccp, bool success) {
698
707
  grpc_transport_stream_op op;
699
708
  cancel_closure *cc = ccp;
700
709
  memset(&op, 0, sizeof(op));
@@ -714,14 +723,14 @@ static grpc_call_error cancel_with_status(grpc_exec_ctx *exec_ctx, grpc_call *c,
714
723
 
715
724
  GPR_ASSERT(status != GRPC_STATUS_OK);
716
725
 
717
- set_status_code(c, STATUS_FROM_API_OVERRIDE, (gpr_uint32)status);
726
+ set_status_code(c, STATUS_FROM_API_OVERRIDE, (uint32_t)status);
718
727
  set_status_details(c, STATUS_FROM_API_OVERRIDE, details);
719
728
 
720
729
  grpc_closure_init(&cc->closure, send_cancel, cc);
721
730
  cc->call = c;
722
731
  cc->status = status;
723
732
  GRPC_CALL_INTERNAL_REF(c, "cancel");
724
- grpc_exec_ctx_enqueue(exec_ctx, &cc->closure, 1);
733
+ grpc_exec_ctx_enqueue(exec_ctx, &cc->closure, true, NULL);
725
734
 
726
735
  return GRPC_CALL_OK;
727
736
  }
@@ -757,7 +766,7 @@ grpc_call *grpc_call_from_top_element(grpc_call_element *elem) {
757
766
  return CALL_FROM_TOP_ELEM(elem);
758
767
  }
759
768
 
760
- static void call_alarm(grpc_exec_ctx *exec_ctx, void *arg, int success) {
769
+ static void call_alarm(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
761
770
  grpc_call *call = arg;
762
771
  gpr_mu_lock(&call->mu);
763
772
  call->have_alarm = 0;
@@ -789,15 +798,15 @@ static void set_deadline_alarm(grpc_exec_ctx *exec_ctx, grpc_call *call,
789
798
  #define STATUS_OFFSET 1
790
799
  static void destroy_status(void *ignored) {}
791
800
 
792
- static gpr_uint32 decode_status(grpc_mdelem *md) {
793
- gpr_uint32 status;
801
+ static uint32_t decode_status(grpc_mdelem *md) {
802
+ uint32_t status;
794
803
  void *user_data;
795
804
  if (md == GRPC_MDELEM_GRPC_STATUS_0) return 0;
796
805
  if (md == GRPC_MDELEM_GRPC_STATUS_1) return 1;
797
806
  if (md == GRPC_MDELEM_GRPC_STATUS_2) return 2;
798
807
  user_data = grpc_mdelem_get_user_data(md, destroy_status);
799
808
  if (user_data != NULL) {
800
- status = ((gpr_uint32)(gpr_intptr)user_data) - STATUS_OFFSET;
809
+ status = ((uint32_t)(intptr_t)user_data) - STATUS_OFFSET;
801
810
  } else {
802
811
  if (!gpr_parse_bytes_to_uint32(grpc_mdstr_as_c_string(md->value),
803
812
  GPR_SLICE_LENGTH(md->value->slice),
@@ -805,12 +814,12 @@ static gpr_uint32 decode_status(grpc_mdelem *md) {
805
814
  status = GRPC_STATUS_UNKNOWN; /* could not parse status code */
806
815
  }
807
816
  grpc_mdelem_set_user_data(md, destroy_status,
808
- (void *)(gpr_intptr)(status + STATUS_OFFSET));
817
+ (void *)(intptr_t)(status + STATUS_OFFSET));
809
818
  }
810
819
  return status;
811
820
  }
812
821
 
813
- static gpr_uint32 decode_compression(grpc_mdelem *md) {
822
+ static uint32_t decode_compression(grpc_mdelem *md) {
814
823
  grpc_compression_algorithm algorithm =
815
824
  grpc_compression_algorithm_from_mdstr(md->value);
816
825
  if (algorithm == GRPC_COMPRESS_ALGORITHMS_COUNT) {
@@ -900,11 +909,11 @@ static void set_cancelled_value(grpc_status_code status, void *dest) {
900
909
  *(int *)dest = (status != GRPC_STATUS_OK);
901
910
  }
902
911
 
903
- static int are_write_flags_valid(gpr_uint32 flags) {
912
+ static int are_write_flags_valid(uint32_t flags) {
904
913
  /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
905
- const gpr_uint32 allowed_write_positions =
914
+ const uint32_t allowed_write_positions =
906
915
  (GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
907
- const gpr_uint32 invalid_positions = ~allowed_write_positions;
916
+ const uint32_t invalid_positions = ~allowed_write_positions;
908
917
  return !(flags & invalid_positions);
909
918
  }
910
919
 
@@ -912,8 +921,7 @@ static batch_control *allocate_batch_control(grpc_call *call) {
912
921
  size_t i;
913
922
  for (i = 0; i < MAX_CONCURRENT_BATCHES; i++) {
914
923
  if ((call->used_batches & (1 << i)) == 0) {
915
- call->used_batches =
916
- (gpr_uint8)(call->used_batches | (gpr_uint8)(1 << i));
924
+ call->used_batches = (uint8_t)(call->used_batches | (uint8_t)(1 << i));
917
925
  return &call->active_batches[i];
918
926
  }
919
927
  }
@@ -925,8 +933,8 @@ static void finish_batch_completion(grpc_exec_ctx *exec_ctx, void *user_data,
925
933
  batch_control *bctl = user_data;
926
934
  grpc_call *call = bctl->call;
927
935
  gpr_mu_lock(&call->mu);
928
- call->used_batches = (gpr_uint8)(
929
- call->used_batches & ~(gpr_uint8)(1 << (bctl - call->active_batches)));
936
+ call->used_batches = (uint8_t)(
937
+ call->used_batches & ~(uint8_t)(1 << (bctl - call->active_batches)));
930
938
  gpr_mu_unlock(&call->mu);
931
939
  GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completion");
932
940
  }
@@ -935,11 +943,11 @@ static void post_batch_completion(grpc_exec_ctx *exec_ctx,
935
943
  batch_control *bctl) {
936
944
  grpc_call *call = bctl->call;
937
945
  if (bctl->is_notify_tag_closure) {
938
- grpc_exec_ctx_enqueue(exec_ctx, bctl->notify_tag, bctl->success);
946
+ grpc_exec_ctx_enqueue(exec_ctx, bctl->notify_tag, bctl->success, NULL);
939
947
  gpr_mu_lock(&call->mu);
940
948
  bctl->call->used_batches =
941
- (gpr_uint8)(bctl->call->used_batches &
942
- ~(gpr_uint8)(1 << (bctl - bctl->call->active_batches)));
949
+ (uint8_t)(bctl->call->used_batches &
950
+ ~(uint8_t)(1 << (bctl - bctl->call->active_batches)));
943
951
  gpr_mu_unlock(&call->mu);
944
952
  GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completion");
945
953
  } else {
@@ -956,7 +964,7 @@ static void continue_receiving_slices(grpc_exec_ctx *exec_ctx,
956
964
  (*call->receiving_buffer)->data.raw.slice_buffer.length;
957
965
  if (remaining == 0) {
958
966
  call->receiving_message = 0;
959
- grpc_byte_stream_destroy(call->receiving_stream);
967
+ grpc_byte_stream_destroy(exec_ctx, call->receiving_stream);
960
968
  call->receiving_stream = NULL;
961
969
  if (gpr_unref(&bctl->steps_to_complete)) {
962
970
  post_batch_completion(exec_ctx, bctl);
@@ -975,18 +983,114 @@ static void continue_receiving_slices(grpc_exec_ctx *exec_ctx,
975
983
  }
976
984
 
977
985
  static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
978
- int success) {
986
+ bool success) {
987
+ batch_control *bctl = bctlp;
988
+ grpc_call *call = bctl->call;
989
+
990
+ if (success) {
991
+ gpr_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
992
+ call->receiving_slice);
993
+ continue_receiving_slices(exec_ctx, bctl);
994
+ } else {
995
+ grpc_byte_stream_destroy(exec_ctx, call->receiving_stream);
996
+ call->receiving_stream = NULL;
997
+ grpc_byte_buffer_destroy(*call->receiving_buffer);
998
+ *call->receiving_buffer = NULL;
999
+ if (gpr_unref(&bctl->steps_to_complete)) {
1000
+ post_batch_completion(exec_ctx, bctl);
1001
+ }
1002
+ }
1003
+ }
1004
+
1005
+ static void process_data_after_md(grpc_exec_ctx *exec_ctx, batch_control *bctl,
1006
+ bool success) {
1007
+ grpc_call *call = bctl->call;
1008
+ if (call->receiving_stream == NULL) {
1009
+ *call->receiving_buffer = NULL;
1010
+ call->receiving_message = 0;
1011
+ if (gpr_unref(&bctl->steps_to_complete)) {
1012
+ post_batch_completion(exec_ctx, bctl);
1013
+ }
1014
+ } else if (call->receiving_stream->length >
1015
+ grpc_channel_get_max_message_length(call->channel)) {
1016
+ cancel_with_status(exec_ctx, call, GRPC_STATUS_INTERNAL,
1017
+ "Max message size exceeded");
1018
+ grpc_byte_stream_destroy(exec_ctx, call->receiving_stream);
1019
+ call->receiving_stream = NULL;
1020
+ *call->receiving_buffer = NULL;
1021
+ call->receiving_message = 0;
1022
+ if (gpr_unref(&bctl->steps_to_complete)) {
1023
+ post_batch_completion(exec_ctx, bctl);
1024
+ }
1025
+ } else {
1026
+ call->test_only_last_message_flags = call->receiving_stream->flags;
1027
+ if ((call->receiving_stream->flags & GRPC_WRITE_INTERNAL_COMPRESS) &&
1028
+ (call->compression_algorithm > GRPC_COMPRESS_NONE)) {
1029
+ *call->receiving_buffer = grpc_raw_compressed_byte_buffer_create(
1030
+ NULL, 0, call->compression_algorithm);
1031
+ } else {
1032
+ *call->receiving_buffer = grpc_raw_byte_buffer_create(NULL, 0);
1033
+ }
1034
+ grpc_closure_init(&call->receiving_slice_ready, receiving_slice_ready,
1035
+ bctl);
1036
+ continue_receiving_slices(exec_ctx, bctl);
1037
+ /* early out */
1038
+ return;
1039
+ }
1040
+ }
1041
+
1042
+ static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
1043
+ bool success) {
1044
+ batch_control *bctl = bctlp;
1045
+ grpc_call *call = bctl->call;
1046
+
1047
+ gpr_mu_lock(&bctl->call->mu);
1048
+ if (bctl->call->has_initial_md_been_received) {
1049
+ gpr_mu_unlock(&bctl->call->mu);
1050
+ process_data_after_md(exec_ctx, bctlp, success);
1051
+ } else {
1052
+ call->saved_receiving_stream_ready_ctx.bctlp = bctlp;
1053
+ call->saved_receiving_stream_ready_ctx.success = success;
1054
+ gpr_mu_unlock(&bctl->call->mu);
1055
+ }
1056
+ }
1057
+
1058
+ static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
1059
+ void *bctlp, bool success) {
979
1060
  batch_control *bctl = bctlp;
980
1061
  grpc_call *call = bctl->call;
981
1062
 
982
- GPR_ASSERT(success);
983
- gpr_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
984
- call->receiving_slice);
1063
+ gpr_mu_lock(&call->mu);
1064
+
1065
+ grpc_metadata_batch *md =
1066
+ &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1067
+ grpc_metadata_batch_filter(md, recv_initial_filter, call);
1068
+ call->has_initial_md_been_received = true;
1069
+
1070
+ if (gpr_time_cmp(md->deadline, gpr_inf_future(md->deadline.clock_type)) !=
1071
+ 0 &&
1072
+ !call->is_client) {
1073
+ GPR_TIMER_BEGIN("set_deadline_alarm", 0);
1074
+ set_deadline_alarm(exec_ctx, call, md->deadline);
1075
+ GPR_TIMER_END("set_deadline_alarm", 0);
1076
+ }
1077
+
1078
+ if (call->saved_receiving_stream_ready_ctx.bctlp != NULL) {
1079
+ grpc_closure *saved_rsr_closure = grpc_closure_create(
1080
+ receiving_stream_ready, call->saved_receiving_stream_ready_ctx.bctlp);
1081
+ grpc_exec_ctx_enqueue(exec_ctx, saved_rsr_closure,
1082
+ call->saved_receiving_stream_ready_ctx.success, NULL);
1083
+ call->saved_receiving_stream_ready_ctx.bctlp = NULL;
1084
+ }
1085
+
1086
+ gpr_mu_unlock(&call->mu);
985
1087
 
986
- continue_receiving_slices(exec_ctx, bctl);
1088
+ if (gpr_unref(&bctl->steps_to_complete)) {
1089
+ post_batch_completion(exec_ctx, bctl);
1090
+ }
987
1091
  }
988
1092
 
989
- static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, int success) {
1093
+ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, bool success) {
990
1094
  batch_control *bctl = bctlp;
991
1095
  grpc_call *call = bctl->call;
992
1096
  grpc_call *child_call;
@@ -1004,19 +1108,6 @@ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, int success) {
1004
1108
  grpc_metadata_batch_destroy(
1005
1109
  &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]);
1006
1110
  }
1007
- if (bctl->recv_initial_metadata) {
1008
- grpc_metadata_batch *md =
1009
- &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1010
- grpc_metadata_batch_filter(md, recv_initial_filter, call);
1011
-
1012
- if (gpr_time_cmp(md->deadline, gpr_inf_future(md->deadline.clock_type)) !=
1013
- 0 &&
1014
- !call->is_client) {
1015
- GPR_TIMER_BEGIN("set_deadline_alarm", 0);
1016
- set_deadline_alarm(exec_ctx, call, md->deadline);
1017
- GPR_TIMER_END("set_deadline_alarm", 0);
1018
- }
1019
- }
1020
1111
  if (bctl->recv_final_op) {
1021
1112
  grpc_metadata_batch *md =
1022
1113
  &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
@@ -1058,43 +1149,6 @@ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, int success) {
1058
1149
  }
1059
1150
  }
1060
1151
 
1061
- static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
1062
- int success) {
1063
- batch_control *bctl = bctlp;
1064
- grpc_call *call = bctl->call;
1065
-
1066
- if (call->receiving_stream == NULL) {
1067
- *call->receiving_buffer = NULL;
1068
- if (gpr_unref(&bctl->steps_to_complete)) {
1069
- post_batch_completion(exec_ctx, bctl);
1070
- }
1071
- } else if (call->receiving_stream->length >
1072
- grpc_channel_get_max_message_length(call->channel)) {
1073
- cancel_with_status(exec_ctx, call, GRPC_STATUS_INTERNAL,
1074
- "Max message size exceeded");
1075
- grpc_byte_stream_destroy(call->receiving_stream);
1076
- call->receiving_stream = NULL;
1077
- *call->receiving_buffer = NULL;
1078
- if (gpr_unref(&bctl->steps_to_complete)) {
1079
- post_batch_completion(exec_ctx, bctl);
1080
- }
1081
- } else {
1082
- call->test_only_last_message_flags = call->receiving_stream->flags;
1083
- if ((call->receiving_stream->flags & GRPC_WRITE_INTERNAL_COMPRESS) &&
1084
- (call->compression_algorithm > GRPC_COMPRESS_NONE)) {
1085
- *call->receiving_buffer = grpc_raw_compressed_byte_buffer_create(
1086
- NULL, 0, call->compression_algorithm);
1087
- } else {
1088
- *call->receiving_buffer = grpc_raw_byte_buffer_create(NULL, 0);
1089
- }
1090
- grpc_closure_init(&call->receiving_slice_ready, receiving_slice_ready,
1091
- bctl);
1092
- continue_receiving_slices(exec_ctx, bctl);
1093
- /* early out */
1094
- return;
1095
- }
1096
- }
1097
-
1098
1152
  static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1099
1153
  grpc_call *call, const grpc_op *ops,
1100
1154
  size_t nops, void *notify_tag,
@@ -1118,7 +1172,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1118
1172
  memset(bctl, 0, sizeof(*bctl));
1119
1173
  bctl->call = call;
1120
1174
  bctl->notify_tag = notify_tag;
1121
- bctl->is_notify_tag_closure = (gpr_uint8)(is_notify_tag_closure != 0);
1175
+ bctl->is_notify_tag_closure = (uint8_t)(is_notify_tag_closure != 0);
1122
1176
 
1123
1177
  if (nops == 0) {
1124
1178
  GRPC_CALL_INTERNAL_REF(call, "completion");
@@ -1241,7 +1295,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1241
1295
  GRPC_MDSTR_REF(call->send_extra_metadata[1].md->value));
1242
1296
  }
1243
1297
  set_status_code(call, STATUS_FROM_API_OVERRIDE,
1244
- (gpr_uint32)op->data.send_status_from_server.status);
1298
+ (uint32_t)op->data.send_status_from_server.status);
1245
1299
  if (!prepare_application_metadata(
1246
1300
  call,
1247
1301
  (int)op->data.send_status_from_server.trailing_metadata_count,
@@ -1264,9 +1318,14 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1264
1318
  }
1265
1319
  call->received_initial_metadata = 1;
1266
1320
  call->buffered_metadata[0] = op->data.recv_initial_metadata;
1321
+ grpc_closure_init(&call->receiving_initial_metadata_ready,
1322
+ receiving_initial_metadata_ready, bctl);
1267
1323
  bctl->recv_initial_metadata = 1;
1268
1324
  stream_op.recv_initial_metadata =
1269
1325
  &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1326
+ stream_op.recv_initial_metadata_ready =
1327
+ &call->receiving_initial_metadata_ready;
1328
+ num_completion_callbacks_needed++;
1270
1329
  break;
1271
1330
  case GRPC_OP_RECV_MESSAGE:
1272
1331
  /* Flag validation: currently allow no flags */
@@ -1362,7 +1421,7 @@ done_with_error:
1362
1421
  }
1363
1422
  if (bctl->send_message) {
1364
1423
  call->sending_message = 0;
1365
- grpc_byte_stream_destroy(&call->sending_stream.base);
1424
+ grpc_byte_stream_destroy(exec_ctx, &call->sending_stream.base);
1366
1425
  }
1367
1426
  if (bctl->send_final_op) {
1368
1427
  call->sent_final_op = 0;
@@ -1421,4 +1480,4 @@ void *grpc_call_context_get(grpc_call *call, grpc_context_index elem) {
1421
1480
  return call->context[elem].value;
1422
1481
  }
1423
1482
 
1424
- gpr_uint8 grpc_call_is_client(grpc_call *call) { return call->is_client; }
1483
+ uint8_t grpc_call_is_client(grpc_call *call) { return call->is_client; }