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
@@ -45,13 +45,13 @@
|
|
45
45
|
typedef struct grpc_chttp2_hpack_parser grpc_chttp2_hpack_parser;
|
46
46
|
|
47
47
|
typedef int (*grpc_chttp2_hpack_parser_state)(grpc_chttp2_hpack_parser *p,
|
48
|
-
const
|
49
|
-
const
|
48
|
+
const uint8_t *beg,
|
49
|
+
const uint8_t *end);
|
50
50
|
|
51
51
|
typedef struct {
|
52
52
|
char *str;
|
53
|
-
|
54
|
-
|
53
|
+
uint32_t length;
|
54
|
+
uint32_t capacity;
|
55
55
|
} grpc_chttp2_hpack_parser_string;
|
56
56
|
|
57
57
|
struct grpc_chttp2_hpack_parser {
|
@@ -67,31 +67,31 @@ struct grpc_chttp2_hpack_parser {
|
|
67
67
|
grpc_chttp2_hpack_parser_state after_prioritization;
|
68
68
|
/* the value we're currently parsing */
|
69
69
|
union {
|
70
|
-
|
70
|
+
uint32_t *value;
|
71
71
|
grpc_chttp2_hpack_parser_string *str;
|
72
72
|
} parsing;
|
73
73
|
/* string parameters for each chunk */
|
74
74
|
grpc_chttp2_hpack_parser_string key;
|
75
75
|
grpc_chttp2_hpack_parser_string value;
|
76
76
|
/* parsed index */
|
77
|
-
|
77
|
+
uint32_t index;
|
78
78
|
/* length of source bytes for the currently parsing string */
|
79
|
-
|
79
|
+
uint32_t strlen;
|
80
80
|
/* number of source bytes read for the currently parsing string */
|
81
|
-
|
81
|
+
uint32_t strgot;
|
82
82
|
/* huffman decoding state */
|
83
|
-
|
83
|
+
int16_t huff_state;
|
84
84
|
/* is the string being decoded binary? */
|
85
|
-
|
85
|
+
uint8_t binary;
|
86
86
|
/* is the current string huffman encoded? */
|
87
|
-
|
87
|
+
uint8_t huff;
|
88
88
|
/* is a dynamic table update allowed? */
|
89
|
-
|
89
|
+
uint8_t dynamic_table_update_allowed;
|
90
90
|
/* set by higher layers, used by grpc_chttp2_header_parser_parse to signal
|
91
91
|
it should append a metadata boundary at the end of frame */
|
92
|
-
|
93
|
-
|
94
|
-
|
92
|
+
uint8_t is_boundary;
|
93
|
+
uint8_t is_eof;
|
94
|
+
uint32_t base64_buffer;
|
95
95
|
|
96
96
|
/* hpack table */
|
97
97
|
grpc_chttp2_hptbl table;
|
@@ -104,7 +104,7 @@ void grpc_chttp2_hpack_parser_set_has_priority(grpc_chttp2_hpack_parser *p);
|
|
104
104
|
|
105
105
|
/* returns 1 on success, 0 on error */
|
106
106
|
int grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser *p,
|
107
|
-
const
|
107
|
+
const uint8_t *beg, const uint8_t *end);
|
108
108
|
|
109
109
|
/* wraps grpc_chttp2_hpack_parser_parse to provide a frame level parser for
|
110
110
|
the transport */
|
@@ -171,7 +171,7 @@ static struct {
|
|
171
171
|
{"www-authenticate", ""},
|
172
172
|
};
|
173
173
|
|
174
|
-
static
|
174
|
+
static uint32_t entries_for_bytes(uint32_t bytes) {
|
175
175
|
return (bytes + GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD - 1) /
|
176
176
|
GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD;
|
177
177
|
}
|
@@ -204,7 +204,7 @@ void grpc_chttp2_hptbl_destroy(grpc_chttp2_hptbl *tbl) {
|
|
204
204
|
}
|
205
205
|
|
206
206
|
grpc_mdelem *grpc_chttp2_hptbl_lookup(const grpc_chttp2_hptbl *tbl,
|
207
|
-
|
207
|
+
uint32_t tbl_index) {
|
208
208
|
/* Static table comes first, just return an entry from it */
|
209
209
|
if (tbl_index <= GRPC_CHTTP2_LAST_STATIC_ENTRY) {
|
210
210
|
return tbl->static_ents[tbl_index - 1];
|
@@ -212,7 +212,7 @@ grpc_mdelem *grpc_chttp2_hptbl_lookup(const grpc_chttp2_hptbl *tbl,
|
|
212
212
|
/* Otherwise, find the value in the list of valid entries */
|
213
213
|
tbl_index -= (GRPC_CHTTP2_LAST_STATIC_ENTRY + 1);
|
214
214
|
if (tbl_index < tbl->num_ents) {
|
215
|
-
|
215
|
+
uint32_t offset =
|
216
216
|
(tbl->num_ents - 1u - tbl_index + tbl->first_ent) % tbl->cap_entries;
|
217
217
|
return tbl->ents[offset];
|
218
218
|
}
|
@@ -227,15 +227,15 @@ static void evict1(grpc_chttp2_hptbl *tbl) {
|
|
227
227
|
GPR_SLICE_LENGTH(first_ent->value->slice) +
|
228
228
|
GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD;
|
229
229
|
GPR_ASSERT(elem_bytes <= tbl->mem_used);
|
230
|
-
tbl->mem_used -= (
|
230
|
+
tbl->mem_used -= (uint32_t)elem_bytes;
|
231
231
|
tbl->first_ent = ((tbl->first_ent + 1) % tbl->cap_entries);
|
232
232
|
tbl->num_ents--;
|
233
233
|
GRPC_MDELEM_UNREF(first_ent);
|
234
234
|
}
|
235
235
|
|
236
|
-
static void rebuild_ents(grpc_chttp2_hptbl *tbl,
|
236
|
+
static void rebuild_ents(grpc_chttp2_hptbl *tbl, uint32_t new_cap) {
|
237
237
|
grpc_mdelem **ents = gpr_malloc(sizeof(*ents) * new_cap);
|
238
|
-
|
238
|
+
uint32_t i;
|
239
239
|
|
240
240
|
for (i = 0; i < tbl->num_ents; i++) {
|
241
241
|
ents[i] = tbl->ents[(tbl->first_ent + i) % tbl->cap_entries];
|
@@ -247,7 +247,7 @@ static void rebuild_ents(grpc_chttp2_hptbl *tbl, gpr_uint32 new_cap) {
|
|
247
247
|
}
|
248
248
|
|
249
249
|
void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl,
|
250
|
-
|
250
|
+
uint32_t max_bytes) {
|
251
251
|
if (tbl->max_bytes == max_bytes) {
|
252
252
|
return;
|
253
253
|
}
|
@@ -259,7 +259,7 @@ void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl,
|
|
259
259
|
}
|
260
260
|
|
261
261
|
int grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl *tbl,
|
262
|
-
|
262
|
+
uint32_t bytes) {
|
263
263
|
if (tbl->current_table_bytes == bytes) {
|
264
264
|
return 1;
|
265
265
|
}
|
@@ -278,7 +278,7 @@ int grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl *tbl,
|
|
278
278
|
if (tbl->max_entries > tbl->cap_entries) {
|
279
279
|
rebuild_ents(tbl, GPR_MAX(tbl->max_entries, 2 * tbl->cap_entries));
|
280
280
|
} else if (tbl->max_entries < tbl->cap_entries / 3) {
|
281
|
-
|
281
|
+
uint32_t new_cap = GPR_MAX(tbl->max_entries, 16u);
|
282
282
|
if (new_cap != tbl->cap_entries) {
|
283
283
|
rebuild_ents(tbl, new_cap);
|
284
284
|
}
|
@@ -328,14 +328,14 @@ int grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl, grpc_mdelem *md) {
|
|
328
328
|
|
329
329
|
/* update accounting values */
|
330
330
|
tbl->num_ents++;
|
331
|
-
tbl->mem_used += (
|
331
|
+
tbl->mem_used += (uint32_t)elem_bytes;
|
332
332
|
return 1;
|
333
333
|
}
|
334
334
|
|
335
335
|
grpc_chttp2_hptbl_find_result grpc_chttp2_hptbl_find(
|
336
336
|
const grpc_chttp2_hptbl *tbl, grpc_mdelem *md) {
|
337
337
|
grpc_chttp2_hptbl_find_result r = {0, 0};
|
338
|
-
|
338
|
+
uint32_t i;
|
339
339
|
|
340
340
|
/* See if the string is in the static table */
|
341
341
|
for (i = 0; i < GRPC_CHTTP2_LAST_STATIC_ENTRY; i++) {
|
@@ -348,8 +348,8 @@ grpc_chttp2_hptbl_find_result grpc_chttp2_hptbl_find(
|
|
348
348
|
|
349
349
|
/* Scan the dynamic table */
|
350
350
|
for (i = 0; i < tbl->num_ents; i++) {
|
351
|
-
|
352
|
-
(
|
351
|
+
uint32_t idx =
|
352
|
+
(uint32_t)(tbl->num_ents - i + GRPC_CHTTP2_LAST_STATIC_ENTRY);
|
353
353
|
grpc_mdelem *ent = tbl->ents[(tbl->first_ent + i) % tbl->cap_entries];
|
354
354
|
if (md->key != ent->key) continue;
|
355
355
|
r.index = idx;
|
@@ -60,21 +60,21 @@
|
|
60
60
|
/* hpack decoder table */
|
61
61
|
typedef struct {
|
62
62
|
/* the first used entry in ents */
|
63
|
-
|
63
|
+
uint32_t first_ent;
|
64
64
|
/* how many entries are in the table */
|
65
|
-
|
65
|
+
uint32_t num_ents;
|
66
66
|
/* the amount of memory used by the table, according to the hpack algorithm */
|
67
|
-
|
67
|
+
uint32_t mem_used;
|
68
68
|
/* the max memory allowed to be used by the table, according to the hpack
|
69
69
|
algorithm */
|
70
|
-
|
70
|
+
uint32_t max_bytes;
|
71
71
|
/* the currently agreed size of the table, according to the hpack algorithm */
|
72
|
-
|
72
|
+
uint32_t current_table_bytes;
|
73
73
|
/* Maximum number of entries we could possibly fit in the table, given defined
|
74
74
|
overheads */
|
75
|
-
|
75
|
+
uint32_t max_entries;
|
76
76
|
/* Number of entries allocated in ents */
|
77
|
-
|
77
|
+
uint32_t cap_entries;
|
78
78
|
/* a circular buffer of headers - this is stored in the opposite order to
|
79
79
|
what hpack specifies, in order to simplify table management a little...
|
80
80
|
meaning lookups need to SUBTRACT from the end position */
|
@@ -86,20 +86,20 @@ typedef struct {
|
|
86
86
|
void grpc_chttp2_hptbl_init(grpc_chttp2_hptbl *tbl);
|
87
87
|
void grpc_chttp2_hptbl_destroy(grpc_chttp2_hptbl *tbl);
|
88
88
|
void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl,
|
89
|
-
|
89
|
+
uint32_t max_bytes);
|
90
90
|
int grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl *tbl,
|
91
|
-
|
91
|
+
uint32_t bytes);
|
92
92
|
|
93
93
|
/* lookup a table entry based on its hpack index */
|
94
94
|
grpc_mdelem *grpc_chttp2_hptbl_lookup(const grpc_chttp2_hptbl *tbl,
|
95
|
-
|
95
|
+
uint32_t index);
|
96
96
|
/* add a table entry to the index */
|
97
97
|
int grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl,
|
98
98
|
grpc_mdelem *md) GRPC_MUST_USE_RESULT;
|
99
99
|
/* Find a key/value pair in the table... returns the index in the table of the
|
100
100
|
most similar entry, or 0 if the value was not found */
|
101
101
|
typedef struct {
|
102
|
-
|
102
|
+
uint32_t index;
|
103
103
|
int has_value;
|
104
104
|
} grpc_chttp2_hptbl_find_result;
|
105
105
|
grpc_chttp2_hptbl_find_result grpc_chttp2_hptbl_find(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -35,6 +35,7 @@
|
|
35
35
|
#define GRPC_INTERNAL_CORE_CHTTP2_INTERNAL_H
|
36
36
|
|
37
37
|
#include <assert.h>
|
38
|
+
#include <stdbool.h>
|
38
39
|
|
39
40
|
#include "src/core/iomgr/endpoint.h"
|
40
41
|
#include "src/core/transport/chttp2/frame.h"
|
@@ -67,6 +68,9 @@ typedef enum {
|
|
67
68
|
GRPC_CHTTP2_LIST_CLOSED_WAITING_FOR_PARSING,
|
68
69
|
GRPC_CHTTP2_LIST_CLOSED_WAITING_FOR_WRITING,
|
69
70
|
GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT,
|
71
|
+
/* streams waiting for the outgoing window in the writing path, they will be
|
72
|
+
* merged to the stalled list or writable list under transport lock. */
|
73
|
+
GRPC_CHTTP2_LIST_WRITING_STALLED_BY_TRANSPORT,
|
70
74
|
/** streams that are waiting to start because there are too many concurrent
|
71
75
|
streams on the connection */
|
72
76
|
GRPC_CHTTP2_LIST_WAITING_FOR_CONCURRENCY,
|
@@ -141,7 +145,7 @@ typedef enum {
|
|
141
145
|
|
142
146
|
/* Outstanding ping request data */
|
143
147
|
typedef struct grpc_chttp2_outstanding_ping {
|
144
|
-
|
148
|
+
uint8_t id[8];
|
145
149
|
grpc_closure *on_recv;
|
146
150
|
struct grpc_chttp2_outstanding_ping *next;
|
147
151
|
struct grpc_chttp2_outstanding_ping *prev;
|
@@ -152,6 +156,7 @@ struct grpc_chttp2_incoming_byte_stream {
|
|
152
156
|
grpc_byte_stream base;
|
153
157
|
gpr_refcount refs;
|
154
158
|
struct grpc_chttp2_incoming_byte_stream *next_message;
|
159
|
+
int failed;
|
155
160
|
|
156
161
|
grpc_chttp2_transport *transport;
|
157
162
|
grpc_chttp2_stream *stream;
|
@@ -166,46 +171,46 @@ typedef struct {
|
|
166
171
|
gpr_slice_buffer qbuf;
|
167
172
|
|
168
173
|
/** window available for us to send to peer */
|
169
|
-
|
174
|
+
int64_t outgoing_window;
|
170
175
|
/** window available to announce to peer */
|
171
|
-
|
176
|
+
int64_t announce_incoming_window;
|
172
177
|
/** how much window would we like to have for incoming_window */
|
173
|
-
|
178
|
+
uint32_t connection_window_target;
|
174
179
|
|
175
180
|
/** have we seen a goaway */
|
176
|
-
|
181
|
+
uint8_t seen_goaway;
|
177
182
|
/** have we sent a goaway */
|
178
|
-
|
183
|
+
uint8_t sent_goaway;
|
179
184
|
|
180
185
|
/** is this transport a client? */
|
181
|
-
|
186
|
+
uint8_t is_client;
|
182
187
|
/** are the local settings dirty and need to be sent? */
|
183
|
-
|
188
|
+
uint8_t dirtied_local_settings;
|
184
189
|
/** have local settings been sent? */
|
185
|
-
|
190
|
+
uint8_t sent_local_settings;
|
186
191
|
/** bitmask of setting indexes to send out */
|
187
|
-
|
192
|
+
uint32_t force_send_settings;
|
188
193
|
/** settings values */
|
189
|
-
|
194
|
+
uint32_t settings[GRPC_NUM_SETTING_SETS][GRPC_CHTTP2_NUM_SETTINGS];
|
190
195
|
|
191
196
|
/** what is the next stream id to be allocated by this peer?
|
192
197
|
copied to next_stream_id in parsing when parsing commences */
|
193
|
-
|
198
|
+
uint32_t next_stream_id;
|
194
199
|
|
195
200
|
/** how far to lookahead in a stream? */
|
196
|
-
|
201
|
+
uint32_t stream_lookahead;
|
197
202
|
|
198
203
|
/** last received stream id */
|
199
|
-
|
204
|
+
uint32_t last_incoming_stream_id;
|
200
205
|
|
201
206
|
/** pings awaiting responses */
|
202
207
|
grpc_chttp2_outstanding_ping pings;
|
203
208
|
/** next payload for an outgoing ping */
|
204
|
-
|
209
|
+
uint64_t ping_counter;
|
205
210
|
|
206
211
|
/** concurrent stream count: updated when not parsing,
|
207
212
|
so this is a strict over-estimation on the client */
|
208
|
-
|
213
|
+
uint32_t concurrent_stream_count;
|
209
214
|
} grpc_chttp2_transport_global;
|
210
215
|
|
211
216
|
typedef struct {
|
@@ -213,29 +218,29 @@ typedef struct {
|
|
213
218
|
gpr_slice_buffer outbuf;
|
214
219
|
/** hpack encoding */
|
215
220
|
grpc_chttp2_hpack_compressor hpack_compressor;
|
216
|
-
|
221
|
+
int64_t outgoing_window;
|
217
222
|
/** is this a client? */
|
218
|
-
|
223
|
+
uint8_t is_client;
|
219
224
|
/** callback for when writing is done */
|
220
225
|
grpc_closure done_cb;
|
221
226
|
} grpc_chttp2_transport_writing;
|
222
227
|
|
223
228
|
struct grpc_chttp2_transport_parsing {
|
224
229
|
/** is this transport a client? (boolean) */
|
225
|
-
|
230
|
+
uint8_t is_client;
|
226
231
|
|
227
232
|
/** were settings updated? */
|
228
|
-
|
233
|
+
uint8_t settings_updated;
|
229
234
|
/** was a settings ack received? */
|
230
|
-
|
235
|
+
uint8_t settings_ack_received;
|
231
236
|
/** was a goaway frame received? */
|
232
|
-
|
237
|
+
uint8_t goaway_received;
|
233
238
|
|
234
239
|
/** the last sent max_table_size setting */
|
235
|
-
|
240
|
+
uint32_t last_sent_max_table_size;
|
236
241
|
|
237
242
|
/** initial window change */
|
238
|
-
|
243
|
+
int64_t initial_window_update;
|
239
244
|
|
240
245
|
/** data to write later - after parsing */
|
241
246
|
gpr_slice_buffer qbuf;
|
@@ -252,20 +257,20 @@ struct grpc_chttp2_transport_parsing {
|
|
252
257
|
grpc_chttp2_goaway_parser goaway_parser;
|
253
258
|
|
254
259
|
/** window available for peer to send to us */
|
255
|
-
|
260
|
+
int64_t incoming_window;
|
256
261
|
|
257
262
|
/** next stream id available at the time of beginning parsing */
|
258
|
-
|
259
|
-
|
263
|
+
uint32_t next_stream_id;
|
264
|
+
uint32_t last_incoming_stream_id;
|
260
265
|
|
261
266
|
/* deframing */
|
262
267
|
grpc_chttp2_deframe_transport_state deframe_state;
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
268
|
+
uint8_t incoming_frame_type;
|
269
|
+
uint8_t incoming_frame_flags;
|
270
|
+
uint8_t header_eof;
|
271
|
+
uint32_t expect_continuation_stream_id;
|
272
|
+
uint32_t incoming_frame_size;
|
273
|
+
uint32_t incoming_stream_id;
|
269
274
|
|
270
275
|
/* active parser */
|
271
276
|
void *parser_data;
|
@@ -276,14 +281,14 @@ struct grpc_chttp2_transport_parsing {
|
|
276
281
|
grpc_chttp2_stream_parsing *stream_parsing, gpr_slice slice, int is_last);
|
277
282
|
|
278
283
|
/* received settings */
|
279
|
-
|
284
|
+
uint32_t settings[GRPC_CHTTP2_NUM_SETTINGS];
|
280
285
|
|
281
286
|
/* goaway data */
|
282
287
|
grpc_status_code goaway_error;
|
283
|
-
|
288
|
+
uint32_t goaway_last_stream_index;
|
284
289
|
gpr_slice goaway_text;
|
285
290
|
|
286
|
-
|
291
|
+
int64_t outgoing_window;
|
287
292
|
};
|
288
293
|
|
289
294
|
struct grpc_chttp2_transport {
|
@@ -298,17 +303,17 @@ struct grpc_chttp2_transport {
|
|
298
303
|
gpr_mu mu;
|
299
304
|
|
300
305
|
/** is the transport destroying itself? */
|
301
|
-
|
306
|
+
uint8_t destroying;
|
302
307
|
/** has the upper layer closed the transport? */
|
303
|
-
|
308
|
+
uint8_t closed;
|
304
309
|
|
305
310
|
/** is a thread currently writing */
|
306
|
-
|
311
|
+
uint8_t writing_active;
|
307
312
|
/** is a thread currently parsing */
|
308
|
-
|
313
|
+
uint8_t parsing_active;
|
309
314
|
|
310
315
|
/** is there a read request to the endpoint outstanding? */
|
311
|
-
|
316
|
+
uint8_t endpoint_reading;
|
312
317
|
|
313
318
|
/** various lists of streams */
|
314
319
|
grpc_chttp2_stream_list lists[STREAM_LIST_COUNT];
|
@@ -357,20 +362,20 @@ struct grpc_chttp2_transport {
|
|
357
362
|
|
358
363
|
typedef struct {
|
359
364
|
/** HTTP2 stream id for this stream, or zero if one has not been assigned */
|
360
|
-
|
365
|
+
uint32_t id;
|
361
366
|
|
362
367
|
/** window available for us to send to peer */
|
363
|
-
|
368
|
+
int64_t outgoing_window;
|
364
369
|
/** The number of bytes the upper layers have offered to receive.
|
365
370
|
As the upper layer offers more bytes, this value increases.
|
366
371
|
As bytes are read, this value decreases. */
|
367
|
-
|
372
|
+
uint32_t max_recv_bytes;
|
368
373
|
/** The number of bytes the upper layer has offered to read but we have
|
369
374
|
not yet announced to HTTP2 flow control.
|
370
375
|
As the upper layers offer to read more bytes, this value increases.
|
371
376
|
As we advertise incoming flow control window, this value decreases. */
|
372
|
-
|
373
|
-
|
377
|
+
uint32_t unannounced_incoming_window_for_parse;
|
378
|
+
uint32_t unannounced_incoming_window_for_writing;
|
374
379
|
/** things the upper layers would like to send */
|
375
380
|
grpc_metadata_batch *send_initial_metadata;
|
376
381
|
grpc_closure *send_initial_metadata_finished;
|
@@ -389,18 +394,18 @@ typedef struct {
|
|
389
394
|
/** when the application requests writes be closed, the write_closed is
|
390
395
|
'queued'; when the close is flow controlled into the send path, we are
|
391
396
|
'sending' it; when the write has been performed it is 'sent' */
|
392
|
-
|
397
|
+
uint8_t write_closed;
|
393
398
|
/** is this stream reading half-closed (boolean) */
|
394
|
-
|
399
|
+
uint8_t read_closed;
|
395
400
|
/** is this stream in the stream map? (boolean) */
|
396
|
-
|
401
|
+
uint8_t in_stream_map;
|
397
402
|
/** has this stream seen an error? if 1, then pending incoming frames
|
398
403
|
can be thrown away */
|
399
|
-
|
404
|
+
uint8_t seen_error;
|
400
405
|
|
401
|
-
|
402
|
-
|
403
|
-
|
406
|
+
uint8_t published_initial_metadata;
|
407
|
+
uint8_t published_trailing_metadata;
|
408
|
+
uint8_t faked_trailing_metadata;
|
404
409
|
|
405
410
|
grpc_chttp2_incoming_metadata_buffer received_initial_metadata;
|
406
411
|
grpc_chttp2_incoming_metadata_buffer received_trailing_metadata;
|
@@ -410,19 +415,19 @@ typedef struct {
|
|
410
415
|
|
411
416
|
typedef struct {
|
412
417
|
/** HTTP2 stream id for this stream, or zero if one has not been assigned */
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
418
|
+
uint32_t id;
|
419
|
+
uint8_t fetching;
|
420
|
+
uint8_t sent_initial_metadata;
|
421
|
+
uint8_t sent_message;
|
422
|
+
uint8_t sent_trailing_metadata;
|
423
|
+
uint8_t read_closed;
|
419
424
|
/** send this initial metadata */
|
420
425
|
grpc_metadata_batch *send_initial_metadata;
|
421
426
|
grpc_byte_stream *send_message;
|
422
427
|
grpc_metadata_batch *send_trailing_metadata;
|
423
|
-
|
428
|
+
int64_t outgoing_window;
|
424
429
|
/** how much window should we announce? */
|
425
|
-
|
430
|
+
uint32_t announce_window;
|
426
431
|
gpr_slice_buffer flow_controlled_buffer;
|
427
432
|
gpr_slice fetching_slice;
|
428
433
|
size_t stream_fetched;
|
@@ -431,27 +436,27 @@ typedef struct {
|
|
431
436
|
|
432
437
|
struct grpc_chttp2_stream_parsing {
|
433
438
|
/** HTTP2 stream id for this stream, or zero if one has not been assigned */
|
434
|
-
|
439
|
+
uint32_t id;
|
435
440
|
/** has this stream received a close */
|
436
|
-
|
441
|
+
uint8_t received_close;
|
437
442
|
/** saw a rst_stream */
|
438
|
-
|
443
|
+
uint8_t saw_rst_stream;
|
439
444
|
/** how many header frames have we received? */
|
440
|
-
|
445
|
+
uint8_t header_frames_received;
|
441
446
|
/** which metadata did we get (on this parse) */
|
442
|
-
|
447
|
+
uint8_t got_metadata_on_parse[2];
|
443
448
|
/** should we raise the seen_error flag in transport_global */
|
444
|
-
|
449
|
+
uint8_t seen_error;
|
445
450
|
/** window available for peer to send to us */
|
446
|
-
|
451
|
+
int64_t incoming_window;
|
447
452
|
/** parsing state for data frames */
|
448
453
|
grpc_chttp2_data_parser data_parser;
|
449
454
|
/** reason give to rst_stream */
|
450
|
-
|
455
|
+
uint32_t rst_stream_reason;
|
451
456
|
/** amount of window given */
|
452
|
-
|
457
|
+
int64_t outgoing_window;
|
453
458
|
/** number of bytes received - reset at end of parse thread execution */
|
454
|
-
|
459
|
+
int64_t received_bytes;
|
455
460
|
|
456
461
|
/** incoming metadata */
|
457
462
|
grpc_chttp2_incoming_metadata_buffer metadata_buffer[2];
|
@@ -464,7 +469,7 @@ struct grpc_chttp2_stream {
|
|
464
469
|
grpc_chttp2_stream_parsing parsing;
|
465
470
|
|
466
471
|
grpc_chttp2_stream_link links[STREAM_LIST_COUNT];
|
467
|
-
|
472
|
+
uint8_t included[STREAM_LIST_COUNT];
|
468
473
|
};
|
469
474
|
|
470
475
|
/** Transport writing call flow:
|
@@ -487,7 +492,7 @@ void grpc_chttp2_perform_writes(
|
|
487
492
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_writing *transport_writing,
|
488
493
|
grpc_endpoint *endpoint);
|
489
494
|
void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
|
490
|
-
void *transport_writing,
|
495
|
+
void *transport_writing, bool success);
|
491
496
|
void grpc_chttp2_cleanup_writing(grpc_exec_ctx *exec_ctx,
|
492
497
|
grpc_chttp2_transport_global *global,
|
493
498
|
grpc_chttp2_transport_writing *writing);
|
@@ -503,11 +508,11 @@ void grpc_chttp2_publish_reads(grpc_exec_ctx *exec_ctx,
|
|
503
508
|
grpc_chttp2_transport_global *global,
|
504
509
|
grpc_chttp2_transport_parsing *parsing);
|
505
510
|
|
506
|
-
/** Get a writable stream
|
507
|
-
returns non-zero if there was a stream available */
|
508
511
|
void grpc_chttp2_list_add_writable_stream(
|
509
512
|
grpc_chttp2_transport_global *transport_global,
|
510
513
|
grpc_chttp2_stream_global *stream_global);
|
514
|
+
/** Get a writable stream
|
515
|
+
returns non-zero if there was a stream available */
|
511
516
|
int grpc_chttp2_list_pop_writable_stream(
|
512
517
|
grpc_chttp2_transport_global *transport_global,
|
513
518
|
grpc_chttp2_transport_writing *transport_writing,
|
@@ -559,12 +564,18 @@ int grpc_chttp2_list_pop_check_read_ops(
|
|
559
564
|
grpc_chttp2_transport_global *transport_global,
|
560
565
|
grpc_chttp2_stream_global **stream_global);
|
561
566
|
|
562
|
-
void
|
567
|
+
void grpc_chttp2_list_add_writing_stalled_by_transport(
|
563
568
|
grpc_chttp2_transport_writing *transport_writing,
|
564
569
|
grpc_chttp2_stream_writing *stream_writing);
|
570
|
+
void grpc_chttp2_list_flush_writing_stalled_by_transport(
|
571
|
+
grpc_chttp2_transport_writing *transport_writing, bool is_window_available);
|
572
|
+
|
565
573
|
int grpc_chttp2_list_pop_stalled_by_transport(
|
566
574
|
grpc_chttp2_transport_global *transport_global,
|
567
575
|
grpc_chttp2_stream_global **stream_global);
|
576
|
+
void grpc_chttp2_list_remove_stalled_by_transport(
|
577
|
+
grpc_chttp2_transport_global *transport_global,
|
578
|
+
grpc_chttp2_stream_global *stream_global);
|
568
579
|
|
569
580
|
void grpc_chttp2_list_add_unannounced_incoming_window_available(
|
570
581
|
grpc_chttp2_transport_global *transport_global,
|
@@ -593,14 +604,14 @@ int grpc_chttp2_list_pop_closed_waiting_for_writing(
|
|
593
604
|
grpc_chttp2_stream_global **stream_global);
|
594
605
|
|
595
606
|
grpc_chttp2_stream_parsing *grpc_chttp2_parsing_lookup_stream(
|
596
|
-
grpc_chttp2_transport_parsing *transport_parsing,
|
607
|
+
grpc_chttp2_transport_parsing *transport_parsing, uint32_t id);
|
597
608
|
grpc_chttp2_stream_parsing *grpc_chttp2_parsing_accept_stream(
|
598
609
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
|
599
|
-
|
610
|
+
uint32_t id);
|
600
611
|
|
601
612
|
void grpc_chttp2_add_incoming_goaway(
|
602
613
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
|
603
|
-
|
614
|
+
uint32_t goaway_error, gpr_slice goaway_text);
|
604
615
|
|
605
616
|
void grpc_chttp2_register_stream(grpc_chttp2_transport *t,
|
606
617
|
grpc_chttp2_stream *s);
|
@@ -706,8 +717,7 @@ void grpc_chttp2_flowctl_trace(const char *file, int line, const char *phase,
|
|
706
717
|
grpc_chttp2_flowctl_op op, const char *context1,
|
707
718
|
const char *var1, const char *context2,
|
708
719
|
const char *var2, int is_client,
|
709
|
-
|
710
|
-
gpr_int64 val2);
|
720
|
+
uint32_t stream_id, int64_t val1, int64_t val2);
|
711
721
|
|
712
722
|
void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
|
713
723
|
grpc_chttp2_transport_global *transport_global,
|
@@ -742,16 +752,17 @@ void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx,
|
|
742
752
|
|
743
753
|
grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
|
744
754
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
|
745
|
-
grpc_chttp2_stream_parsing *stream_parsing,
|
746
|
-
|
755
|
+
grpc_chttp2_stream_parsing *stream_parsing, uint32_t frame_size,
|
756
|
+
uint32_t flags, grpc_chttp2_incoming_frame_queue *add_to_queue);
|
747
757
|
void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
|
748
758
|
grpc_chttp2_incoming_byte_stream *bs,
|
749
759
|
gpr_slice slice);
|
750
760
|
void grpc_chttp2_incoming_byte_stream_finished(
|
751
|
-
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs
|
761
|
+
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, int success,
|
762
|
+
int from_parsing_thread);
|
752
763
|
|
753
764
|
void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
|
754
765
|
grpc_chttp2_transport_parsing *parsing,
|
755
|
-
const
|
766
|
+
const uint8_t *opaque_8bytes);
|
756
767
|
|
757
768
|
#endif
|