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
@@ -33,7 +33,7 @@
33
33
 
34
34
  #include "src/core/transport/chttp2/varint.h"
35
35
 
36
- gpr_uint32 grpc_chttp2_hpack_varint_length(gpr_uint32 tail_value) {
36
+ uint32_t grpc_chttp2_hpack_varint_length(uint32_t tail_value) {
37
37
  if (tail_value < (1 << 7)) {
38
38
  return 2;
39
39
  } else if (tail_value < (1 << 14)) {
@@ -47,20 +47,19 @@ gpr_uint32 grpc_chttp2_hpack_varint_length(gpr_uint32 tail_value) {
47
47
  }
48
48
  }
49
49
 
50
- void grpc_chttp2_hpack_write_varint_tail(gpr_uint32 tail_value,
51
- gpr_uint8* target,
52
- gpr_uint32 tail_length) {
50
+ void grpc_chttp2_hpack_write_varint_tail(uint32_t tail_value, uint8_t* target,
51
+ uint32_t tail_length) {
53
52
  switch (tail_length) {
54
53
  case 5:
55
- target[4] = (gpr_uint8)((tail_value >> 28) | 0x80);
54
+ target[4] = (uint8_t)((tail_value >> 28) | 0x80);
56
55
  case 4:
57
- target[3] = (gpr_uint8)((tail_value >> 21) | 0x80);
56
+ target[3] = (uint8_t)((tail_value >> 21) | 0x80);
58
57
  case 3:
59
- target[2] = (gpr_uint8)((tail_value >> 14) | 0x80);
58
+ target[2] = (uint8_t)((tail_value >> 14) | 0x80);
60
59
  case 2:
61
- target[1] = (gpr_uint8)((tail_value >> 7) | 0x80);
60
+ target[1] = (uint8_t)((tail_value >> 7) | 0x80);
62
61
  case 1:
63
- target[0] = (gpr_uint8)((tail_value) | 0x80);
62
+ target[0] = (uint8_t)((tail_value) | 0x80);
64
63
  }
65
64
  target[tail_length - 1] &= 0x7f;
66
65
  }
@@ -41,17 +41,16 @@
41
41
  /* length of a value that needs varint tail encoding (it's bigger than can be
42
42
  bitpacked into the opcode byte) - returned value includes the length of the
43
43
  opcode byte */
44
- gpr_uint32 grpc_chttp2_hpack_varint_length(gpr_uint32 tail_value);
44
+ uint32_t grpc_chttp2_hpack_varint_length(uint32_t tail_value);
45
45
 
46
- void grpc_chttp2_hpack_write_varint_tail(gpr_uint32 tail_value,
47
- gpr_uint8* target,
48
- gpr_uint32 tail_length);
46
+ void grpc_chttp2_hpack_write_varint_tail(uint32_t tail_value, uint8_t* target,
47
+ uint32_t tail_length);
49
48
 
50
49
  /* maximum value that can be bitpacked with the opcode if the opcode has a
51
50
  prefix
52
51
  of length prefix_bits */
53
52
  #define GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits) \
54
- ((gpr_uint32)((1 << (8 - (prefix_bits))) - 1))
53
+ ((uint32_t)((1 << (8 - (prefix_bits))) - 1))
55
54
 
56
55
  /* length required to bitpack a value */
57
56
  #define GRPC_CHTTP2_VARINT_LENGTH(n, prefix_bits) \
@@ -62,12 +61,12 @@ void grpc_chttp2_hpack_write_varint_tail(gpr_uint32 tail_value,
62
61
 
63
62
  #define GRPC_CHTTP2_WRITE_VARINT(n, prefix_bits, prefix_or, target, length) \
64
63
  do { \
65
- gpr_uint8* tgt = target; \
64
+ uint8_t* tgt = target; \
66
65
  if ((length) == 1u) { \
67
- (tgt)[0] = (gpr_uint8)((prefix_or) | (n)); \
66
+ (tgt)[0] = (uint8_t)((prefix_or) | (n)); \
68
67
  } else { \
69
68
  (tgt)[0] = \
70
- (prefix_or) | (gpr_uint8)GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits); \
69
+ (prefix_or) | (uint8_t)GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits); \
71
70
  grpc_chttp2_hpack_write_varint_tail( \
72
71
  (n)-GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits), (tgt) + 1, (length)-1); \
73
72
  } \
@@ -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,7 +44,7 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
44
44
  grpc_chttp2_transport_writing *transport_writing);
45
45
 
46
46
  int grpc_chttp2_unlocking_check_writes(
47
- grpc_chttp2_transport_global *transport_global,
47
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
48
48
  grpc_chttp2_transport_writing *transport_writing, int is_parsing) {
49
49
  grpc_chttp2_stream_global *stream_global;
50
50
  grpc_chttp2_stream_writing *stream_writing;
@@ -75,12 +75,15 @@ int grpc_chttp2_unlocking_check_writes(
75
75
 
76
76
  GRPC_CHTTP2_FLOW_MOVE_TRANSPORT("write", transport_writing, outgoing_window,
77
77
  transport_global, outgoing_window);
78
+ bool is_window_available = transport_writing->outgoing_window > 0;
79
+ grpc_chttp2_list_flush_writing_stalled_by_transport(
80
+ exec_ctx, transport_writing, is_window_available);
78
81
 
79
82
  /* for each grpc_chttp2_stream that's become writable, frame it's data
80
83
  (according to available window sizes) and add to the output buffer */
81
84
  while (grpc_chttp2_list_pop_writable_stream(
82
85
  transport_global, transport_writing, &stream_global, &stream_writing)) {
83
- gpr_uint8 sent_initial_metadata;
86
+ uint8_t sent_initial_metadata;
84
87
 
85
88
  stream_writing->id = stream_global->id;
86
89
  stream_writing->read_closed = stream_global->read_closed;
@@ -103,15 +106,15 @@ int grpc_chttp2_unlocking_check_writes(
103
106
  if (sent_initial_metadata) {
104
107
  if (stream_global->send_message != NULL) {
105
108
  gpr_slice hdr = gpr_slice_malloc(5);
106
- gpr_uint8 *p = GPR_SLICE_START_PTR(hdr);
107
- gpr_uint32 len = stream_global->send_message->length;
109
+ uint8_t *p = GPR_SLICE_START_PTR(hdr);
110
+ uint32_t len = stream_global->send_message->length;
108
111
  GPR_ASSERT(stream_writing->send_message == NULL);
109
112
  p[0] = (stream_global->send_message->flags &
110
113
  GRPC_WRITE_INTERNAL_COMPRESS) != 0;
111
- p[1] = (gpr_uint8)(len >> 24);
112
- p[2] = (gpr_uint8)(len >> 16);
113
- p[3] = (gpr_uint8)(len >> 8);
114
- p[4] = (gpr_uint8)(len);
114
+ p[1] = (uint8_t)(len >> 24);
115
+ p[2] = (uint8_t)(len >> 16);
116
+ p[3] = (uint8_t)(len >> 8);
117
+ p[4] = (uint8_t)(len);
115
118
  gpr_slice_buffer_add(&stream_writing->flow_controlled_buffer, hdr);
116
119
  if (stream_global->send_message->length > 0) {
117
120
  stream_writing->send_message = stream_global->send_message;
@@ -160,8 +163,8 @@ int grpc_chttp2_unlocking_check_writes(
160
163
  /* if the grpc_chttp2_transport is ready to send a window update, do so here
161
164
  also; 3/4 is a magic number that will likely get tuned soon */
162
165
  if (transport_global->announce_incoming_window > 0) {
163
- gpr_uint32 announced = (gpr_uint32)GPR_MIN(
164
- transport_global->announce_incoming_window, GPR_UINT32_MAX);
166
+ uint32_t announced = (uint32_t)GPR_MIN(
167
+ transport_global->announce_incoming_window, UINT32_MAX);
165
168
  GRPC_CHTTP2_FLOW_DEBIT_TRANSPORT("write", transport_global,
166
169
  announce_incoming_window, announced);
167
170
  gpr_slice_buffer_add(&transport_writing->outbuf,
@@ -188,7 +191,7 @@ void grpc_chttp2_perform_writes(
188
191
  grpc_endpoint_write(exec_ctx, endpoint, &transport_writing->outbuf,
189
192
  &transport_writing->done_cb);
190
193
  } else {
191
- grpc_exec_ctx_enqueue(exec_ctx, &transport_writing->done_cb, 1);
194
+ grpc_exec_ctx_enqueue(exec_ctx, &transport_writing->done_cb, true, NULL);
192
195
  }
193
196
  }
194
197
 
@@ -200,10 +203,10 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
200
203
 
201
204
  while (
202
205
  grpc_chttp2_list_pop_writing_stream(transport_writing, &stream_writing)) {
203
- gpr_uint32 max_outgoing =
204
- (gpr_uint32)GPR_MIN(GRPC_CHTTP2_MAX_PAYLOAD_LENGTH,
205
- GPR_MIN(stream_writing->outgoing_window,
206
- transport_writing->outgoing_window));
206
+ uint32_t max_outgoing =
207
+ (uint32_t)GPR_MIN(GRPC_CHTTP2_MAX_PAYLOAD_LENGTH,
208
+ GPR_MIN(stream_writing->outgoing_window,
209
+ transport_writing->outgoing_window));
207
210
  /* send initial metadata if it's available */
208
211
  if (stream_writing->send_initial_metadata != NULL) {
209
212
  grpc_chttp2_encode_header(
@@ -215,7 +218,7 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
215
218
  /* send any window updates */
216
219
  if (stream_writing->announce_window > 0 &&
217
220
  stream_writing->send_initial_metadata == NULL) {
218
- gpr_uint32 announce = stream_writing->announce_window;
221
+ uint32_t announce = stream_writing->announce_window;
219
222
  gpr_slice_buffer_add(
220
223
  &transport_writing->outbuf,
221
224
  grpc_chttp2_window_update_create(stream_writing->id,
@@ -247,7 +250,7 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
247
250
  /* send any body bytes */
248
251
  if (stream_writing->flow_controlled_buffer.length > 0) {
249
252
  if (max_outgoing > 0) {
250
- gpr_uint32 send_bytes = (gpr_uint32)GPR_MIN(
253
+ uint32_t send_bytes = (uint32_t)GPR_MIN(
251
254
  max_outgoing, stream_writing->flow_controlled_buffer.length);
252
255
  int is_last_data_frame =
253
256
  stream_writing->send_message == NULL &&
@@ -273,8 +276,8 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
273
276
  stream_writing->sent_message = 1;
274
277
  }
275
278
  } else if (transport_writing->outgoing_window == 0) {
276
- grpc_chttp2_list_add_stalled_by_transport(transport_writing,
277
- stream_writing);
279
+ grpc_chttp2_list_add_writing_stalled_by_transport(transport_writing,
280
+ stream_writing);
278
281
  grpc_chttp2_list_add_written_stream(transport_writing, stream_writing);
279
282
  }
280
283
  }
@@ -312,8 +315,8 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
312
315
  /* do nothing - already reffed */
313
316
  }
314
317
  } else {
315
- grpc_chttp2_list_add_stalled_by_transport(transport_writing,
316
- stream_writing);
318
+ grpc_chttp2_list_add_writing_stalled_by_transport(transport_writing,
319
+ stream_writing);
317
320
  grpc_chttp2_list_add_written_stream(transport_writing, stream_writing);
318
321
  }
319
322
  } else {
@@ -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
@@ -86,14 +86,14 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t);
86
86
 
87
87
  /* forward declarations of various callbacks that we'll build closures around */
88
88
  static void writing_action(grpc_exec_ctx *exec_ctx, void *t,
89
- int iomgr_success_ignored);
89
+ bool iomgr_success_ignored);
90
90
 
91
91
  /** Set a transport level setting, and push it to our peer */
92
92
  static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
93
- gpr_uint32 value);
93
+ uint32_t value);
94
94
 
95
95
  /** Endpoint callback to process incoming data */
96
- static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success);
96
+ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success);
97
97
 
98
98
  /** Start disconnection chain */
99
99
  static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t);
@@ -134,7 +134,12 @@ static void connectivity_state_set(
134
134
  static void check_read_ops(grpc_exec_ctx *exec_ctx,
135
135
  grpc_chttp2_transport_global *transport_global);
136
136
 
137
- static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
137
+ static void incoming_byte_stream_update_flow_control(
138
+ grpc_chttp2_transport_global *transport_global,
139
+ grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
140
+ size_t have_already);
141
+
142
+ static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
138
143
  grpc_chttp2_stream_global *stream_global);
139
144
 
140
145
  /*
@@ -178,7 +183,7 @@ static void destruct_transport(grpc_exec_ctx *exec_ctx,
178
183
  and maybe they hold resources that need to be freed */
179
184
  while (t->global.pings.next != &t->global.pings) {
180
185
  grpc_chttp2_outstanding_ping *ping = t->global.pings.next;
181
- grpc_exec_ctx_enqueue(exec_ctx, ping->on_recv, 0);
186
+ grpc_exec_ctx_enqueue(exec_ctx, ping->on_recv, false, NULL);
182
187
  ping->next->prev = ping->prev;
183
188
  ping->prev->next = ping->next;
184
189
  gpr_free(ping);
@@ -218,7 +223,7 @@ static void ref_transport(grpc_chttp2_transport *t) { gpr_ref(&t->refs); }
218
223
 
219
224
  static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
220
225
  const grpc_channel_args *channel_args,
221
- grpc_endpoint *ep, gpr_uint8 is_client) {
226
+ grpc_endpoint *ep, uint8_t is_client) {
222
227
  size_t i;
223
228
  int j;
224
229
 
@@ -313,7 +318,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
313
318
  GRPC_ARG_MAX_CONCURRENT_STREAMS);
314
319
  } else {
315
320
  push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
316
- (gpr_uint32)channel_args->args[i].value.integer);
321
+ (uint32_t)channel_args->args[i].value.integer);
317
322
  }
318
323
  } else if (0 == strcmp(channel_args->args[i].key,
319
324
  GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER)) {
@@ -328,7 +333,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
328
333
  is_client ? "client" : "server");
329
334
  } else {
330
335
  t->global.next_stream_id =
331
- (gpr_uint32)channel_args->args[i].value.integer;
336
+ (uint32_t)channel_args->args[i].value.integer;
332
337
  }
333
338
  } else if (0 == strcmp(channel_args->args[i].key,
334
339
  GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)) {
@@ -340,7 +345,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
340
345
  GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES);
341
346
  } else {
342
347
  t->global.stream_lookahead =
343
- (gpr_uint32)channel_args->args[i].value.integer;
348
+ (uint32_t)channel_args->args[i].value.integer;
344
349
  }
345
350
  } else if (0 == strcmp(channel_args->args[i].key,
346
351
  GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)) {
@@ -348,11 +353,11 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
348
353
  gpr_log(GPR_ERROR, "%s: must be an integer",
349
354
  GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER);
350
355
  } else if (channel_args->args[i].value.integer < 0) {
351
- gpr_log(GPR_DEBUG, "%s: must be non-negative",
356
+ gpr_log(GPR_ERROR, "%s: must be non-negative",
352
357
  GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER);
353
358
  } else {
354
359
  push_setting(t, GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
355
- (gpr_uint32)channel_args->args[i].value.integer);
360
+ (uint32_t)channel_args->args[i].value.integer);
356
361
  }
357
362
  } else if (0 == strcmp(channel_args->args[i].key,
358
363
  GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER)) {
@@ -360,12 +365,12 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
360
365
  gpr_log(GPR_ERROR, "%s: must be an integer",
361
366
  GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER);
362
367
  } else if (channel_args->args[i].value.integer < 0) {
363
- gpr_log(GPR_DEBUG, "%s: must be non-negative",
368
+ gpr_log(GPR_ERROR, "%s: must be non-negative",
364
369
  GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER);
365
370
  } else {
366
371
  grpc_chttp2_hpack_compressor_set_max_usable_size(
367
372
  &t->writing.hpack_compressor,
368
- (gpr_uint32)channel_args->args[i].value.integer);
373
+ (uint32_t)channel_args->args[i].value.integer);
369
374
  }
370
375
  }
371
376
  }
@@ -477,7 +482,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
477
482
  grpc_chttp2_register_stream(t, s);
478
483
  if (server_data) {
479
484
  GPR_ASSERT(t->parsing_active);
480
- s->global.id = (gpr_uint32)(gpr_uintptr)server_data;
485
+ s->global.id = (uint32_t)(uintptr_t)server_data;
481
486
  s->parsing.id = s->global.id;
482
487
  s->global.outgoing_window =
483
488
  t->global.settings[GRPC_PEER_SETTINGS]
@@ -519,6 +524,7 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
519
524
  grpc_chttp2_list_remove_writable_stream(&t->global, &s->global);
520
525
  grpc_chttp2_list_remove_unannounced_incoming_window_available(&t->global,
521
526
  &s->global);
527
+ grpc_chttp2_list_remove_stalled_by_transport(&t->global, &s->global);
522
528
 
523
529
  gpr_mu_unlock(&t->mu);
524
530
 
@@ -532,13 +538,13 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
532
538
 
533
539
  while (
534
540
  (bs = grpc_chttp2_incoming_frame_queue_pop(&s->global.incoming_frames))) {
535
- grpc_byte_stream_destroy(bs);
541
+ grpc_byte_stream_destroy(exec_ctx, bs);
536
542
  }
537
543
 
538
544
  GPR_ASSERT(s->global.send_initial_metadata_finished == NULL);
539
545
  GPR_ASSERT(s->global.send_message_finished == NULL);
540
546
  GPR_ASSERT(s->global.send_trailing_metadata_finished == NULL);
541
- GPR_ASSERT(s->global.recv_initial_metadata_finished == NULL);
547
+ GPR_ASSERT(s->global.recv_initial_metadata_ready == NULL);
542
548
  GPR_ASSERT(s->global.recv_message_ready == NULL);
543
549
  GPR_ASSERT(s->global.recv_trailing_metadata_finished == NULL);
544
550
  grpc_chttp2_data_parser_destroy(exec_ctx, &s->parsing.data_parser);
@@ -556,7 +562,7 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
556
562
  }
557
563
 
558
564
  grpc_chttp2_stream_parsing *grpc_chttp2_parsing_lookup_stream(
559
- grpc_chttp2_transport_parsing *transport_parsing, gpr_uint32 id) {
565
+ grpc_chttp2_transport_parsing *transport_parsing, uint32_t id) {
560
566
  grpc_chttp2_transport *t = TRANSPORT_FROM_PARSING(transport_parsing);
561
567
  grpc_chttp2_stream *s =
562
568
  grpc_chttp2_stream_map_find(&t->parsing_stream_map, id);
@@ -565,14 +571,14 @@ grpc_chttp2_stream_parsing *grpc_chttp2_parsing_lookup_stream(
565
571
 
566
572
  grpc_chttp2_stream_parsing *grpc_chttp2_parsing_accept_stream(
567
573
  grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
568
- gpr_uint32 id) {
574
+ uint32_t id) {
569
575
  grpc_chttp2_stream *accepting;
570
576
  grpc_chttp2_transport *t = TRANSPORT_FROM_PARSING(transport_parsing);
571
577
  GPR_ASSERT(t->accepting_stream == NULL);
572
578
  t->accepting_stream = &accepting;
573
579
  t->channel_callback.accept_stream(exec_ctx,
574
580
  t->channel_callback.accept_stream_user_data,
575
- &t->base, (void *)(gpr_uintptr)id);
581
+ &t->base, (void *)(uintptr_t)id);
576
582
  t->accepting_stream = NULL;
577
583
  return &accepting->parsing;
578
584
  }
@@ -592,11 +598,11 @@ static void lock(grpc_chttp2_transport *t) { gpr_mu_lock(&t->mu); }
592
598
  static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
593
599
  GPR_TIMER_BEGIN("unlock", 0);
594
600
  if (!t->writing_active && !t->closed &&
595
- grpc_chttp2_unlocking_check_writes(&t->global, &t->writing,
601
+ grpc_chttp2_unlocking_check_writes(exec_ctx, &t->global, &t->writing,
596
602
  t->parsing_active)) {
597
603
  t->writing_active = 1;
598
604
  REF_TRANSPORT(t, "writing");
599
- grpc_exec_ctx_enqueue(exec_ctx, &t->writing_action, 1);
605
+ grpc_exec_ctx_enqueue(exec_ctx, &t->writing_action, true, NULL);
600
606
  prevent_endpoint_shutdown(t);
601
607
  }
602
608
  check_read_ops(exec_ctx, &t->global);
@@ -610,10 +616,10 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
610
616
  */
611
617
 
612
618
  static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
613
- gpr_uint32 value) {
619
+ uint32_t value) {
614
620
  const grpc_chttp2_setting_parameters *sp =
615
621
  &grpc_chttp2_settings_parameters[id];
616
- gpr_uint32 use_value = GPR_CLAMP(value, sp->min_value, sp->max_value);
622
+ uint32_t use_value = GPR_CLAMP(value, sp->min_value, sp->max_value);
617
623
  if (use_value != value) {
618
624
  gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
619
625
  value, use_value);
@@ -625,7 +631,7 @@ static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
625
631
  }
626
632
 
627
633
  void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
628
- void *transport_writing_ptr, int success) {
634
+ void *transport_writing_ptr, bool success) {
629
635
  grpc_chttp2_transport_writing *transport_writing = transport_writing_ptr;
630
636
  grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
631
637
  grpc_chttp2_stream_global *stream_global;
@@ -642,7 +648,8 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
642
648
 
643
649
  grpc_chttp2_cleanup_writing(exec_ctx, &t->global, &t->writing);
644
650
 
645
- while (grpc_chttp2_list_pop_closed_waiting_for_writing(&t->global, &stream_global)) {
651
+ while (grpc_chttp2_list_pop_closed_waiting_for_writing(&t->global,
652
+ &stream_global)) {
646
653
  fail_pending_writes(exec_ctx, stream_global);
647
654
  GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream_global, "finish_writes");
648
655
  }
@@ -662,7 +669,7 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
662
669
  }
663
670
 
664
671
  static void writing_action(grpc_exec_ctx *exec_ctx, void *gt,
665
- int iomgr_success_ignored) {
672
+ bool iomgr_success_ignored) {
666
673
  grpc_chttp2_transport *t = gt;
667
674
  GPR_TIMER_BEGIN("writing_action", 0);
668
675
  grpc_chttp2_perform_writes(exec_ctx, &t->writing, t->ep);
@@ -671,7 +678,7 @@ static void writing_action(grpc_exec_ctx *exec_ctx, void *gt,
671
678
 
672
679
  void grpc_chttp2_add_incoming_goaway(
673
680
  grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
674
- gpr_uint32 goaway_error, gpr_slice goaway_text) {
681
+ uint32_t goaway_error, gpr_slice goaway_text) {
675
682
  char *msg = gpr_dump_slice(goaway_text, GPR_DUMP_HEX | GPR_DUMP_ASCII);
676
683
  gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg);
677
684
  gpr_free(msg);
@@ -684,7 +691,7 @@ void grpc_chttp2_add_incoming_goaway(
684
691
  static void maybe_start_some_streams(
685
692
  grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global) {
686
693
  grpc_chttp2_stream_global *stream_global;
687
- gpr_uint32 stream_incoming_window;
694
+ uint32_t stream_incoming_window;
688
695
  /* start streams where we have free grpc_chttp2_stream ids and free
689
696
  * concurrency */
690
697
  while (transport_global->next_stream_id <= MAX_CLIENT_STREAM_ID &&
@@ -752,7 +759,7 @@ void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx,
752
759
  closure->final_data |= 1;
753
760
  }
754
761
  if (closure->final_data < 2) {
755
- grpc_exec_ctx_enqueue(exec_ctx, closure, closure->final_data == 0);
762
+ grpc_exec_ctx_enqueue(exec_ctx, closure, closure->final_data == 0, NULL);
756
763
  }
757
764
  *pclosure = NULL;
758
765
  }
@@ -770,7 +777,7 @@ static int contains_non_ok_status(
770
777
  return 0;
771
778
  }
772
779
 
773
- static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, int success) {}
780
+ static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, bool success) {}
774
781
 
775
782
  static void perform_stream_op_locked(
776
783
  grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
@@ -856,9 +863,9 @@ static void perform_stream_op_locked(
856
863
  }
857
864
 
858
865
  if (op->recv_initial_metadata != NULL) {
859
- GPR_ASSERT(stream_global->recv_initial_metadata_finished == NULL);
860
- stream_global->recv_initial_metadata_finished =
861
- add_closure_barrier(on_complete);
866
+ GPR_ASSERT(stream_global->recv_initial_metadata_ready == NULL);
867
+ stream_global->recv_initial_metadata_ready =
868
+ op->recv_initial_metadata_ready;
862
869
  stream_global->recv_initial_metadata = op->recv_initial_metadata;
863
870
  grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
864
871
  }
@@ -867,6 +874,13 @@ static void perform_stream_op_locked(
867
874
  GPR_ASSERT(stream_global->recv_message_ready == NULL);
868
875
  stream_global->recv_message_ready = op->recv_message_ready;
869
876
  stream_global->recv_message = op->recv_message;
877
+ if (stream_global->id != 0 &&
878
+ (stream_global->incoming_frames.head == NULL ||
879
+ stream_global->incoming_frames.head->is_tail)) {
880
+ incoming_byte_stream_update_flow_control(
881
+ transport_global, stream_global, transport_global->stream_lookahead,
882
+ 0);
883
+ }
870
884
  grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
871
885
  }
872
886
 
@@ -898,21 +912,21 @@ static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_recv) {
898
912
  p->next = &t->global.pings;
899
913
  p->prev = p->next->prev;
900
914
  p->prev->next = p->next->prev = p;
901
- p->id[0] = (gpr_uint8)((t->global.ping_counter >> 56) & 0xff);
902
- p->id[1] = (gpr_uint8)((t->global.ping_counter >> 48) & 0xff);
903
- p->id[2] = (gpr_uint8)((t->global.ping_counter >> 40) & 0xff);
904
- p->id[3] = (gpr_uint8)((t->global.ping_counter >> 32) & 0xff);
905
- p->id[4] = (gpr_uint8)((t->global.ping_counter >> 24) & 0xff);
906
- p->id[5] = (gpr_uint8)((t->global.ping_counter >> 16) & 0xff);
907
- p->id[6] = (gpr_uint8)((t->global.ping_counter >> 8) & 0xff);
908
- p->id[7] = (gpr_uint8)(t->global.ping_counter & 0xff);
915
+ p->id[0] = (uint8_t)((t->global.ping_counter >> 56) & 0xff);
916
+ p->id[1] = (uint8_t)((t->global.ping_counter >> 48) & 0xff);
917
+ p->id[2] = (uint8_t)((t->global.ping_counter >> 40) & 0xff);
918
+ p->id[3] = (uint8_t)((t->global.ping_counter >> 32) & 0xff);
919
+ p->id[4] = (uint8_t)((t->global.ping_counter >> 24) & 0xff);
920
+ p->id[5] = (uint8_t)((t->global.ping_counter >> 16) & 0xff);
921
+ p->id[6] = (uint8_t)((t->global.ping_counter >> 8) & 0xff);
922
+ p->id[7] = (uint8_t)(t->global.ping_counter & 0xff);
909
923
  p->on_recv = on_recv;
910
924
  gpr_slice_buffer_add(&t->global.qbuf, grpc_chttp2_ping_create(0, p->id));
911
925
  }
912
926
 
913
927
  void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
914
928
  grpc_chttp2_transport_parsing *transport_parsing,
915
- const gpr_uint8 *opaque_8bytes) {
929
+ const uint8_t *opaque_8bytes) {
916
930
  grpc_chttp2_outstanding_ping *ping;
917
931
  grpc_chttp2_transport *t = TRANSPORT_FROM_PARSING(transport_parsing);
918
932
  grpc_chttp2_transport_global *transport_global = &t->global;
@@ -920,7 +934,7 @@ void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
920
934
  for (ping = transport_global->pings.next; ping != &transport_global->pings;
921
935
  ping = ping->next) {
922
936
  if (0 == memcmp(opaque_8bytes, ping->id, 8)) {
923
- grpc_exec_ctx_enqueue(exec_ctx, ping->on_recv, 1);
937
+ grpc_exec_ctx_enqueue(exec_ctx, ping->on_recv, true, NULL);
924
938
  ping->next->prev = ping->prev;
925
939
  ping->prev->next = ping->next;
926
940
  gpr_free(ping);
@@ -937,7 +951,7 @@ static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
937
951
 
938
952
  lock(t);
939
953
 
940
- grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, 1);
954
+ grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, true, NULL);
941
955
 
942
956
  if (op->on_connectivity_state_change != NULL) {
943
957
  grpc_connectivity_state_notify_on_state_change(
@@ -949,7 +963,7 @@ static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
949
963
  t->global.sent_goaway = 1;
950
964
  grpc_chttp2_goaway_append(
951
965
  t->global.last_incoming_stream_id,
952
- (gpr_uint32)grpc_chttp2_grpc_status_to_http2_error(op->goaway_status),
966
+ (uint32_t)grpc_chttp2_grpc_status_to_http2_error(op->goaway_status),
953
967
  gpr_slice_ref(*op->goaway_message), &t->global.qbuf);
954
968
  close_transport = !grpc_chttp2_has_streams(t);
955
969
  }
@@ -995,24 +1009,32 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
995
1009
  grpc_byte_stream *bs;
996
1010
  while (
997
1011
  grpc_chttp2_list_pop_check_read_ops(transport_global, &stream_global)) {
998
- if (stream_global->recv_initial_metadata_finished != NULL &&
1012
+ if (stream_global->recv_initial_metadata_ready != NULL &&
999
1013
  stream_global->published_initial_metadata) {
1000
1014
  grpc_chttp2_incoming_metadata_buffer_publish(
1001
1015
  &stream_global->received_initial_metadata,
1002
1016
  stream_global->recv_initial_metadata);
1003
- grpc_chttp2_complete_closure_step(
1004
- exec_ctx, &stream_global->recv_initial_metadata_finished, 1);
1017
+ grpc_exec_ctx_enqueue(
1018
+ exec_ctx, stream_global->recv_initial_metadata_ready, true, NULL);
1019
+ stream_global->recv_initial_metadata_ready = NULL;
1005
1020
  }
1006
1021
  if (stream_global->recv_message_ready != NULL) {
1022
+ while (stream_global->seen_error &&
1023
+ (bs = grpc_chttp2_incoming_frame_queue_pop(
1024
+ &stream_global->incoming_frames)) != NULL) {
1025
+ grpc_byte_stream_destroy(exec_ctx, bs);
1026
+ }
1007
1027
  if (stream_global->incoming_frames.head != NULL) {
1008
1028
  *stream_global->recv_message = grpc_chttp2_incoming_frame_queue_pop(
1009
1029
  &stream_global->incoming_frames);
1010
1030
  GPR_ASSERT(*stream_global->recv_message != NULL);
1011
- grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, 1);
1031
+ grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, true,
1032
+ NULL);
1012
1033
  stream_global->recv_message_ready = NULL;
1013
1034
  } else if (stream_global->published_trailing_metadata) {
1014
1035
  *stream_global->recv_message = NULL;
1015
- grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, 1);
1036
+ grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, true,
1037
+ NULL);
1016
1038
  stream_global->recv_message_ready = NULL;
1017
1039
  }
1018
1040
  }
@@ -1021,7 +1043,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
1021
1043
  while (stream_global->seen_error &&
1022
1044
  (bs = grpc_chttp2_incoming_frame_queue_pop(
1023
1045
  &stream_global->incoming_frames)) != NULL) {
1024
- grpc_byte_stream_destroy(bs);
1046
+ grpc_byte_stream_destroy(exec_ctx, bs);
1025
1047
  }
1026
1048
  if (stream_global->incoming_frames.head == NULL) {
1027
1049
  grpc_chttp2_incoming_metadata_buffer_publish(
@@ -1035,7 +1057,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
1035
1057
  }
1036
1058
 
1037
1059
  static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
1038
- gpr_uint32 id) {
1060
+ uint32_t id) {
1039
1061
  size_t new_stream_count;
1040
1062
  grpc_chttp2_stream *s =
1041
1063
  grpc_chttp2_stream_map_delete(&t->parsing_stream_map, id);
@@ -1049,15 +1071,21 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
1049
1071
  t->parsing.incoming_stream = NULL;
1050
1072
  grpc_chttp2_parsing_become_skip_parser(exec_ctx, &t->parsing);
1051
1073
  }
1074
+ if (s->parsing.data_parser.parsing_frame != NULL) {
1075
+ grpc_chttp2_incoming_byte_stream_finished(
1076
+ exec_ctx, s->parsing.data_parser.parsing_frame, 0, 0);
1077
+ s->parsing.data_parser.parsing_frame = NULL;
1078
+ }
1079
+
1052
1080
  if (grpc_chttp2_unregister_stream(t, s) && t->global.sent_goaway) {
1053
1081
  close_transport_locked(exec_ctx, t);
1054
1082
  }
1055
1083
 
1056
1084
  new_stream_count = grpc_chttp2_stream_map_size(&t->parsing_stream_map) +
1057
1085
  grpc_chttp2_stream_map_size(&t->new_stream_map);
1058
- GPR_ASSERT(new_stream_count <= GPR_UINT32_MAX);
1086
+ GPR_ASSERT(new_stream_count <= UINT32_MAX);
1059
1087
  if (new_stream_count != t->global.concurrent_stream_count) {
1060
- t->global.concurrent_stream_count = (gpr_uint32)new_stream_count;
1088
+ t->global.concurrent_stream_count = (uint32_t)new_stream_count;
1061
1089
  maybe_start_some_streams(exec_ctx, &t->global);
1062
1090
  }
1063
1091
  }
@@ -1071,7 +1099,7 @@ static void cancel_from_api(grpc_exec_ctx *exec_ctx,
1071
1099
  &transport_global->qbuf,
1072
1100
  grpc_chttp2_rst_stream_create(
1073
1101
  stream_global->id,
1074
- (gpr_uint32)grpc_chttp2_grpc_status_to_http2_error(status)));
1102
+ (uint32_t)grpc_chttp2_grpc_status_to_http2_error(status)));
1075
1103
  }
1076
1104
  grpc_chttp2_fake_status(exec_ctx, transport_global, stream_global, status,
1077
1105
  NULL);
@@ -1116,7 +1144,7 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
1116
1144
  }
1117
1145
  }
1118
1146
 
1119
- static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
1147
+ static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
1120
1148
  grpc_chttp2_stream_global *stream_global) {
1121
1149
  grpc_chttp2_complete_closure_step(
1122
1150
  exec_ctx, &stream_global->send_initial_metadata_finished, 0);
@@ -1173,8 +1201,8 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
1173
1201
  gpr_slice hdr;
1174
1202
  gpr_slice status_hdr;
1175
1203
  gpr_slice message_pfx;
1176
- gpr_uint8 *p;
1177
- gpr_uint32 len = 0;
1204
+ uint8_t *p;
1205
+ uint32_t len = 0;
1178
1206
 
1179
1207
  GPR_ASSERT(status >= 0 && (int)status < 100);
1180
1208
 
@@ -1203,14 +1231,14 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
1203
1231
  *p++ = 's';
1204
1232
  if (status < 10) {
1205
1233
  *p++ = 1;
1206
- *p++ = (gpr_uint8)('0' + status);
1234
+ *p++ = (uint8_t)('0' + status);
1207
1235
  } else {
1208
1236
  *p++ = 2;
1209
- *p++ = (gpr_uint8)('0' + (status / 10));
1210
- *p++ = (gpr_uint8)('0' + (status % 10));
1237
+ *p++ = (uint8_t)('0' + (status / 10));
1238
+ *p++ = (uint8_t)('0' + (status % 10));
1211
1239
  }
1212
1240
  GPR_ASSERT(p == GPR_SLICE_END_PTR(status_hdr));
1213
- len += (gpr_uint32)GPR_SLICE_LENGTH(status_hdr);
1241
+ len += (uint32_t)GPR_SLICE_LENGTH(status_hdr);
1214
1242
 
1215
1243
  if (optional_message) {
1216
1244
  GPR_ASSERT(GPR_SLICE_LENGTH(*optional_message) < 127);
@@ -1230,23 +1258,23 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
1230
1258
  *p++ = 'a';
1231
1259
  *p++ = 'g';
1232
1260
  *p++ = 'e';
1233
- *p++ = (gpr_uint8)GPR_SLICE_LENGTH(*optional_message);
1261
+ *p++ = (uint8_t)GPR_SLICE_LENGTH(*optional_message);
1234
1262
  GPR_ASSERT(p == GPR_SLICE_END_PTR(message_pfx));
1235
- len += (gpr_uint32)GPR_SLICE_LENGTH(message_pfx);
1236
- len += (gpr_uint32)GPR_SLICE_LENGTH(*optional_message);
1263
+ len += (uint32_t)GPR_SLICE_LENGTH(message_pfx);
1264
+ len += (uint32_t)GPR_SLICE_LENGTH(*optional_message);
1237
1265
  }
1238
1266
 
1239
1267
  hdr = gpr_slice_malloc(9);
1240
1268
  p = GPR_SLICE_START_PTR(hdr);
1241
- *p++ = (gpr_uint8)(len >> 16);
1242
- *p++ = (gpr_uint8)(len >> 8);
1243
- *p++ = (gpr_uint8)(len);
1269
+ *p++ = (uint8_t)(len >> 16);
1270
+ *p++ = (uint8_t)(len >> 8);
1271
+ *p++ = (uint8_t)(len);
1244
1272
  *p++ = GRPC_CHTTP2_FRAME_HEADER;
1245
1273
  *p++ = GRPC_CHTTP2_DATA_FLAG_END_STREAM | GRPC_CHTTP2_DATA_FLAG_END_HEADERS;
1246
- *p++ = (gpr_uint8)(stream_global->id >> 24);
1247
- *p++ = (gpr_uint8)(stream_global->id >> 16);
1248
- *p++ = (gpr_uint8)(stream_global->id >> 8);
1249
- *p++ = (gpr_uint8)(stream_global->id);
1274
+ *p++ = (uint8_t)(stream_global->id >> 24);
1275
+ *p++ = (uint8_t)(stream_global->id >> 16);
1276
+ *p++ = (uint8_t)(stream_global->id >> 8);
1277
+ *p++ = (uint8_t)(stream_global->id);
1250
1278
  GPR_ASSERT(p == GPR_SLICE_END_PTR(hdr));
1251
1279
 
1252
1280
  gpr_slice_buffer_add(&transport_global->qbuf, hdr);
@@ -1288,14 +1316,14 @@ static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
1288
1316
  }
1289
1317
 
1290
1318
  /** update window from a settings change */
1291
- static void update_global_window(void *args, gpr_uint32 id, void *stream) {
1319
+ static void update_global_window(void *args, uint32_t id, void *stream) {
1292
1320
  grpc_chttp2_transport *t = args;
1293
1321
  grpc_chttp2_stream *s = stream;
1294
1322
  grpc_chttp2_transport_global *transport_global = &t->global;
1295
1323
  grpc_chttp2_stream_global *stream_global = &s->global;
1296
1324
  int was_zero;
1297
1325
  int is_zero;
1298
- gpr_int64 initial_window_update = t->parsing.initial_window_update;
1326
+ int64_t initial_window_update = t->parsing.initial_window_update;
1299
1327
 
1300
1328
  was_zero = stream_global->outgoing_window <= 0;
1301
1329
  GRPC_CHTTP2_FLOW_CREDIT_STREAM("settings", transport_global, stream_global,
@@ -1316,7 +1344,7 @@ static void read_error_locked(grpc_exec_ctx *exec_ctx,
1316
1344
  }
1317
1345
 
1318
1346
  /* tcp read callback */
1319
- static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) {
1347
+ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success) {
1320
1348
  size_t i;
1321
1349
  int keep_reading = 0;
1322
1350
  grpc_chttp2_transport *t = tp;
@@ -1355,7 +1383,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) {
1355
1383
  grpc_chttp2_stream_map_move_into(&t->new_stream_map,
1356
1384
  &t->parsing_stream_map);
1357
1385
  transport_global->concurrent_stream_count =
1358
- (gpr_uint32)grpc_chttp2_stream_map_size(&t->parsing_stream_map);
1386
+ (uint32_t)grpc_chttp2_stream_map_size(&t->parsing_stream_map);
1359
1387
  if (transport_parsing->initial_window_update != 0) {
1360
1388
  grpc_chttp2_stream_map_for_each(&t->parsing_stream_map,
1361
1389
  update_global_window, t);
@@ -1448,28 +1476,27 @@ static void incoming_byte_stream_update_flow_control(
1448
1476
  grpc_chttp2_transport_global *transport_global,
1449
1477
  grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
1450
1478
  size_t have_already) {
1451
- gpr_uint32 max_recv_bytes;
1479
+ uint32_t max_recv_bytes;
1452
1480
 
1453
1481
  /* clamp max recv hint to an allowable size */
1454
- if (max_size_hint >= GPR_UINT32_MAX - transport_global->stream_lookahead) {
1455
- max_recv_bytes = GPR_UINT32_MAX - transport_global->stream_lookahead;
1482
+ if (max_size_hint >= UINT32_MAX - transport_global->stream_lookahead) {
1483
+ max_recv_bytes = UINT32_MAX - transport_global->stream_lookahead;
1456
1484
  } else {
1457
- max_recv_bytes = (gpr_uint32)max_size_hint;
1485
+ max_recv_bytes = (uint32_t)max_size_hint;
1458
1486
  }
1459
1487
 
1460
1488
  /* account for bytes already received but unknown to higher layers */
1461
1489
  if (max_recv_bytes >= have_already) {
1462
- max_recv_bytes -= (gpr_uint32)have_already;
1490
+ max_recv_bytes -= (uint32_t)have_already;
1463
1491
  } else {
1464
1492
  max_recv_bytes = 0;
1465
1493
  }
1466
1494
 
1467
1495
  /* add some small lookahead to keep pipelines flowing */
1468
- GPR_ASSERT(max_recv_bytes <=
1469
- GPR_UINT32_MAX - transport_global->stream_lookahead);
1496
+ GPR_ASSERT(max_recv_bytes <= UINT32_MAX - transport_global->stream_lookahead);
1470
1497
  max_recv_bytes += transport_global->stream_lookahead;
1471
1498
  if (stream_global->max_recv_bytes < max_recv_bytes) {
1472
- gpr_uint32 add_max_recv_bytes =
1499
+ uint32_t add_max_recv_bytes =
1473
1500
  max_recv_bytes - stream_global->max_recv_bytes;
1474
1501
  GRPC_CHTTP2_FLOW_CREDIT_STREAM("op", transport_global, stream_global,
1475
1502
  max_recv_bytes, add_max_recv_bytes);
@@ -1503,6 +1530,10 @@ static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
1503
1530
  *slice = gpr_slice_buffer_take_first(&bs->slices);
1504
1531
  unlock(exec_ctx, bs->transport);
1505
1532
  return 1;
1533
+ } else if (bs->failed) {
1534
+ grpc_exec_ctx_enqueue(exec_ctx, on_complete, false, NULL);
1535
+ unlock(exec_ctx, bs->transport);
1536
+ return 0;
1506
1537
  } else {
1507
1538
  bs->on_next = on_complete;
1508
1539
  bs->next = slice;
@@ -1518,7 +1549,8 @@ static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) {
1518
1549
  }
1519
1550
  }
1520
1551
 
1521
- static void incoming_byte_stream_destroy(grpc_byte_stream *byte_stream) {
1552
+ static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
1553
+ grpc_byte_stream *byte_stream) {
1522
1554
  incoming_byte_stream_unref((grpc_chttp2_incoming_byte_stream *)byte_stream);
1523
1555
  }
1524
1556
 
@@ -1528,7 +1560,7 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
1528
1560
  gpr_mu_lock(&bs->transport->mu);
1529
1561
  if (bs->on_next != NULL) {
1530
1562
  *bs->next = slice;
1531
- grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, 1);
1563
+ grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, true, NULL);
1532
1564
  bs->on_next = NULL;
1533
1565
  } else {
1534
1566
  gpr_slice_buffer_add(&bs->slices, slice);
@@ -1537,14 +1569,36 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
1537
1569
  }
1538
1570
 
1539
1571
  void grpc_chttp2_incoming_byte_stream_finished(
1540
- grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs) {
1572
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, int success,
1573
+ int from_parsing_thread) {
1574
+ if (!success) {
1575
+ if (from_parsing_thread) {
1576
+ gpr_mu_lock(&bs->transport->mu);
1577
+ }
1578
+ grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
1579
+ bs->on_next = NULL;
1580
+ bs->failed = 1;
1581
+ if (from_parsing_thread) {
1582
+ gpr_mu_unlock(&bs->transport->mu);
1583
+ }
1584
+ } else {
1585
+ #ifndef NDEBUG
1586
+ if (from_parsing_thread) {
1587
+ gpr_mu_lock(&bs->transport->mu);
1588
+ }
1589
+ GPR_ASSERT(bs->on_next == NULL);
1590
+ if (from_parsing_thread) {
1591
+ gpr_mu_unlock(&bs->transport->mu);
1592
+ }
1593
+ #endif
1594
+ }
1541
1595
  incoming_byte_stream_unref(bs);
1542
1596
  }
1543
1597
 
1544
1598
  grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1545
1599
  grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
1546
- grpc_chttp2_stream_parsing *stream_parsing, gpr_uint32 frame_size,
1547
- gpr_uint32 flags, grpc_chttp2_incoming_frame_queue *add_to_queue) {
1600
+ grpc_chttp2_stream_parsing *stream_parsing, uint32_t frame_size,
1601
+ uint32_t flags, grpc_chttp2_incoming_frame_queue *add_to_queue) {
1548
1602
  grpc_chttp2_incoming_byte_stream *incoming_byte_stream =
1549
1603
  gpr_malloc(sizeof(*incoming_byte_stream));
1550
1604
  incoming_byte_stream->base.length = frame_size;
@@ -1558,6 +1612,7 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1558
1612
  gpr_slice_buffer_init(&incoming_byte_stream->slices);
1559
1613
  incoming_byte_stream->on_next = NULL;
1560
1614
  incoming_byte_stream->is_tail = 1;
1615
+ incoming_byte_stream->failed = 0;
1561
1616
  if (add_to_queue->head == NULL) {
1562
1617
  add_to_queue->head = incoming_byte_stream;
1563
1618
  } else {
@@ -1565,13 +1620,6 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1565
1620
  add_to_queue->tail->next_message = incoming_byte_stream;
1566
1621
  }
1567
1622
  add_to_queue->tail = incoming_byte_stream;
1568
- if (frame_size == 0) {
1569
- lock(TRANSPORT_FROM_PARSING(transport_parsing));
1570
- incoming_byte_stream_update_flow_control(
1571
- &TRANSPORT_FROM_PARSING(transport_parsing)->global,
1572
- &STREAM_FROM_PARSING(stream_parsing)->global, 0, 0);
1573
- unlock(exec_ctx, TRANSPORT_FROM_PARSING(transport_parsing));
1574
- }
1575
1623
  return incoming_byte_stream;
1576
1624
  }
1577
1625
 
@@ -1580,7 +1628,7 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1580
1628
  */
1581
1629
 
1582
1630
  static char *format_flowctl_context_var(const char *context, const char *var,
1583
- gpr_int64 val, gpr_uint32 id,
1631
+ int64_t val, uint32_t id,
1584
1632
  char **scope) {
1585
1633
  char *underscore_pos;
1586
1634
  char *result;
@@ -1615,8 +1663,7 @@ void grpc_chttp2_flowctl_trace(const char *file, int line, const char *phase,
1615
1663
  grpc_chttp2_flowctl_op op, const char *context1,
1616
1664
  const char *var1, const char *context2,
1617
1665
  const char *var2, int is_client,
1618
- gpr_uint32 stream_id, gpr_int64 val1,
1619
- gpr_int64 val2) {
1666
+ uint32_t stream_id, int64_t val1, int64_t val2) {
1620
1667
  char *scope1;
1621
1668
  char *scope2;
1622
1669
  char *label1 =