grpc 0.12.0 → 0.13.0.pre1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (673) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +5707 -22222
  3. data/include/grpc/byte_buffer.h +2 -83
  4. data/include/grpc/census.h +191 -121
  5. data/include/grpc/compression.h +14 -38
  6. data/include/grpc/grpc.h +88 -434
  7. data/include/grpc/grpc_security.h +76 -46
  8. data/include/grpc/grpc_zookeeper.h +1 -1
  9. data/include/grpc/impl/codegen/alloc.h +74 -0
  10. data/include/grpc/impl/codegen/atm.h +92 -0
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  13. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  14. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  15. data/include/grpc/impl/codegen/compression_types.h +73 -0
  16. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  17. data/include/grpc/impl/codegen/grpc_types.h +373 -0
  18. data/include/grpc/impl/codegen/log.h +110 -0
  19. data/include/grpc/impl/codegen/port_platform.h +362 -0
  20. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  21. data/include/grpc/impl/codegen/slice.h +182 -0
  22. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  23. data/include/grpc/impl/codegen/status.h +163 -0
  24. data/include/grpc/impl/codegen/sync.h +316 -0
  25. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  26. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  27. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  28. data/include/grpc/impl/codegen/time.h +132 -0
  29. data/include/grpc/status.h +2 -126
  30. data/include/grpc/support/alloc.h +2 -35
  31. data/include/grpc/support/atm.h +2 -55
  32. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  33. data/include/grpc/support/atm_gcc_sync.h +2 -50
  34. data/include/grpc/support/atm_win32.h +2 -88
  35. data/include/grpc/support/avl.h +7 -7
  36. data/include/grpc/support/cmdline.h +15 -13
  37. data/include/grpc/support/cpu.h +5 -3
  38. data/include/grpc/support/histogram.h +23 -20
  39. data/include/grpc/support/host_port.h +5 -3
  40. data/include/grpc/support/log.h +2 -71
  41. data/include/grpc/support/log_win32.h +2 -2
  42. data/include/grpc/support/port_platform.h +2 -319
  43. data/include/grpc/support/slice.h +2 -145
  44. data/include/grpc/support/slice_buffer.h +2 -65
  45. data/include/grpc/support/string_util.h +3 -3
  46. data/include/grpc/support/subprocess.h +8 -6
  47. data/include/grpc/support/sync.h +2 -278
  48. data/include/grpc/support/sync_generic.h +2 -18
  49. data/include/grpc/support/sync_posix.h +2 -10
  50. data/include/grpc/support/sync_win32.h +2 -12
  51. data/include/grpc/support/thd.h +11 -11
  52. data/include/grpc/support/time.h +2 -91
  53. data/include/grpc/support/tls.h +1 -1
  54. data/include/grpc/support/tls_gcc.h +1 -1
  55. data/include/grpc/support/tls_msvc.h +1 -1
  56. data/include/grpc/support/tls_pthread.h +2 -2
  57. data/src/boringssl/err_data.c +1252 -0
  58. data/src/core/census/context.c +492 -8
  59. data/src/core/census/grpc_filter.c +3 -3
  60. data/src/core/census/initialize.c +4 -7
  61. data/src/core/census/operation.c +2 -2
  62. data/src/core/census/placeholders.c +109 -0
  63. data/src/core/census/rpc_metric_id.h +6 -6
  64. data/src/core/census/tracing.c +1 -1
  65. data/src/core/channel/channel_args.c +4 -3
  66. data/src/core/channel/channel_stack.c +1 -1
  67. data/src/core/channel/client_channel.c +18 -14
  68. data/src/core/channel/client_uchannel.c +3 -3
  69. data/src/core/channel/compress_filter.c +8 -8
  70. data/src/core/channel/http_client_filter.c +2 -2
  71. data/src/core/channel/http_server_filter.c +9 -9
  72. data/src/core/channel/subchannel_call_holder.c +12 -10
  73. data/src/core/client_config/lb_policies/pick_first.c +49 -31
  74. data/src/core/client_config/lb_policies/round_robin.c +7 -7
  75. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  76. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  77. data/src/core/client_config/subchannel.c +36 -25
  78. data/src/core/compression/algorithm.c +3 -3
  79. data/src/core/httpcli/format_request.c +1 -1
  80. data/src/core/httpcli/httpcli.c +5 -5
  81. data/src/core/httpcli/httpcli_security_connector.c +2 -3
  82. data/src/core/httpcli/parser.c +7 -7
  83. data/src/core/httpcli/parser.h +1 -1
  84. data/src/core/iomgr/closure.c +7 -7
  85. data/src/core/iomgr/closure.h +6 -5
  86. data/src/core/iomgr/exec_ctx.c +12 -8
  87. data/src/core/iomgr/exec_ctx.h +12 -5
  88. data/src/core/iomgr/executor.c +4 -4
  89. data/src/core/iomgr/executor.h +2 -2
  90. data/src/core/iomgr/fd_posix.c +28 -17
  91. data/src/core/iomgr/fd_posix.h +7 -4
  92. data/src/core/iomgr/iocp_windows.c +6 -8
  93. data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
  94. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
  95. data/src/core/iomgr/pollset_posix.c +15 -15
  96. data/src/core/iomgr/pollset_posix.h +4 -2
  97. data/src/core/iomgr/pollset_windows.c +3 -12
  98. data/src/core/iomgr/resolve_address_posix.c +2 -2
  99. data/src/core/iomgr/resolve_address_windows.c +2 -2
  100. data/src/core/iomgr/sockaddr_utils.c +6 -6
  101. data/src/core/iomgr/sockaddr_win32.h +1 -6
  102. data/src/core/iomgr/tcp_client_posix.c +7 -7
  103. data/src/core/iomgr/tcp_client_windows.c +4 -4
  104. data/src/core/iomgr/tcp_posix.c +14 -8
  105. data/src/core/iomgr/tcp_posix.h +7 -1
  106. data/src/core/iomgr/tcp_server.h +40 -20
  107. data/src/core/iomgr/tcp_server_posix.c +106 -49
  108. data/src/core/iomgr/tcp_server_windows.c +98 -49
  109. data/src/core/iomgr/tcp_windows.c +11 -15
  110. data/src/core/iomgr/timer.c +8 -8
  111. data/src/core/iomgr/timer.h +1 -1
  112. data/src/core/iomgr/timer_heap.c +10 -10
  113. data/src/core/iomgr/timer_heap.h +2 -2
  114. data/src/core/iomgr/udp_server.c +2 -12
  115. data/src/core/iomgr/udp_server.h +1 -9
  116. data/src/core/iomgr/workqueue.h +2 -4
  117. data/src/core/iomgr/workqueue_posix.c +3 -3
  118. data/src/core/json/json_reader.c +11 -12
  119. data/src/core/json/json_reader.h +4 -4
  120. data/src/core/json/json_string.c +19 -19
  121. data/src/core/json/json_writer.c +7 -9
  122. data/src/core/profiling/basic_timers.c +1 -1
  123. data/src/core/security/base64.c +9 -9
  124. data/src/core/security/client_auth_filter.c +4 -4
  125. data/src/core/security/credentials.c +5 -5
  126. data/src/core/security/google_default_credentials.c +3 -3
  127. data/src/core/security/handshake.c +6 -5
  128. data/src/core/security/json_token.c +13 -7
  129. data/src/core/security/jwt_verifier.c +3 -2
  130. data/src/core/security/secure_endpoint.c +16 -16
  131. data/src/core/security/security_connector.c +47 -17
  132. data/src/core/security/security_connector.h +5 -5
  133. data/src/core/security/server_auth_filter.c +3 -3
  134. data/src/core/security/server_secure_chttp2.c +30 -31
  135. data/src/core/statistics/census_interface.h +2 -2
  136. data/src/core/statistics/census_rpc_stats.h +3 -3
  137. data/src/core/support/alloc.c +1 -1
  138. data/src/core/support/cpu_posix.c +2 -2
  139. data/src/core/support/env_linux.c +12 -2
  140. data/src/core/support/env_win32.c +15 -7
  141. data/src/core/support/histogram.c +5 -5
  142. data/src/core/support/log_posix.c +1 -1
  143. data/src/core/support/log_win32.c +4 -3
  144. data/src/core/support/murmur_hash.c +11 -11
  145. data/src/core/support/murmur_hash.h +1 -1
  146. data/src/core/support/slice.c +11 -11
  147. data/src/core/support/slice_buffer.c +6 -6
  148. data/src/core/support/stack_lockfree.c +20 -10
  149. data/src/core/support/string.c +15 -15
  150. data/src/core/support/string.h +5 -5
  151. data/src/core/support/string_win32.c +5 -5
  152. data/src/core/support/subprocess_windows.c +141 -0
  153. data/src/core/support/sync.c +4 -4
  154. data/src/core/support/sync_posix.c +2 -2
  155. data/src/core/support/sync_win32.c +10 -5
  156. data/src/core/support/time.c +29 -29
  157. data/src/core/support/time_posix.c +15 -6
  158. data/src/core/support/time_precise.c +2 -2
  159. data/src/core/support/time_win32.c +18 -9
  160. data/src/core/support/tls_pthread.c +1 -1
  161. data/src/core/support/wrap_memcpy.c +53 -0
  162. data/src/core/surface/alarm.c +83 -0
  163. data/src/core/surface/byte_buffer_reader.c +1 -1
  164. data/src/core/surface/call.c +78 -69
  165. data/src/core/surface/call.h +2 -2
  166. data/src/core/surface/call_test_only.h +2 -2
  167. data/src/core/surface/channel.c +9 -9
  168. data/src/core/surface/channel.h +1 -1
  169. data/src/core/surface/channel_connectivity.c +3 -3
  170. data/src/core/surface/channel_create.c +3 -3
  171. data/src/core/surface/channel_ping.c +2 -2
  172. data/src/core/surface/completion_queue.c +11 -12
  173. data/src/core/surface/completion_queue.h +1 -1
  174. data/src/core/surface/init.c +7 -5
  175. data/src/core/surface/lame_client.c +3 -3
  176. data/src/core/surface/secure_channel_create.c +3 -3
  177. data/src/core/surface/server.c +28 -28
  178. data/src/core/surface/server_chttp2.c +8 -8
  179. data/src/core/surface/server_create.c +1 -4
  180. data/src/core/surface/validate_metadata.c +3 -3
  181. data/src/core/surface/version.c +2 -2
  182. data/src/core/transport/byte_stream.c +8 -6
  183. data/src/core/transport/byte_stream.h +6 -5
  184. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  185. data/src/core/transport/chttp2/frame_data.c +29 -26
  186. data/src/core/transport/chttp2/frame_data.h +6 -6
  187. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  188. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  189. data/src/core/transport/chttp2/frame_ping.c +6 -6
  190. data/src/core/transport/chttp2/frame_ping.h +5 -5
  191. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  192. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  193. data/src/core/transport/chttp2/frame_settings.c +30 -30
  194. data/src/core/transport/chttp2/frame_settings.h +13 -13
  195. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  196. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  197. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  198. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  199. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  200. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  201. data/src/core/transport/chttp2/hpack_table.c +13 -13
  202. data/src/core/transport/chttp2/hpack_table.h +11 -11
  203. data/src/core/transport/chttp2/internal.h +97 -86
  204. data/src/core/transport/chttp2/parsing.c +25 -25
  205. data/src/core/transport/chttp2/stream_lists.c +26 -3
  206. data/src/core/transport/chttp2/stream_map.c +13 -14
  207. data/src/core/transport/chttp2/stream_map.h +6 -7
  208. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  209. data/src/core/transport/chttp2/varint.c +8 -9
  210. data/src/core/transport/chttp2/varint.h +7 -8
  211. data/src/core/transport/chttp2/writing.c +26 -23
  212. data/src/core/transport/chttp2_transport.c +133 -92
  213. data/src/core/transport/connectivity_state.c +6 -6
  214. data/src/core/transport/metadata.c +18 -18
  215. data/src/core/transport/metadata.h +5 -5
  216. data/src/core/transport/static_metadata.c +15 -16
  217. data/src/core/transport/static_metadata.h +5 -5
  218. data/src/core/transport/transport.c +5 -5
  219. data/src/core/transport/transport.h +14 -1
  220. data/src/core/tsi/fake_transport_security.c +7 -7
  221. data/src/core/tsi/ssl_transport_security.c +6 -4
  222. data/src/core/tsi/ssl_types.h +55 -0
  223. data/src/ruby/ext/grpc/extconf.rb +51 -14
  224. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  225. data/src/ruby/ext/grpc/rb_call.c +6 -3
  226. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  227. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  228. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  229. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  230. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  231. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  232. data/src/ruby/ext/grpc/rb_grpc.c +11 -3
  233. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
  234. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
  235. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  236. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  237. data/src/ruby/ext/grpc/rb_server.c +3 -1
  238. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  239. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  240. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  241. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  242. data/src/ruby/lib/grpc/grpc.rb +34 -0
  243. data/src/ruby/lib/grpc/version.rb +1 -1
  244. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  245. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  246. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  247. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  248. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  249. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  250. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  251. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  252. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  253. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  254. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  255. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  256. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  257. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  258. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  259. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  260. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  261. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  262. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  263. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  264. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  265. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  266. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  267. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  268. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  269. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  270. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  271. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  272. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  273. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  274. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  275. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  276. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  277. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  278. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  279. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  280. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  281. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  282. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  283. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  284. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  285. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  286. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  287. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  288. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  289. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  290. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  291. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  292. data/third_party/boringssl/crypto/bio/file.c +349 -0
  293. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  294. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  295. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  296. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  297. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  298. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  299. data/third_party/boringssl/crypto/bn/add.c +377 -0
  300. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  301. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  302. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  303. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  304. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  305. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  306. data/third_party/boringssl/crypto/bn/div.c +625 -0
  307. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  308. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  309. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  310. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  311. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  312. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  313. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  314. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  315. data/third_party/boringssl/crypto/bn/random.c +326 -0
  316. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  317. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  318. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  319. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  320. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  321. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  322. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  323. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  324. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  325. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  326. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  327. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  328. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  329. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  330. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  331. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  332. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  333. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  334. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  335. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  336. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  337. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  338. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  339. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  340. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  341. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  342. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  343. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  344. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  345. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  346. data/third_party/boringssl/crypto/crypto.c +140 -0
  347. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  348. data/third_party/boringssl/crypto/des/des.c +771 -0
  349. data/third_party/boringssl/crypto/des/internal.h +212 -0
  350. data/third_party/boringssl/crypto/dh/check.c +180 -0
  351. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  352. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  353. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  354. data/third_party/boringssl/crypto/dh/params.c +301 -0
  355. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  356. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  357. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  358. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  359. data/third_party/boringssl/crypto/directory.h +66 -0
  360. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  361. data/third_party/boringssl/crypto/directory_win.c +144 -0
  362. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  363. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  364. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  365. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  366. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  367. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  368. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  369. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  370. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  371. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  372. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  373. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  374. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  375. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  376. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  377. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  378. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  379. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  380. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  381. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  382. data/third_party/boringssl/crypto/err/err.c +756 -0
  383. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  384. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  385. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  386. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  387. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  388. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  389. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  390. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  391. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  392. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  393. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  394. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  395. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  396. data/third_party/boringssl/crypto/ex_data.c +294 -0
  397. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  398. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  399. data/third_party/boringssl/crypto/internal.h +532 -0
  400. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  401. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  402. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  403. data/third_party/boringssl/crypto/mem.c +200 -0
  404. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  405. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  406. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  407. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  408. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  409. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  410. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  411. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  412. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  413. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  414. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  415. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  416. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  417. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  418. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  419. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  420. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  421. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  422. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  423. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  424. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  425. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  426. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  427. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  428. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  429. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  430. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  431. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  432. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  433. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  434. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  435. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  436. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  437. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  438. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  439. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  440. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  441. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  442. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  443. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  444. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  445. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  446. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  447. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  448. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  449. data/third_party/boringssl/crypto/thread.c +101 -0
  450. data/third_party/boringssl/crypto/thread_none.c +55 -0
  451. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  452. data/third_party/boringssl/crypto/thread_win.c +282 -0
  453. data/third_party/boringssl/crypto/time_support.c +212 -0
  454. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  455. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  456. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  457. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  458. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  459. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  460. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  461. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  462. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  463. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  464. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  465. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  466. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  467. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  468. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  469. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  470. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  471. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  472. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  473. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  474. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  475. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  476. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  477. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  478. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  479. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  480. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  481. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  482. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  483. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  484. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  485. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  486. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  487. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  488. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  489. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  490. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  491. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  492. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  493. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  494. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  495. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  496. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  497. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  498. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  499. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  500. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  501. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  502. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  503. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  504. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  505. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  506. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  507. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  508. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  509. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  510. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  511. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  512. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  513. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  514. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  515. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  516. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  517. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  518. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  519. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  520. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  521. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  522. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  523. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  524. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  525. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  526. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  527. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  528. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  529. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  530. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  531. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  532. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  533. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  534. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  535. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  536. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  537. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  538. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  539. data/third_party/boringssl/include/openssl/aead.h +346 -0
  540. data/third_party/boringssl/include/openssl/aes.h +158 -0
  541. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  542. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  543. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  544. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  545. data/third_party/boringssl/include/openssl/base.h +261 -0
  546. data/third_party/boringssl/include/openssl/base64.h +184 -0
  547. data/third_party/boringssl/include/openssl/bio.h +902 -0
  548. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  549. data/third_party/boringssl/include/openssl/bn.h +885 -0
  550. data/third_party/boringssl/include/openssl/buf.h +118 -0
  551. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  552. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  553. data/third_party/boringssl/include/openssl/cast.h +96 -0
  554. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  555. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  556. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  557. data/third_party/boringssl/include/openssl/conf.h +145 -0
  558. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  559. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  560. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  561. data/third_party/boringssl/include/openssl/des.h +177 -0
  562. data/third_party/boringssl/include/openssl/dh.h +238 -0
  563. data/third_party/boringssl/include/openssl/digest.h +258 -0
  564. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  565. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  566. data/third_party/boringssl/include/openssl/ec.h +355 -0
  567. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  568. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  569. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  570. data/third_party/boringssl/include/openssl/engine.h +98 -0
  571. data/third_party/boringssl/include/openssl/err.h +487 -0
  572. data/third_party/boringssl/include/openssl/evp.h +750 -0
  573. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  574. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  575. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  576. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  577. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  578. data/third_party/boringssl/include/openssl/md4.h +102 -0
  579. data/third_party/boringssl/include/openssl/md5.h +107 -0
  580. data/third_party/boringssl/include/openssl/mem.h +140 -0
  581. data/third_party/boringssl/include/openssl/obj.h +198 -0
  582. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  583. data/third_party/boringssl/include/openssl/objects.h +18 -0
  584. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  585. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  586. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  587. data/third_party/boringssl/include/openssl/pem.h +521 -0
  588. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  589. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  590. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  591. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  592. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  593. data/third_party/boringssl/include/openssl/rand.h +113 -0
  594. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  595. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  596. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  597. data/third_party/boringssl/include/openssl/sha.h +256 -0
  598. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  599. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  600. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  601. data/third_party/boringssl/include/openssl/stack.h +298 -0
  602. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  603. data/third_party/boringssl/include/openssl/thread.h +173 -0
  604. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  605. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  606. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  607. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  608. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  609. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  610. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  611. data/third_party/boringssl/ssl/d1_both.c +880 -0
  612. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  613. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  614. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  615. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  616. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  617. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  618. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  619. data/third_party/boringssl/ssl/internal.h +1276 -0
  620. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  621. data/third_party/boringssl/ssl/s3_both.c +571 -0
  622. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  623. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  624. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  625. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  626. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  627. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  628. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  629. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  630. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  631. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  632. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  633. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  634. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  635. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  636. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  637. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  638. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  639. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  640. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  641. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  642. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  643. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  644. data/third_party/boringssl/ssl/tls_record.c +342 -0
  645. data/third_party/zlib/adler32.c +179 -0
  646. data/third_party/zlib/compress.c +80 -0
  647. data/third_party/zlib/crc32.c +425 -0
  648. data/third_party/zlib/crc32.h +441 -0
  649. data/third_party/zlib/deflate.c +1967 -0
  650. data/third_party/zlib/deflate.h +346 -0
  651. data/third_party/zlib/gzclose.c +25 -0
  652. data/third_party/zlib/gzguts.h +209 -0
  653. data/third_party/zlib/gzlib.c +634 -0
  654. data/third_party/zlib/gzread.c +594 -0
  655. data/third_party/zlib/gzwrite.c +577 -0
  656. data/third_party/zlib/infback.c +640 -0
  657. data/third_party/zlib/inffast.c +340 -0
  658. data/third_party/zlib/inffast.h +11 -0
  659. data/third_party/zlib/inffixed.h +94 -0
  660. data/third_party/zlib/inflate.c +1512 -0
  661. data/third_party/zlib/inflate.h +122 -0
  662. data/third_party/zlib/inftrees.c +306 -0
  663. data/third_party/zlib/inftrees.h +62 -0
  664. data/third_party/zlib/trees.c +1226 -0
  665. data/third_party/zlib/trees.h +128 -0
  666. data/third_party/zlib/uncompr.c +59 -0
  667. data/third_party/zlib/zconf.h +511 -0
  668. data/third_party/zlib/zlib.h +1768 -0
  669. data/third_party/zlib/zutil.c +324 -0
  670. data/third_party/zlib/zutil.h +253 -0
  671. metadata +492 -25
  672. data/Rakefile +0 -63
  673. data/src/ruby/lib/grpc/grpc.so +0 -0
@@ -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
@@ -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(transport_writing,
80
+ 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;
@@ -130,8 +133,8 @@ int grpc_chttp2_unlocking_check_writes(
130
133
  GRPC_CHTTP2_STREAM_REF(stream_global, "chttp2_writing");
131
134
  }
132
135
  } else {
133
- grpc_chttp2_list_add_stalled_by_transport(transport_writing,
134
- stream_writing);
136
+ grpc_chttp2_list_add_writing_stalled_by_transport(transport_writing,
137
+ stream_writing);
135
138
  }
136
139
  }
137
140
  if (stream_global->send_trailing_metadata) {
@@ -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,7 +538,7 @@ 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);
@@ -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
  }
@@ -596,7 +602,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
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,
@@ -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
  }
@@ -1008,11 +1022,13 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
1008
1022
  *stream_global->recv_message = grpc_chttp2_incoming_frame_queue_pop(
1009
1023
  &stream_global->incoming_frames);
1010
1024
  GPR_ASSERT(*stream_global->recv_message != NULL);
1011
- grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, 1);
1025
+ grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, true,
1026
+ NULL);
1012
1027
  stream_global->recv_message_ready = NULL;
1013
1028
  } else if (stream_global->published_trailing_metadata) {
1014
1029
  *stream_global->recv_message = NULL;
1015
- grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, 1);
1030
+ grpc_exec_ctx_enqueue(exec_ctx, stream_global->recv_message_ready, true,
1031
+ NULL);
1016
1032
  stream_global->recv_message_ready = NULL;
1017
1033
  }
1018
1034
  }
@@ -1021,7 +1037,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
1021
1037
  while (stream_global->seen_error &&
1022
1038
  (bs = grpc_chttp2_incoming_frame_queue_pop(
1023
1039
  &stream_global->incoming_frames)) != NULL) {
1024
- grpc_byte_stream_destroy(bs);
1040
+ grpc_byte_stream_destroy(exec_ctx, bs);
1025
1041
  }
1026
1042
  if (stream_global->incoming_frames.head == NULL) {
1027
1043
  grpc_chttp2_incoming_metadata_buffer_publish(
@@ -1035,7 +1051,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
1035
1051
  }
1036
1052
 
1037
1053
  static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
1038
- gpr_uint32 id) {
1054
+ uint32_t id) {
1039
1055
  size_t new_stream_count;
1040
1056
  grpc_chttp2_stream *s =
1041
1057
  grpc_chttp2_stream_map_delete(&t->parsing_stream_map, id);
@@ -1049,15 +1065,21 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
1049
1065
  t->parsing.incoming_stream = NULL;
1050
1066
  grpc_chttp2_parsing_become_skip_parser(exec_ctx, &t->parsing);
1051
1067
  }
1068
+ if (s->parsing.data_parser.parsing_frame != NULL) {
1069
+ grpc_chttp2_incoming_byte_stream_finished(
1070
+ exec_ctx, s->parsing.data_parser.parsing_frame, 0, 0);
1071
+ s->parsing.data_parser.parsing_frame = NULL;
1072
+ }
1073
+
1052
1074
  if (grpc_chttp2_unregister_stream(t, s) && t->global.sent_goaway) {
1053
1075
  close_transport_locked(exec_ctx, t);
1054
1076
  }
1055
1077
 
1056
1078
  new_stream_count = grpc_chttp2_stream_map_size(&t->parsing_stream_map) +
1057
1079
  grpc_chttp2_stream_map_size(&t->new_stream_map);
1058
- GPR_ASSERT(new_stream_count <= GPR_UINT32_MAX);
1080
+ GPR_ASSERT(new_stream_count <= UINT32_MAX);
1059
1081
  if (new_stream_count != t->global.concurrent_stream_count) {
1060
- t->global.concurrent_stream_count = (gpr_uint32)new_stream_count;
1082
+ t->global.concurrent_stream_count = (uint32_t)new_stream_count;
1061
1083
  maybe_start_some_streams(exec_ctx, &t->global);
1062
1084
  }
1063
1085
  }
@@ -1071,7 +1093,7 @@ static void cancel_from_api(grpc_exec_ctx *exec_ctx,
1071
1093
  &transport_global->qbuf,
1072
1094
  grpc_chttp2_rst_stream_create(
1073
1095
  stream_global->id,
1074
- (gpr_uint32)grpc_chttp2_grpc_status_to_http2_error(status)));
1096
+ (uint32_t)grpc_chttp2_grpc_status_to_http2_error(status)));
1075
1097
  }
1076
1098
  grpc_chttp2_fake_status(exec_ctx, transport_global, stream_global, status,
1077
1099
  NULL);
@@ -1116,7 +1138,7 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
1116
1138
  }
1117
1139
  }
1118
1140
 
1119
- static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
1141
+ static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
1120
1142
  grpc_chttp2_stream_global *stream_global) {
1121
1143
  grpc_chttp2_complete_closure_step(
1122
1144
  exec_ctx, &stream_global->send_initial_metadata_finished, 0);
@@ -1173,8 +1195,8 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
1173
1195
  gpr_slice hdr;
1174
1196
  gpr_slice status_hdr;
1175
1197
  gpr_slice message_pfx;
1176
- gpr_uint8 *p;
1177
- gpr_uint32 len = 0;
1198
+ uint8_t *p;
1199
+ uint32_t len = 0;
1178
1200
 
1179
1201
  GPR_ASSERT(status >= 0 && (int)status < 100);
1180
1202
 
@@ -1203,14 +1225,14 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
1203
1225
  *p++ = 's';
1204
1226
  if (status < 10) {
1205
1227
  *p++ = 1;
1206
- *p++ = (gpr_uint8)('0' + status);
1228
+ *p++ = (uint8_t)('0' + status);
1207
1229
  } else {
1208
1230
  *p++ = 2;
1209
- *p++ = (gpr_uint8)('0' + (status / 10));
1210
- *p++ = (gpr_uint8)('0' + (status % 10));
1231
+ *p++ = (uint8_t)('0' + (status / 10));
1232
+ *p++ = (uint8_t)('0' + (status % 10));
1211
1233
  }
1212
1234
  GPR_ASSERT(p == GPR_SLICE_END_PTR(status_hdr));
1213
- len += (gpr_uint32)GPR_SLICE_LENGTH(status_hdr);
1235
+ len += (uint32_t)GPR_SLICE_LENGTH(status_hdr);
1214
1236
 
1215
1237
  if (optional_message) {
1216
1238
  GPR_ASSERT(GPR_SLICE_LENGTH(*optional_message) < 127);
@@ -1230,23 +1252,23 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
1230
1252
  *p++ = 'a';
1231
1253
  *p++ = 'g';
1232
1254
  *p++ = 'e';
1233
- *p++ = (gpr_uint8)GPR_SLICE_LENGTH(*optional_message);
1255
+ *p++ = (uint8_t)GPR_SLICE_LENGTH(*optional_message);
1234
1256
  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);
1257
+ len += (uint32_t)GPR_SLICE_LENGTH(message_pfx);
1258
+ len += (uint32_t)GPR_SLICE_LENGTH(*optional_message);
1237
1259
  }
1238
1260
 
1239
1261
  hdr = gpr_slice_malloc(9);
1240
1262
  p = GPR_SLICE_START_PTR(hdr);
1241
- *p++ = (gpr_uint8)(len >> 16);
1242
- *p++ = (gpr_uint8)(len >> 8);
1243
- *p++ = (gpr_uint8)(len);
1263
+ *p++ = (uint8_t)(len >> 16);
1264
+ *p++ = (uint8_t)(len >> 8);
1265
+ *p++ = (uint8_t)(len);
1244
1266
  *p++ = GRPC_CHTTP2_FRAME_HEADER;
1245
1267
  *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);
1268
+ *p++ = (uint8_t)(stream_global->id >> 24);
1269
+ *p++ = (uint8_t)(stream_global->id >> 16);
1270
+ *p++ = (uint8_t)(stream_global->id >> 8);
1271
+ *p++ = (uint8_t)(stream_global->id);
1250
1272
  GPR_ASSERT(p == GPR_SLICE_END_PTR(hdr));
1251
1273
 
1252
1274
  gpr_slice_buffer_add(&transport_global->qbuf, hdr);
@@ -1288,14 +1310,14 @@ static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
1288
1310
  }
1289
1311
 
1290
1312
  /** update window from a settings change */
1291
- static void update_global_window(void *args, gpr_uint32 id, void *stream) {
1313
+ static void update_global_window(void *args, uint32_t id, void *stream) {
1292
1314
  grpc_chttp2_transport *t = args;
1293
1315
  grpc_chttp2_stream *s = stream;
1294
1316
  grpc_chttp2_transport_global *transport_global = &t->global;
1295
1317
  grpc_chttp2_stream_global *stream_global = &s->global;
1296
1318
  int was_zero;
1297
1319
  int is_zero;
1298
- gpr_int64 initial_window_update = t->parsing.initial_window_update;
1320
+ int64_t initial_window_update = t->parsing.initial_window_update;
1299
1321
 
1300
1322
  was_zero = stream_global->outgoing_window <= 0;
1301
1323
  GRPC_CHTTP2_FLOW_CREDIT_STREAM("settings", transport_global, stream_global,
@@ -1316,7 +1338,7 @@ static void read_error_locked(grpc_exec_ctx *exec_ctx,
1316
1338
  }
1317
1339
 
1318
1340
  /* tcp read callback */
1319
- static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) {
1341
+ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success) {
1320
1342
  size_t i;
1321
1343
  int keep_reading = 0;
1322
1344
  grpc_chttp2_transport *t = tp;
@@ -1355,7 +1377,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) {
1355
1377
  grpc_chttp2_stream_map_move_into(&t->new_stream_map,
1356
1378
  &t->parsing_stream_map);
1357
1379
  transport_global->concurrent_stream_count =
1358
- (gpr_uint32)grpc_chttp2_stream_map_size(&t->parsing_stream_map);
1380
+ (uint32_t)grpc_chttp2_stream_map_size(&t->parsing_stream_map);
1359
1381
  if (transport_parsing->initial_window_update != 0) {
1360
1382
  grpc_chttp2_stream_map_for_each(&t->parsing_stream_map,
1361
1383
  update_global_window, t);
@@ -1448,28 +1470,27 @@ static void incoming_byte_stream_update_flow_control(
1448
1470
  grpc_chttp2_transport_global *transport_global,
1449
1471
  grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
1450
1472
  size_t have_already) {
1451
- gpr_uint32 max_recv_bytes;
1473
+ uint32_t max_recv_bytes;
1452
1474
 
1453
1475
  /* 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;
1476
+ if (max_size_hint >= UINT32_MAX - transport_global->stream_lookahead) {
1477
+ max_recv_bytes = UINT32_MAX - transport_global->stream_lookahead;
1456
1478
  } else {
1457
- max_recv_bytes = (gpr_uint32)max_size_hint;
1479
+ max_recv_bytes = (uint32_t)max_size_hint;
1458
1480
  }
1459
1481
 
1460
1482
  /* account for bytes already received but unknown to higher layers */
1461
1483
  if (max_recv_bytes >= have_already) {
1462
- max_recv_bytes -= (gpr_uint32)have_already;
1484
+ max_recv_bytes -= (uint32_t)have_already;
1463
1485
  } else {
1464
1486
  max_recv_bytes = 0;
1465
1487
  }
1466
1488
 
1467
1489
  /* add some small lookahead to keep pipelines flowing */
1468
- GPR_ASSERT(max_recv_bytes <=
1469
- GPR_UINT32_MAX - transport_global->stream_lookahead);
1490
+ GPR_ASSERT(max_recv_bytes <= UINT32_MAX - transport_global->stream_lookahead);
1470
1491
  max_recv_bytes += transport_global->stream_lookahead;
1471
1492
  if (stream_global->max_recv_bytes < max_recv_bytes) {
1472
- gpr_uint32 add_max_recv_bytes =
1493
+ uint32_t add_max_recv_bytes =
1473
1494
  max_recv_bytes - stream_global->max_recv_bytes;
1474
1495
  GRPC_CHTTP2_FLOW_CREDIT_STREAM("op", transport_global, stream_global,
1475
1496
  max_recv_bytes, add_max_recv_bytes);
@@ -1503,6 +1524,10 @@ static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
1503
1524
  *slice = gpr_slice_buffer_take_first(&bs->slices);
1504
1525
  unlock(exec_ctx, bs->transport);
1505
1526
  return 1;
1527
+ } else if (bs->failed) {
1528
+ grpc_exec_ctx_enqueue(exec_ctx, on_complete, false, NULL);
1529
+ unlock(exec_ctx, bs->transport);
1530
+ return 0;
1506
1531
  } else {
1507
1532
  bs->on_next = on_complete;
1508
1533
  bs->next = slice;
@@ -1518,7 +1543,8 @@ static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) {
1518
1543
  }
1519
1544
  }
1520
1545
 
1521
- static void incoming_byte_stream_destroy(grpc_byte_stream *byte_stream) {
1546
+ static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
1547
+ grpc_byte_stream *byte_stream) {
1522
1548
  incoming_byte_stream_unref((grpc_chttp2_incoming_byte_stream *)byte_stream);
1523
1549
  }
1524
1550
 
@@ -1528,7 +1554,7 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
1528
1554
  gpr_mu_lock(&bs->transport->mu);
1529
1555
  if (bs->on_next != NULL) {
1530
1556
  *bs->next = slice;
1531
- grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, 1);
1557
+ grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, true, NULL);
1532
1558
  bs->on_next = NULL;
1533
1559
  } else {
1534
1560
  gpr_slice_buffer_add(&bs->slices, slice);
@@ -1537,14 +1563,36 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
1537
1563
  }
1538
1564
 
1539
1565
  void grpc_chttp2_incoming_byte_stream_finished(
1540
- grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs) {
1566
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, int success,
1567
+ int from_parsing_thread) {
1568
+ if (!success) {
1569
+ if (from_parsing_thread) {
1570
+ gpr_mu_lock(&bs->transport->mu);
1571
+ }
1572
+ grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
1573
+ bs->on_next = NULL;
1574
+ bs->failed = 1;
1575
+ if (from_parsing_thread) {
1576
+ gpr_mu_unlock(&bs->transport->mu);
1577
+ }
1578
+ } else {
1579
+ #ifndef NDEBUG
1580
+ if (from_parsing_thread) {
1581
+ gpr_mu_lock(&bs->transport->mu);
1582
+ }
1583
+ GPR_ASSERT(bs->on_next == NULL);
1584
+ if (from_parsing_thread) {
1585
+ gpr_mu_unlock(&bs->transport->mu);
1586
+ }
1587
+ #endif
1588
+ }
1541
1589
  incoming_byte_stream_unref(bs);
1542
1590
  }
1543
1591
 
1544
1592
  grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1545
1593
  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) {
1594
+ grpc_chttp2_stream_parsing *stream_parsing, uint32_t frame_size,
1595
+ uint32_t flags, grpc_chttp2_incoming_frame_queue *add_to_queue) {
1548
1596
  grpc_chttp2_incoming_byte_stream *incoming_byte_stream =
1549
1597
  gpr_malloc(sizeof(*incoming_byte_stream));
1550
1598
  incoming_byte_stream->base.length = frame_size;
@@ -1558,6 +1606,7 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1558
1606
  gpr_slice_buffer_init(&incoming_byte_stream->slices);
1559
1607
  incoming_byte_stream->on_next = NULL;
1560
1608
  incoming_byte_stream->is_tail = 1;
1609
+ incoming_byte_stream->failed = 0;
1561
1610
  if (add_to_queue->head == NULL) {
1562
1611
  add_to_queue->head = incoming_byte_stream;
1563
1612
  } else {
@@ -1565,13 +1614,6 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1565
1614
  add_to_queue->tail->next_message = incoming_byte_stream;
1566
1615
  }
1567
1616
  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
1617
  return incoming_byte_stream;
1576
1618
  }
1577
1619
 
@@ -1580,7 +1622,7 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
1580
1622
  */
1581
1623
 
1582
1624
  static char *format_flowctl_context_var(const char *context, const char *var,
1583
- gpr_int64 val, gpr_uint32 id,
1625
+ int64_t val, uint32_t id,
1584
1626
  char **scope) {
1585
1627
  char *underscore_pos;
1586
1628
  char *result;
@@ -1615,8 +1657,7 @@ void grpc_chttp2_flowctl_trace(const char *file, int line, const char *phase,
1615
1657
  grpc_chttp2_flowctl_op op, const char *context1,
1616
1658
  const char *var1, const char *context2,
1617
1659
  const char *var2, int is_client,
1618
- gpr_uint32 stream_id, gpr_int64 val1,
1619
- gpr_int64 val2) {
1660
+ uint32_t stream_id, int64_t val1, int64_t val2) {
1620
1661
  char *scope1;
1621
1662
  char *scope2;
1622
1663
  char *label1 =