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.
- checksums.yaml +4 -4
- data/Makefile +5707 -22222
- data/include/grpc/byte_buffer.h +2 -83
- data/include/grpc/census.h +191 -121
- data/include/grpc/compression.h +14 -38
- data/include/grpc/grpc.h +88 -434
- data/include/grpc/grpc_security.h +76 -46
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +74 -0
- data/include/grpc/impl/codegen/atm.h +92 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
- data/include/grpc/impl/codegen/atm_win32.h +125 -0
- data/include/grpc/impl/codegen/byte_buffer.h +121 -0
- data/include/grpc/impl/codegen/compression_types.h +73 -0
- data/include/grpc/impl/codegen/connectivity_state.h +59 -0
- data/include/grpc/impl/codegen/grpc_types.h +373 -0
- data/include/grpc/impl/codegen/log.h +110 -0
- data/include/grpc/impl/codegen/port_platform.h +362 -0
- data/include/grpc/impl/codegen/propagation_bits.h +67 -0
- data/include/grpc/impl/codegen/slice.h +182 -0
- data/include/grpc/impl/codegen/slice_buffer.h +105 -0
- data/include/grpc/impl/codegen/status.h +163 -0
- data/include/grpc/impl/codegen/sync.h +316 -0
- data/include/grpc/impl/codegen/sync_generic.h +55 -0
- data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
- data/include/grpc/impl/codegen/sync_win32.h +49 -0
- data/include/grpc/impl/codegen/time.h +132 -0
- data/include/grpc/status.h +2 -126
- data/include/grpc/support/alloc.h +2 -35
- data/include/grpc/support/atm.h +2 -55
- data/include/grpc/support/atm_gcc_atomic.h +5 -38
- data/include/grpc/support/atm_gcc_sync.h +2 -50
- data/include/grpc/support/atm_win32.h +2 -88
- data/include/grpc/support/avl.h +7 -7
- data/include/grpc/support/cmdline.h +15 -13
- data/include/grpc/support/cpu.h +5 -3
- data/include/grpc/support/histogram.h +23 -20
- data/include/grpc/support/host_port.h +5 -3
- data/include/grpc/support/log.h +2 -71
- data/include/grpc/support/log_win32.h +2 -2
- data/include/grpc/support/port_platform.h +2 -319
- data/include/grpc/support/slice.h +2 -145
- data/include/grpc/support/slice_buffer.h +2 -65
- data/include/grpc/support/string_util.h +3 -3
- data/include/grpc/support/subprocess.h +8 -6
- data/include/grpc/support/sync.h +2 -278
- data/include/grpc/support/sync_generic.h +2 -18
- data/include/grpc/support/sync_posix.h +2 -10
- data/include/grpc/support/sync_win32.h +2 -12
- data/include/grpc/support/thd.h +11 -11
- data/include/grpc/support/time.h +2 -91
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_msvc.h +1 -1
- data/include/grpc/support/tls_pthread.h +2 -2
- data/src/boringssl/err_data.c +1252 -0
- data/src/core/census/context.c +492 -8
- data/src/core/census/grpc_filter.c +3 -3
- data/src/core/census/initialize.c +4 -7
- data/src/core/census/operation.c +2 -2
- data/src/core/census/placeholders.c +109 -0
- data/src/core/census/rpc_metric_id.h +6 -6
- data/src/core/census/tracing.c +1 -1
- data/src/core/channel/channel_args.c +4 -3
- data/src/core/channel/channel_stack.c +1 -1
- data/src/core/channel/client_channel.c +18 -14
- data/src/core/channel/client_uchannel.c +3 -3
- data/src/core/channel/compress_filter.c +8 -8
- data/src/core/channel/http_client_filter.c +2 -2
- data/src/core/channel/http_server_filter.c +9 -9
- data/src/core/channel/subchannel_call_holder.c +12 -10
- data/src/core/client_config/lb_policies/pick_first.c +49 -31
- data/src/core/client_config/lb_policies/round_robin.c +7 -7
- data/src/core/client_config/resolvers/dns_resolver.c +3 -3
- data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
- data/src/core/client_config/subchannel.c +36 -25
- data/src/core/compression/algorithm.c +3 -3
- data/src/core/httpcli/format_request.c +1 -1
- data/src/core/httpcli/httpcli.c +5 -5
- data/src/core/httpcli/httpcli_security_connector.c +2 -3
- data/src/core/httpcli/parser.c +7 -7
- data/src/core/httpcli/parser.h +1 -1
- data/src/core/iomgr/closure.c +7 -7
- data/src/core/iomgr/closure.h +6 -5
- data/src/core/iomgr/exec_ctx.c +12 -8
- data/src/core/iomgr/exec_ctx.h +12 -5
- data/src/core/iomgr/executor.c +4 -4
- data/src/core/iomgr/executor.h +2 -2
- data/src/core/iomgr/fd_posix.c +28 -17
- data/src/core/iomgr/fd_posix.h +7 -4
- data/src/core/iomgr/iocp_windows.c +6 -8
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
- data/src/core/iomgr/pollset_posix.c +15 -15
- data/src/core/iomgr/pollset_posix.h +4 -2
- data/src/core/iomgr/pollset_windows.c +3 -12
- data/src/core/iomgr/resolve_address_posix.c +2 -2
- data/src/core/iomgr/resolve_address_windows.c +2 -2
- data/src/core/iomgr/sockaddr_utils.c +6 -6
- data/src/core/iomgr/sockaddr_win32.h +1 -6
- data/src/core/iomgr/tcp_client_posix.c +7 -7
- data/src/core/iomgr/tcp_client_windows.c +4 -4
- data/src/core/iomgr/tcp_posix.c +14 -8
- data/src/core/iomgr/tcp_posix.h +7 -1
- data/src/core/iomgr/tcp_server.h +40 -20
- data/src/core/iomgr/tcp_server_posix.c +106 -49
- data/src/core/iomgr/tcp_server_windows.c +98 -49
- data/src/core/iomgr/tcp_windows.c +11 -15
- data/src/core/iomgr/timer.c +8 -8
- data/src/core/iomgr/timer.h +1 -1
- data/src/core/iomgr/timer_heap.c +10 -10
- data/src/core/iomgr/timer_heap.h +2 -2
- data/src/core/iomgr/udp_server.c +2 -12
- data/src/core/iomgr/udp_server.h +1 -9
- data/src/core/iomgr/workqueue.h +2 -4
- data/src/core/iomgr/workqueue_posix.c +3 -3
- data/src/core/json/json_reader.c +11 -12
- data/src/core/json/json_reader.h +4 -4
- data/src/core/json/json_string.c +19 -19
- data/src/core/json/json_writer.c +7 -9
- data/src/core/profiling/basic_timers.c +1 -1
- data/src/core/security/base64.c +9 -9
- data/src/core/security/client_auth_filter.c +4 -4
- data/src/core/security/credentials.c +5 -5
- data/src/core/security/google_default_credentials.c +3 -3
- data/src/core/security/handshake.c +6 -5
- data/src/core/security/json_token.c +13 -7
- data/src/core/security/jwt_verifier.c +3 -2
- data/src/core/security/secure_endpoint.c +16 -16
- data/src/core/security/security_connector.c +47 -17
- data/src/core/security/security_connector.h +5 -5
- data/src/core/security/server_auth_filter.c +3 -3
- data/src/core/security/server_secure_chttp2.c +30 -31
- data/src/core/statistics/census_interface.h +2 -2
- data/src/core/statistics/census_rpc_stats.h +3 -3
- data/src/core/support/alloc.c +1 -1
- data/src/core/support/cpu_posix.c +2 -2
- data/src/core/support/env_linux.c +12 -2
- data/src/core/support/env_win32.c +15 -7
- data/src/core/support/histogram.c +5 -5
- data/src/core/support/log_posix.c +1 -1
- data/src/core/support/log_win32.c +4 -3
- data/src/core/support/murmur_hash.c +11 -11
- data/src/core/support/murmur_hash.h +1 -1
- data/src/core/support/slice.c +11 -11
- data/src/core/support/slice_buffer.c +6 -6
- data/src/core/support/stack_lockfree.c +20 -10
- data/src/core/support/string.c +15 -15
- data/src/core/support/string.h +5 -5
- data/src/core/support/string_win32.c +5 -5
- data/src/core/support/subprocess_windows.c +141 -0
- data/src/core/support/sync.c +4 -4
- data/src/core/support/sync_posix.c +2 -2
- data/src/core/support/sync_win32.c +10 -5
- data/src/core/support/time.c +29 -29
- data/src/core/support/time_posix.c +15 -6
- data/src/core/support/time_precise.c +2 -2
- data/src/core/support/time_win32.c +18 -9
- data/src/core/support/tls_pthread.c +1 -1
- data/src/core/support/wrap_memcpy.c +53 -0
- data/src/core/surface/alarm.c +83 -0
- data/src/core/surface/byte_buffer_reader.c +1 -1
- data/src/core/surface/call.c +78 -69
- data/src/core/surface/call.h +2 -2
- data/src/core/surface/call_test_only.h +2 -2
- data/src/core/surface/channel.c +9 -9
- data/src/core/surface/channel.h +1 -1
- data/src/core/surface/channel_connectivity.c +3 -3
- data/src/core/surface/channel_create.c +3 -3
- data/src/core/surface/channel_ping.c +2 -2
- data/src/core/surface/completion_queue.c +11 -12
- data/src/core/surface/completion_queue.h +1 -1
- data/src/core/surface/init.c +7 -5
- data/src/core/surface/lame_client.c +3 -3
- data/src/core/surface/secure_channel_create.c +3 -3
- data/src/core/surface/server.c +28 -28
- data/src/core/surface/server_chttp2.c +8 -8
- data/src/core/surface/server_create.c +1 -4
- data/src/core/surface/validate_metadata.c +3 -3
- data/src/core/surface/version.c +2 -2
- data/src/core/transport/byte_stream.c +8 -6
- data/src/core/transport/byte_stream.h +6 -5
- data/src/core/transport/chttp2/bin_encoder.c +29 -29
- data/src/core/transport/chttp2/frame_data.c +29 -26
- data/src/core/transport/chttp2/frame_data.h +6 -6
- data/src/core/transport/chttp2/frame_goaway.c +30 -30
- data/src/core/transport/chttp2/frame_goaway.h +6 -6
- data/src/core/transport/chttp2/frame_ping.c +6 -6
- data/src/core/transport/chttp2/frame_ping.h +5 -5
- data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
- data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
- data/src/core/transport/chttp2/frame_settings.c +30 -30
- data/src/core/transport/chttp2/frame_settings.h +13 -13
- data/src/core/transport/chttp2/frame_window_update.c +17 -18
- data/src/core/transport/chttp2/frame_window_update.h +5 -7
- data/src/core/transport/chttp2/hpack_encoder.c +69 -73
- data/src/core/transport/chttp2/hpack_encoder.h +16 -16
- data/src/core/transport/chttp2/hpack_parser.c +167 -167
- data/src/core/transport/chttp2/hpack_parser.h +16 -16
- data/src/core/transport/chttp2/hpack_table.c +13 -13
- data/src/core/transport/chttp2/hpack_table.h +11 -11
- data/src/core/transport/chttp2/internal.h +97 -86
- data/src/core/transport/chttp2/parsing.c +25 -25
- data/src/core/transport/chttp2/stream_lists.c +26 -3
- data/src/core/transport/chttp2/stream_map.c +13 -14
- data/src/core/transport/chttp2/stream_map.h +6 -7
- data/src/core/transport/chttp2/timeout_encoding.c +19 -16
- data/src/core/transport/chttp2/varint.c +8 -9
- data/src/core/transport/chttp2/varint.h +7 -8
- data/src/core/transport/chttp2/writing.c +26 -23
- data/src/core/transport/chttp2_transport.c +133 -92
- data/src/core/transport/connectivity_state.c +6 -6
- data/src/core/transport/metadata.c +18 -18
- data/src/core/transport/metadata.h +5 -5
- data/src/core/transport/static_metadata.c +15 -16
- data/src/core/transport/static_metadata.h +5 -5
- data/src/core/transport/transport.c +5 -5
- data/src/core/transport/transport.h +14 -1
- data/src/core/tsi/fake_transport_security.c +7 -7
- data/src/core/tsi/ssl_transport_security.c +6 -4
- data/src/core/tsi/ssl_types.h +55 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -14
- data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
- data/src/ruby/ext/grpc/rb_call.c +6 -3
- data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
- data/src/ruby/ext/grpc/rb_channel.c +4 -2
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
- data/src/ruby/ext/grpc/rb_grpc.c +11 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
- data/src/ruby/ext/grpc/rb_loader.c +72 -0
- data/src/ruby/ext/grpc/rb_loader.h +40 -0
- data/src/ruby/ext/grpc/rb_server.c +3 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/grpc.rb +34 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/aes/aes.c +1142 -0
- data/third_party/boringssl/crypto/aes/internal.h +87 -0
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
- data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
- data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
- data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
- data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
- data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
- data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
- data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
- data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
- data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
- data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
- data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
- data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
- data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
- data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
- data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
- data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
- data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
- data/third_party/boringssl/crypto/base64/base64.c +478 -0
- data/third_party/boringssl/crypto/bio/bio.c +608 -0
- data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
- data/third_party/boringssl/crypto/bio/buffer.c +496 -0
- data/third_party/boringssl/crypto/bio/connect.c +544 -0
- data/third_party/boringssl/crypto/bio/fd.c +270 -0
- data/third_party/boringssl/crypto/bio/file.c +349 -0
- data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
- data/third_party/boringssl/crypto/bio/internal.h +108 -0
- data/third_party/boringssl/crypto/bio/pair.c +803 -0
- data/third_party/boringssl/crypto/bio/printf.c +119 -0
- data/third_party/boringssl/crypto/bio/socket.c +195 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
- data/third_party/boringssl/crypto/bn/add.c +377 -0
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
- data/third_party/boringssl/crypto/bn/bn.c +341 -0
- data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
- data/third_party/boringssl/crypto/bn/cmp.c +200 -0
- data/third_party/boringssl/crypto/bn/convert.c +597 -0
- data/third_party/boringssl/crypto/bn/ctx.c +311 -0
- data/third_party/boringssl/crypto/bn/div.c +625 -0
- data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
- data/third_party/boringssl/crypto/bn/gcd.c +711 -0
- data/third_party/boringssl/crypto/bn/generic.c +1019 -0
- data/third_party/boringssl/crypto/bn/internal.h +294 -0
- data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
- data/third_party/boringssl/crypto/bn/mul.c +888 -0
- data/third_party/boringssl/crypto/bn/prime.c +845 -0
- data/third_party/boringssl/crypto/bn/random.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
- data/third_party/boringssl/crypto/bn/shift.c +299 -0
- data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
- data/third_party/boringssl/crypto/buf/buf.c +235 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
- data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
- data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
- data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
- data/third_party/boringssl/crypto/cipher/aead.c +167 -0
- data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
- data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
- data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
- data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
- data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
- data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
- data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
- data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
- data/third_party/boringssl/crypto/cipher/internal.h +164 -0
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
- data/third_party/boringssl/crypto/conf/conf.c +778 -0
- data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
- data/third_party/boringssl/crypto/conf/internal.h +31 -0
- data/third_party/boringssl/crypto/cpu-arm.c +199 -0
- data/third_party/boringssl/crypto/cpu-intel.c +261 -0
- data/third_party/boringssl/crypto/crypto.c +140 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
- data/third_party/boringssl/crypto/des/des.c +771 -0
- data/third_party/boringssl/crypto/des/internal.h +212 -0
- data/third_party/boringssl/crypto/dh/check.c +180 -0
- data/third_party/boringssl/crypto/dh/dh.c +463 -0
- data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
- data/third_party/boringssl/crypto/dh/internal.h +80 -0
- data/third_party/boringssl/crypto/dh/params.c +301 -0
- data/third_party/boringssl/crypto/digest/digest.c +248 -0
- data/third_party/boringssl/crypto/digest/digests.c +321 -0
- data/third_party/boringssl/crypto/digest/internal.h +112 -0
- data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
- data/third_party/boringssl/crypto/directory.h +66 -0
- data/third_party/boringssl/crypto/directory_posix.c +108 -0
- data/third_party/boringssl/crypto/directory_win.c +144 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
- data/third_party/boringssl/crypto/dsa/internal.h +78 -0
- data/third_party/boringssl/crypto/ec/ec.c +889 -0
- data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
- data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
- data/third_party/boringssl/crypto/ec/internal.h +318 -0
- data/third_party/boringssl/crypto/ec/oct.c +416 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
- data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
- data/third_party/boringssl/crypto/ec/simple.c +1313 -0
- data/third_party/boringssl/crypto/ec/util-64.c +183 -0
- data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
- data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
- data/third_party/boringssl/crypto/engine/engine.c +96 -0
- data/third_party/boringssl/crypto/err/err.c +756 -0
- data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
- data/third_party/boringssl/crypto/evp/evp.c +411 -0
- data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
- data/third_party/boringssl/crypto/evp/internal.h +278 -0
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
- data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
- data/third_party/boringssl/crypto/evp/sign.c +151 -0
- data/third_party/boringssl/crypto/ex_data.c +294 -0
- data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
- data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
- data/third_party/boringssl/crypto/internal.h +532 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
- data/third_party/boringssl/crypto/md4/md4.c +225 -0
- data/third_party/boringssl/crypto/md5/md5.c +275 -0
- data/third_party/boringssl/crypto/mem.c +200 -0
- data/third_party/boringssl/crypto/modes/cbc.c +216 -0
- data/third_party/boringssl/crypto/modes/cfb.c +231 -0
- data/third_party/boringssl/crypto/modes/ctr.c +226 -0
- data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
- data/third_party/boringssl/crypto/modes/internal.h +370 -0
- data/third_party/boringssl/crypto/modes/ofb.c +108 -0
- data/third_party/boringssl/crypto/obj/obj.c +664 -0
- data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
- data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
- data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
- data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
- data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
- data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
- data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
- data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
- data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
- data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
- data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
- data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
- data/third_party/boringssl/crypto/rand/internal.h +32 -0
- data/third_party/boringssl/crypto/rand/rand.c +239 -0
- data/third_party/boringssl/crypto/rand/urandom.c +223 -0
- data/third_party/boringssl/crypto/rand/windows.c +56 -0
- data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
- data/third_party/boringssl/crypto/refcount_c11.c +67 -0
- data/third_party/boringssl/crypto/refcount_lock.c +53 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
- data/third_party/boringssl/crypto/rsa/internal.h +164 -0
- data/third_party/boringssl/crypto/rsa/padding.c +711 -0
- data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
- data/third_party/boringssl/crypto/sha/sha1.c +337 -0
- data/third_party/boringssl/crypto/sha/sha256.c +327 -0
- data/third_party/boringssl/crypto/sha/sha512.c +607 -0
- data/third_party/boringssl/crypto/stack/stack.c +386 -0
- data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
- data/third_party/boringssl/crypto/test/test_util.h +35 -0
- data/third_party/boringssl/crypto/thread.c +101 -0
- data/third_party/boringssl/crypto/thread_none.c +55 -0
- data/third_party/boringssl/crypto/thread_pthread.c +167 -0
- data/third_party/boringssl/crypto/thread_win.c +282 -0
- data/third_party/boringssl/crypto/time_support.c +212 -0
- data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
- data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
- data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
- data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
- data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
- data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
- data/third_party/boringssl/crypto/x509/by_file.c +295 -0
- data/third_party/boringssl/crypto/x509/charmap.h +15 -0
- data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
- data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
- data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
- data/third_party/boringssl/crypto/x509/t_req.c +246 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
- data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
- data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
- data/third_party/boringssl/crypto/x509/x509.c +152 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
- data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
- data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
- data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
- data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
- data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
- data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
- data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
- data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
- data/third_party/boringssl/crypto/x509/x509name.c +381 -0
- data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
- data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
- data/third_party/boringssl/crypto/x509/x509type.c +128 -0
- data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
- data/third_party/boringssl/crypto/x509/x_all.c +547 -0
- data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
- data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
- data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
- data/third_party/boringssl/crypto/x509/x_info.c +95 -0
- data/third_party/boringssl/crypto/x509/x_name.c +538 -0
- data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
- data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
- data/third_party/boringssl/crypto/x509/x_req.c +112 -0
- data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
- data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
- data/third_party/boringssl/crypto/x509/x_val.c +69 -0
- data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
- data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
- data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
- data/third_party/boringssl/include/openssl/aead.h +346 -0
- data/third_party/boringssl/include/openssl/aes.h +158 -0
- data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
- data/third_party/boringssl/include/openssl/asn1.h +1168 -0
- data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
- data/third_party/boringssl/include/openssl/asn1t.h +906 -0
- data/third_party/boringssl/include/openssl/base.h +261 -0
- data/third_party/boringssl/include/openssl/base64.h +184 -0
- data/third_party/boringssl/include/openssl/bio.h +902 -0
- data/third_party/boringssl/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl/include/openssl/bn.h +885 -0
- data/third_party/boringssl/include/openssl/buf.h +118 -0
- data/third_party/boringssl/include/openssl/buffer.h +18 -0
- data/third_party/boringssl/include/openssl/bytestring.h +360 -0
- data/third_party/boringssl/include/openssl/cast.h +96 -0
- data/third_party/boringssl/include/openssl/chacha.h +37 -0
- data/third_party/boringssl/include/openssl/cipher.h +571 -0
- data/third_party/boringssl/include/openssl/cmac.h +76 -0
- data/third_party/boringssl/include/openssl/conf.h +145 -0
- data/third_party/boringssl/include/openssl/cpu.h +184 -0
- data/third_party/boringssl/include/openssl/crypto.h +68 -0
- data/third_party/boringssl/include/openssl/curve25519.h +88 -0
- data/third_party/boringssl/include/openssl/des.h +177 -0
- data/third_party/boringssl/include/openssl/dh.h +238 -0
- data/third_party/boringssl/include/openssl/digest.h +258 -0
- data/third_party/boringssl/include/openssl/dsa.h +343 -0
- data/third_party/boringssl/include/openssl/dtls1.h +16 -0
- data/third_party/boringssl/include/openssl/ec.h +355 -0
- data/third_party/boringssl/include/openssl/ec_key.h +280 -0
- data/third_party/boringssl/include/openssl/ecdh.h +102 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
- data/third_party/boringssl/include/openssl/engine.h +98 -0
- data/third_party/boringssl/include/openssl/err.h +487 -0
- data/third_party/boringssl/include/openssl/evp.h +750 -0
- data/third_party/boringssl/include/openssl/ex_data.h +213 -0
- data/third_party/boringssl/include/openssl/hkdf.h +44 -0
- data/third_party/boringssl/include/openssl/hmac.h +160 -0
- data/third_party/boringssl/include/openssl/lhash.h +192 -0
- data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
- data/third_party/boringssl/include/openssl/md4.h +102 -0
- data/third_party/boringssl/include/openssl/md5.h +107 -0
- data/third_party/boringssl/include/openssl/mem.h +140 -0
- data/third_party/boringssl/include/openssl/obj.h +198 -0
- data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
- data/third_party/boringssl/include/openssl/objects.h +18 -0
- data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
- data/third_party/boringssl/include/openssl/opensslv.h +18 -0
- data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
- data/third_party/boringssl/include/openssl/pem.h +521 -0
- data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
- data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
- data/third_party/boringssl/include/openssl/poly1305.h +51 -0
- data/third_party/boringssl/include/openssl/pqueue.h +146 -0
- data/third_party/boringssl/include/openssl/rand.h +113 -0
- data/third_party/boringssl/include/openssl/rc4.h +90 -0
- data/third_party/boringssl/include/openssl/rsa.h +637 -0
- data/third_party/boringssl/include/openssl/safestack.h +16 -0
- data/third_party/boringssl/include/openssl/sha.h +256 -0
- data/third_party/boringssl/include/openssl/srtp.h +18 -0
- data/third_party/boringssl/include/openssl/ssl.h +4466 -0
- data/third_party/boringssl/include/openssl/ssl3.h +441 -0
- data/third_party/boringssl/include/openssl/stack.h +298 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
- data/third_party/boringssl/include/openssl/thread.h +173 -0
- data/third_party/boringssl/include/openssl/time_support.h +90 -0
- data/third_party/boringssl/include/openssl/tls1.h +653 -0
- data/third_party/boringssl/include/openssl/type_check.h +91 -0
- data/third_party/boringssl/include/openssl/x509.h +1258 -0
- data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
- data/third_party/boringssl/include/openssl/x509v3.h +798 -0
- data/third_party/boringssl/ssl/custom_extensions.c +257 -0
- data/third_party/boringssl/ssl/d1_both.c +880 -0
- data/third_party/boringssl/ssl/d1_clnt.c +566 -0
- data/third_party/boringssl/ssl/d1_lib.c +340 -0
- data/third_party/boringssl/ssl/d1_meth.c +130 -0
- data/third_party/boringssl/ssl/d1_pkt.c +578 -0
- data/third_party/boringssl/ssl/d1_srtp.c +234 -0
- data/third_party/boringssl/ssl/d1_srvr.c +485 -0
- data/third_party/boringssl/ssl/dtls_record.c +308 -0
- data/third_party/boringssl/ssl/internal.h +1276 -0
- data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
- data/third_party/boringssl/ssl/s3_both.c +571 -0
- data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
- data/third_party/boringssl/ssl/s3_enc.c +494 -0
- data/third_party/boringssl/ssl/s3_lib.c +587 -0
- data/third_party/boringssl/ssl/s3_meth.c +166 -0
- data/third_party/boringssl/ssl/s3_pkt.c +732 -0
- data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
- data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
- data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
- data/third_party/boringssl/ssl/ssl_cert.c +539 -0
- data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
- data/third_party/boringssl/ssl/ssl_file.c +633 -0
- data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
- data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
- data/third_party/boringssl/ssl/ssl_session.c +764 -0
- data/third_party/boringssl/ssl/ssl_stat.c +591 -0
- data/third_party/boringssl/ssl/t1_enc.c +708 -0
- data/third_party/boringssl/ssl/t1_lib.c +2905 -0
- data/third_party/boringssl/ssl/test/async_bio.h +45 -0
- data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
- data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
- data/third_party/boringssl/ssl/test/test_config.h +108 -0
- data/third_party/boringssl/ssl/tls_record.c +342 -0
- data/third_party/zlib/adler32.c +179 -0
- data/third_party/zlib/compress.c +80 -0
- data/third_party/zlib/crc32.c +425 -0
- data/third_party/zlib/crc32.h +441 -0
- data/third_party/zlib/deflate.c +1967 -0
- data/third_party/zlib/deflate.h +346 -0
- data/third_party/zlib/gzclose.c +25 -0
- data/third_party/zlib/gzguts.h +209 -0
- data/third_party/zlib/gzlib.c +634 -0
- data/third_party/zlib/gzread.c +594 -0
- data/third_party/zlib/gzwrite.c +577 -0
- data/third_party/zlib/infback.c +640 -0
- data/third_party/zlib/inffast.c +340 -0
- data/third_party/zlib/inffast.h +11 -0
- data/third_party/zlib/inffixed.h +94 -0
- data/third_party/zlib/inflate.c +1512 -0
- data/third_party/zlib/inflate.h +122 -0
- data/third_party/zlib/inftrees.c +306 -0
- data/third_party/zlib/inftrees.h +62 -0
- data/third_party/zlib/trees.c +1226 -0
- data/third_party/zlib/trees.h +128 -0
- data/third_party/zlib/uncompr.c +59 -0
- data/third_party/zlib/zconf.h +511 -0
- data/third_party/zlib/zlib.h +1768 -0
- data/third_party/zlib/zutil.c +324 -0
- data/third_party/zlib/zutil.h +253 -0
- metadata +492 -25
- data/Rakefile +0 -63
- 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
|
-
|
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(
|
51
|
-
|
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] = (
|
54
|
+
target[4] = (uint8_t)((tail_value >> 28) | 0x80);
|
56
55
|
case 4:
|
57
|
-
target[3] = (
|
56
|
+
target[3] = (uint8_t)((tail_value >> 21) | 0x80);
|
58
57
|
case 3:
|
59
|
-
target[2] = (
|
58
|
+
target[2] = (uint8_t)((tail_value >> 14) | 0x80);
|
60
59
|
case 2:
|
61
|
-
target[1] = (
|
60
|
+
target[1] = (uint8_t)((tail_value >> 7) | 0x80);
|
62
61
|
case 1:
|
63
|
-
target[0] = (
|
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
|
-
|
44
|
+
uint32_t grpc_chttp2_hpack_varint_length(uint32_t tail_value);
|
45
45
|
|
46
|
-
void grpc_chttp2_hpack_write_varint_tail(
|
47
|
-
|
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
|
-
((
|
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
|
-
|
64
|
+
uint8_t* tgt = target; \
|
66
65
|
if ((length) == 1u) { \
|
67
|
-
(tgt)[0] = (
|
66
|
+
(tgt)[0] = (uint8_t)((prefix_or) | (n)); \
|
68
67
|
} else { \
|
69
68
|
(tgt)[0] = \
|
70
|
-
(prefix_or) | (
|
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
|
-
|
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
|
-
|
107
|
-
|
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] = (
|
112
|
-
p[2] = (
|
113
|
-
p[3] = (
|
114
|
-
p[4] = (
|
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
|
-
|
134
|
-
|
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
|
-
|
164
|
-
transport_global->announce_incoming_window,
|
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,
|
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
|
-
|
204
|
-
(
|
205
|
-
|
206
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
277
|
-
|
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
|
-
|
316
|
-
|
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
|
-
|
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
|
-
|
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,
|
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
|
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,
|
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,
|
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
|
-
(
|
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
|
-
(
|
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
|
-
(
|
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(
|
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
|
-
(
|
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(
|
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
|
-
(
|
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 = (
|
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,
|
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
|
-
|
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 *)(
|
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,
|
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
|
-
|
619
|
+
uint32_t value) {
|
614
620
|
const grpc_chttp2_setting_parameters *sp =
|
615
621
|
&grpc_chttp2_settings_parameters[id];
|
616
|
-
|
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,
|
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,
|
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
|
-
|
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
|
-
|
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
|
-
|
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,
|
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] = (
|
902
|
-
p->id[1] = (
|
903
|
-
p->id[2] = (
|
904
|
-
p->id[3] = (
|
905
|
-
p->id[4] = (
|
906
|
-
p->id[5] = (
|
907
|
-
p->id[6] = (
|
908
|
-
p->id[7] = (
|
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
|
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,
|
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,
|
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
|
-
(
|
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,
|
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,
|
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
|
-
|
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 <=
|
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 = (
|
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
|
-
(
|
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
|
-
|
1177
|
-
|
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++ = (
|
1228
|
+
*p++ = (uint8_t)('0' + status);
|
1207
1229
|
} else {
|
1208
1230
|
*p++ = 2;
|
1209
|
-
*p++ = (
|
1210
|
-
*p++ = (
|
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 += (
|
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++ = (
|
1255
|
+
*p++ = (uint8_t)GPR_SLICE_LENGTH(*optional_message);
|
1234
1256
|
GPR_ASSERT(p == GPR_SLICE_END_PTR(message_pfx));
|
1235
|
-
len += (
|
1236
|
-
len += (
|
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++ = (
|
1242
|
-
*p++ = (
|
1243
|
-
*p++ = (
|
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++ = (
|
1247
|
-
*p++ = (
|
1248
|
-
*p++ = (
|
1249
|
-
*p++ = (
|
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,
|
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
|
-
|
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,
|
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
|
-
(
|
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
|
-
|
1473
|
+
uint32_t max_recv_bytes;
|
1452
1474
|
|
1453
1475
|
/* clamp max recv hint to an allowable size */
|
1454
|
-
if (max_size_hint >=
|
1455
|
-
max_recv_bytes =
|
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 = (
|
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 -= (
|
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
|
-
|
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(
|
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,
|
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,
|
1547
|
-
|
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
|
-
|
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
|
-
|
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 =
|