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
@@ -126,7 +126,7 @@ void grpc_chttp2_publish_reads(
|
|
126
126
|
if (transport_parsing->settings_ack_received) {
|
127
127
|
memcpy(transport_global->settings[GRPC_ACKED_SETTINGS],
|
128
128
|
transport_global->settings[GRPC_SENT_SETTINGS],
|
129
|
-
GRPC_CHTTP2_NUM_SETTINGS * sizeof(
|
129
|
+
GRPC_CHTTP2_NUM_SETTINGS * sizeof(uint32_t));
|
130
130
|
transport_parsing->settings_ack_received = 0;
|
131
131
|
transport_global->sent_local_settings = 0;
|
132
132
|
}
|
@@ -135,7 +135,7 @@ void grpc_chttp2_publish_reads(
|
|
135
135
|
published later */
|
136
136
|
if (transport_parsing->goaway_received) {
|
137
137
|
grpc_chttp2_add_incoming_goaway(exec_ctx, transport_global,
|
138
|
-
(
|
138
|
+
(uint32_t)transport_parsing->goaway_error,
|
139
139
|
transport_parsing->goaway_text);
|
140
140
|
transport_parsing->goaway_text = gpr_empty_slice();
|
141
141
|
transport_parsing->goaway_received = 0;
|
@@ -155,8 +155,8 @@ void grpc_chttp2_publish_reads(
|
|
155
155
|
|
156
156
|
if (transport_parsing->incoming_window <
|
157
157
|
transport_global->connection_window_target * 3 / 4) {
|
158
|
-
|
159
|
-
|
158
|
+
int64_t announce_bytes = transport_global->connection_window_target -
|
159
|
+
transport_parsing->incoming_window;
|
160
160
|
GRPC_CHTTP2_FLOW_CREDIT_TRANSPORT("parsed", transport_global,
|
161
161
|
announce_incoming_window, announce_bytes);
|
162
162
|
GRPC_CHTTP2_FLOW_CREDIT_TRANSPORT("parsed", transport_parsing,
|
@@ -181,7 +181,7 @@ void grpc_chttp2_publish_reads(
|
|
181
181
|
grpc_chttp2_list_add_writable_stream(transport_global, stream_global);
|
182
182
|
}
|
183
183
|
|
184
|
-
stream_global->max_recv_bytes -= (
|
184
|
+
stream_global->max_recv_bytes -= (uint32_t)GPR_MIN(
|
185
185
|
stream_global->max_recv_bytes, stream_parsing->received_bytes);
|
186
186
|
stream_parsing->received_bytes = 0;
|
187
187
|
|
@@ -245,9 +245,9 @@ void grpc_chttp2_publish_reads(
|
|
245
245
|
int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
246
246
|
grpc_chttp2_transport_parsing *transport_parsing,
|
247
247
|
gpr_slice slice) {
|
248
|
-
|
249
|
-
|
250
|
-
|
248
|
+
uint8_t *beg = GPR_SLICE_START_PTR(slice);
|
249
|
+
uint8_t *end = GPR_SLICE_END_PTR(slice);
|
250
|
+
uint8_t *cur = beg;
|
251
251
|
|
252
252
|
if (cur == end) return 1;
|
253
253
|
|
@@ -284,7 +284,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
284
284
|
"at byte %d",
|
285
285
|
GRPC_CHTTP2_CLIENT_CONNECT_STRING[transport_parsing
|
286
286
|
->deframe_state],
|
287
|
-
(int)(
|
287
|
+
(int)(uint8_t)GRPC_CHTTP2_CLIENT_CONNECT_STRING
|
288
288
|
[transport_parsing->deframe_state],
|
289
289
|
*cur, (int)*cur, transport_parsing->deframe_state);
|
290
290
|
return 0;
|
@@ -299,7 +299,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
299
299
|
dts_fh_0:
|
300
300
|
case GRPC_DTS_FH_0:
|
301
301
|
GPR_ASSERT(cur < end);
|
302
|
-
transport_parsing->incoming_frame_size = ((
|
302
|
+
transport_parsing->incoming_frame_size = ((uint32_t)*cur) << 16;
|
303
303
|
if (++cur == end) {
|
304
304
|
transport_parsing->deframe_state = GRPC_DTS_FH_1;
|
305
305
|
return 1;
|
@@ -307,7 +307,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
307
307
|
/* fallthrough */
|
308
308
|
case GRPC_DTS_FH_1:
|
309
309
|
GPR_ASSERT(cur < end);
|
310
|
-
transport_parsing->incoming_frame_size |= ((
|
310
|
+
transport_parsing->incoming_frame_size |= ((uint32_t)*cur) << 8;
|
311
311
|
if (++cur == end) {
|
312
312
|
transport_parsing->deframe_state = GRPC_DTS_FH_2;
|
313
313
|
return 1;
|
@@ -339,7 +339,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
339
339
|
/* fallthrough */
|
340
340
|
case GRPC_DTS_FH_5:
|
341
341
|
GPR_ASSERT(cur < end);
|
342
|
-
transport_parsing->incoming_stream_id = (((
|
342
|
+
transport_parsing->incoming_stream_id = (((uint32_t)*cur) & 0x7f) << 24;
|
343
343
|
if (++cur == end) {
|
344
344
|
transport_parsing->deframe_state = GRPC_DTS_FH_6;
|
345
345
|
return 1;
|
@@ -347,7 +347,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
347
347
|
/* fallthrough */
|
348
348
|
case GRPC_DTS_FH_6:
|
349
349
|
GPR_ASSERT(cur < end);
|
350
|
-
transport_parsing->incoming_stream_id |= ((
|
350
|
+
transport_parsing->incoming_stream_id |= ((uint32_t)*cur) << 16;
|
351
351
|
if (++cur == end) {
|
352
352
|
transport_parsing->deframe_state = GRPC_DTS_FH_7;
|
353
353
|
return 1;
|
@@ -355,7 +355,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
355
355
|
/* fallthrough */
|
356
356
|
case GRPC_DTS_FH_7:
|
357
357
|
GPR_ASSERT(cur < end);
|
358
|
-
transport_parsing->incoming_stream_id |= ((
|
358
|
+
transport_parsing->incoming_stream_id |= ((uint32_t)*cur) << 8;
|
359
359
|
if (++cur == end) {
|
360
360
|
transport_parsing->deframe_state = GRPC_DTS_FH_8;
|
361
361
|
return 1;
|
@@ -363,7 +363,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
363
363
|
/* fallthrough */
|
364
364
|
case GRPC_DTS_FH_8:
|
365
365
|
GPR_ASSERT(cur < end);
|
366
|
-
transport_parsing->incoming_stream_id |= ((
|
366
|
+
transport_parsing->incoming_stream_id |= ((uint32_t)*cur);
|
367
367
|
transport_parsing->deframe_state = GRPC_DTS_FRAME;
|
368
368
|
if (!init_frame_parser(exec_ctx, transport_parsing)) {
|
369
369
|
return 0;
|
@@ -390,7 +390,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
390
390
|
/* fallthrough */
|
391
391
|
case GRPC_DTS_FRAME:
|
392
392
|
GPR_ASSERT(cur < end);
|
393
|
-
if ((
|
393
|
+
if ((uint32_t)(end - cur) == transport_parsing->incoming_frame_size) {
|
394
394
|
if (!parse_frame_slice(exec_ctx, transport_parsing,
|
395
395
|
gpr_slice_sub_no_ref(slice, (size_t)(cur - beg),
|
396
396
|
(size_t)(end - beg)),
|
@@ -400,7 +400,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
400
400
|
transport_parsing->deframe_state = GRPC_DTS_FH_0;
|
401
401
|
transport_parsing->incoming_stream = NULL;
|
402
402
|
return 1;
|
403
|
-
} else if ((
|
403
|
+
} else if ((uint32_t)(end - cur) >
|
404
404
|
transport_parsing->incoming_frame_size) {
|
405
405
|
size_t cur_offset = (size_t)(cur - beg);
|
406
406
|
if (!parse_frame_slice(
|
@@ -421,7 +421,7 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
|
|
421
421
|
0)) {
|
422
422
|
return 0;
|
423
423
|
}
|
424
|
-
transport_parsing->incoming_frame_size -= (
|
424
|
+
transport_parsing->incoming_frame_size -= (uint32_t)(end - cur);
|
425
425
|
return 1;
|
426
426
|
}
|
427
427
|
GPR_UNREACHABLE_CODE(return 0);
|
@@ -488,14 +488,14 @@ static int init_skip_frame_parser(
|
|
488
488
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
|
489
489
|
int is_header) {
|
490
490
|
if (is_header) {
|
491
|
-
|
491
|
+
uint8_t is_eoh = transport_parsing->expect_continuation_stream_id != 0;
|
492
492
|
transport_parsing->parser = grpc_chttp2_header_parser_parse;
|
493
493
|
transport_parsing->parser_data = &transport_parsing->hpack_parser;
|
494
494
|
transport_parsing->hpack_parser.on_header = skip_header;
|
495
495
|
transport_parsing->hpack_parser.on_header_user_data = NULL;
|
496
496
|
transport_parsing->hpack_parser.is_boundary = is_eoh;
|
497
497
|
transport_parsing->hpack_parser.is_eof =
|
498
|
-
(
|
498
|
+
(uint8_t)(is_eoh ? transport_parsing->header_eof : 0);
|
499
499
|
} else {
|
500
500
|
transport_parsing->parser = skip_parser;
|
501
501
|
}
|
@@ -512,7 +512,7 @@ void grpc_chttp2_parsing_become_skip_parser(
|
|
512
512
|
static grpc_chttp2_parse_error update_incoming_window(
|
513
513
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
|
514
514
|
grpc_chttp2_stream_parsing *stream_parsing) {
|
515
|
-
|
515
|
+
uint32_t incoming_frame_size = transport_parsing->incoming_frame_size;
|
516
516
|
if (incoming_frame_size > transport_parsing->incoming_window) {
|
517
517
|
gpr_log(GPR_ERROR, "frame of size %d overflows incoming window of %d",
|
518
518
|
transport_parsing->incoming_frame_size,
|
@@ -652,8 +652,8 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
|
|
652
652
|
static int init_header_frame_parser(
|
653
653
|
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_parsing *transport_parsing,
|
654
654
|
int is_continuation) {
|
655
|
-
|
656
|
-
|
655
|
+
uint8_t is_eoh = (transport_parsing->incoming_frame_flags &
|
656
|
+
GRPC_CHTTP2_DATA_FLAG_END_HEADERS) != 0;
|
657
657
|
int via_accept = 0;
|
658
658
|
grpc_chttp2_stream_parsing *stream_parsing;
|
659
659
|
|
@@ -738,7 +738,7 @@ static int init_header_frame_parser(
|
|
738
738
|
transport_parsing->hpack_parser.on_header_user_data = transport_parsing;
|
739
739
|
transport_parsing->hpack_parser.is_boundary = is_eoh;
|
740
740
|
transport_parsing->hpack_parser.is_eof =
|
741
|
-
(
|
741
|
+
(uint8_t)(is_eoh ? transport_parsing->header_eof : 0);
|
742
742
|
if (!is_continuation && (transport_parsing->incoming_frame_flags &
|
743
743
|
GRPC_CHTTP2_FLAG_HAS_PRIORITY)) {
|
744
744
|
grpc_chttp2_hpack_parser_set_has_priority(&transport_parsing->hpack_parser);
|
@@ -829,7 +829,7 @@ static int init_settings_frame_parser(
|
|
829
829
|
}
|
830
830
|
|
831
831
|
/*
|
832
|
-
static int is_window_update_legal(
|
832
|
+
static int is_window_update_legal(int64_t window_update, int64_t window) {
|
833
833
|
return window + window_update < MAX_WINDOW;
|
834
834
|
}
|
835
835
|
*/
|
@@ -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
|
@@ -313,12 +313,27 @@ int grpc_chttp2_list_pop_check_read_ops(
|
|
313
313
|
return r;
|
314
314
|
}
|
315
315
|
|
316
|
-
void
|
316
|
+
void grpc_chttp2_list_add_writing_stalled_by_transport(
|
317
317
|
grpc_chttp2_transport_writing *transport_writing,
|
318
318
|
grpc_chttp2_stream_writing *stream_writing) {
|
319
319
|
stream_list_add(TRANSPORT_FROM_WRITING(transport_writing),
|
320
320
|
STREAM_FROM_WRITING(stream_writing),
|
321
|
-
|
321
|
+
GRPC_CHTTP2_LIST_WRITING_STALLED_BY_TRANSPORT);
|
322
|
+
}
|
323
|
+
|
324
|
+
void grpc_chttp2_list_flush_writing_stalled_by_transport(
|
325
|
+
grpc_chttp2_transport_writing *transport_writing,
|
326
|
+
bool is_window_available) {
|
327
|
+
grpc_chttp2_stream *stream;
|
328
|
+
grpc_chttp2_transport *transport = TRANSPORT_FROM_WRITING(transport_writing);
|
329
|
+
while (stream_list_pop(transport, &stream,
|
330
|
+
GRPC_CHTTP2_LIST_WRITING_STALLED_BY_TRANSPORT)) {
|
331
|
+
if (is_window_available) {
|
332
|
+
grpc_chttp2_list_add_writable_stream(&transport->global, &stream->global);
|
333
|
+
} else {
|
334
|
+
stream_list_add(transport, stream, GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT);
|
335
|
+
}
|
336
|
+
}
|
322
337
|
}
|
323
338
|
|
324
339
|
int grpc_chttp2_list_pop_stalled_by_transport(
|
@@ -333,6 +348,14 @@ int grpc_chttp2_list_pop_stalled_by_transport(
|
|
333
348
|
return r;
|
334
349
|
}
|
335
350
|
|
351
|
+
void grpc_chttp2_list_remove_stalled_by_transport(
|
352
|
+
grpc_chttp2_transport_global *transport_global,
|
353
|
+
grpc_chttp2_stream_global *stream_global) {
|
354
|
+
stream_list_maybe_remove(TRANSPORT_FROM_GLOBAL(transport_global),
|
355
|
+
STREAM_FROM_GLOBAL(stream_global),
|
356
|
+
GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT);
|
357
|
+
}
|
358
|
+
|
336
359
|
void grpc_chttp2_list_add_closed_waiting_for_parsing(
|
337
360
|
grpc_chttp2_transport_global *transport_global,
|
338
361
|
grpc_chttp2_stream_global *stream_global) {
|
@@ -42,7 +42,7 @@
|
|
42
42
|
void grpc_chttp2_stream_map_init(grpc_chttp2_stream_map *map,
|
43
43
|
size_t initial_capacity) {
|
44
44
|
GPR_ASSERT(initial_capacity > 1);
|
45
|
-
map->keys = gpr_malloc(sizeof(
|
45
|
+
map->keys = gpr_malloc(sizeof(uint32_t) * initial_capacity);
|
46
46
|
map->values = gpr_malloc(sizeof(void *) * initial_capacity);
|
47
47
|
map->count = 0;
|
48
48
|
map->free = 0;
|
@@ -54,7 +54,7 @@ void grpc_chttp2_stream_map_destroy(grpc_chttp2_stream_map *map) {
|
|
54
54
|
gpr_free(map->values);
|
55
55
|
}
|
56
56
|
|
57
|
-
static size_t compact(
|
57
|
+
static size_t compact(uint32_t *keys, void **values, size_t count) {
|
58
58
|
size_t i, out;
|
59
59
|
|
60
60
|
for (i = 0, out = 0; i < count; i++) {
|
@@ -68,11 +68,11 @@ static size_t compact(gpr_uint32 *keys, void **values, size_t count) {
|
|
68
68
|
return out;
|
69
69
|
}
|
70
70
|
|
71
|
-
void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map *map,
|
71
|
+
void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map *map, uint32_t key,
|
72
72
|
void *value) {
|
73
73
|
size_t count = map->count;
|
74
74
|
size_t capacity = map->capacity;
|
75
|
-
|
75
|
+
uint32_t *keys = map->keys;
|
76
76
|
void **values = map->values;
|
77
77
|
|
78
78
|
GPR_ASSERT(count == 0 || keys[count - 1] < key);
|
@@ -86,7 +86,7 @@ void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map *map, gpr_uint32 key,
|
|
86
86
|
/* resize when less than 25% of the table is free, because compaction
|
87
87
|
won't help much */
|
88
88
|
map->capacity = capacity = 3 * capacity / 2;
|
89
|
-
map->keys = keys = gpr_realloc(keys, capacity * sizeof(
|
89
|
+
map->keys = keys = gpr_realloc(keys, capacity * sizeof(uint32_t));
|
90
90
|
map->values = values = gpr_realloc(values, capacity * sizeof(void *));
|
91
91
|
}
|
92
92
|
}
|
@@ -119,10 +119,10 @@ void grpc_chttp2_stream_map_move_into(grpc_chttp2_stream_map *src,
|
|
119
119
|
/* if dst doesn't have capacity, resize */
|
120
120
|
if (dst->count + src->count > dst->capacity) {
|
121
121
|
dst->capacity = GPR_MAX(dst->capacity * 3 / 2, dst->count + src->count);
|
122
|
-
dst->keys = gpr_realloc(dst->keys, dst->capacity * sizeof(
|
122
|
+
dst->keys = gpr_realloc(dst->keys, dst->capacity * sizeof(uint32_t));
|
123
123
|
dst->values = gpr_realloc(dst->values, dst->capacity * sizeof(void *));
|
124
124
|
}
|
125
|
-
memcpy(dst->keys + dst->count, src->keys, src->count * sizeof(
|
125
|
+
memcpy(dst->keys + dst->count, src->keys, src->count * sizeof(uint32_t));
|
126
126
|
memcpy(dst->values + dst->count, src->values, src->count * sizeof(void *));
|
127
127
|
dst->count += src->count;
|
128
128
|
dst->free += src->free;
|
@@ -130,13 +130,13 @@ void grpc_chttp2_stream_map_move_into(grpc_chttp2_stream_map *src,
|
|
130
130
|
src->free = 0;
|
131
131
|
}
|
132
132
|
|
133
|
-
static void **find(grpc_chttp2_stream_map *map,
|
133
|
+
static void **find(grpc_chttp2_stream_map *map, uint32_t key) {
|
134
134
|
size_t min_idx = 0;
|
135
135
|
size_t max_idx = map->count;
|
136
136
|
size_t mid_idx;
|
137
|
-
|
137
|
+
uint32_t *keys = map->keys;
|
138
138
|
void **values = map->values;
|
139
|
-
|
139
|
+
uint32_t mid_key;
|
140
140
|
|
141
141
|
if (max_idx == 0) return NULL;
|
142
142
|
|
@@ -158,8 +158,7 @@ static void **find(grpc_chttp2_stream_map *map, gpr_uint32 key) {
|
|
158
158
|
return NULL;
|
159
159
|
}
|
160
160
|
|
161
|
-
void *grpc_chttp2_stream_map_delete(grpc_chttp2_stream_map *map,
|
162
|
-
gpr_uint32 key) {
|
161
|
+
void *grpc_chttp2_stream_map_delete(grpc_chttp2_stream_map *map, uint32_t key) {
|
163
162
|
void **pvalue = find(map, key);
|
164
163
|
void *out = NULL;
|
165
164
|
if (pvalue != NULL) {
|
@@ -175,7 +174,7 @@ void *grpc_chttp2_stream_map_delete(grpc_chttp2_stream_map *map,
|
|
175
174
|
return out;
|
176
175
|
}
|
177
176
|
|
178
|
-
void *grpc_chttp2_stream_map_find(grpc_chttp2_stream_map *map,
|
177
|
+
void *grpc_chttp2_stream_map_find(grpc_chttp2_stream_map *map, uint32_t key) {
|
179
178
|
void **pvalue = find(map, key);
|
180
179
|
return pvalue != NULL ? *pvalue : NULL;
|
181
180
|
}
|
@@ -185,7 +184,7 @@ size_t grpc_chttp2_stream_map_size(grpc_chttp2_stream_map *map) {
|
|
185
184
|
}
|
186
185
|
|
187
186
|
void grpc_chttp2_stream_map_for_each(grpc_chttp2_stream_map *map,
|
188
|
-
void (*f)(void *user_data,
|
187
|
+
void (*f)(void *user_data, uint32_t key,
|
189
188
|
void *value),
|
190
189
|
void *user_data) {
|
191
190
|
size_t i;
|
@@ -38,14 +38,14 @@
|
|
38
38
|
|
39
39
|
#include <stddef.h>
|
40
40
|
|
41
|
-
/* Data structure to map a
|
41
|
+
/* Data structure to map a uint32_t to a data object (represented by a void*)
|
42
42
|
|
43
43
|
Represented as a sorted array of keys, and a corresponding array of values.
|
44
44
|
Lookups are performed with binary search.
|
45
45
|
Adds are restricted to strictly higher keys than previously seen (this is
|
46
46
|
guaranteed by http2). */
|
47
47
|
typedef struct {
|
48
|
-
|
48
|
+
uint32_t *keys;
|
49
49
|
void **values;
|
50
50
|
size_t count;
|
51
51
|
size_t free;
|
@@ -58,27 +58,26 @@ void grpc_chttp2_stream_map_destroy(grpc_chttp2_stream_map *map);
|
|
58
58
|
|
59
59
|
/* Add a new key: given http2 semantics, new keys must always be greater than
|
60
60
|
existing keys - this is asserted */
|
61
|
-
void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map *map,
|
61
|
+
void grpc_chttp2_stream_map_add(grpc_chttp2_stream_map *map, uint32_t key,
|
62
62
|
void *value);
|
63
63
|
|
64
64
|
/* Delete an existing key - returns the previous value of the key if it existed,
|
65
65
|
or NULL otherwise */
|
66
|
-
void *grpc_chttp2_stream_map_delete(grpc_chttp2_stream_map *map,
|
67
|
-
gpr_uint32 key);
|
66
|
+
void *grpc_chttp2_stream_map_delete(grpc_chttp2_stream_map *map, uint32_t key);
|
68
67
|
|
69
68
|
/* Move all elements of src into dst */
|
70
69
|
void grpc_chttp2_stream_map_move_into(grpc_chttp2_stream_map *src,
|
71
70
|
grpc_chttp2_stream_map *dst);
|
72
71
|
|
73
72
|
/* Return an existing key, or NULL if it does not exist */
|
74
|
-
void *grpc_chttp2_stream_map_find(grpc_chttp2_stream_map *map,
|
73
|
+
void *grpc_chttp2_stream_map_find(grpc_chttp2_stream_map *map, uint32_t key);
|
75
74
|
|
76
75
|
/* How many (populated) entries are in the stream map? */
|
77
76
|
size_t grpc_chttp2_stream_map_size(grpc_chttp2_stream_map *map);
|
78
77
|
|
79
78
|
/* Callback on each stream */
|
80
79
|
void grpc_chttp2_stream_map_for_each(grpc_chttp2_stream_map *map,
|
81
|
-
void (*f)(void *user_data,
|
80
|
+
void (*f)(void *user_data, uint32_t key,
|
82
81
|
void *value),
|
83
82
|
void *user_data);
|
84
83
|
|
@@ -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
|
@@ -39,12 +39,12 @@
|
|
39
39
|
#include <grpc/support/port_platform.h>
|
40
40
|
#include "src/core/support/string.h"
|
41
41
|
|
42
|
-
static
|
42
|
+
static int64_t round_up(int64_t x, int64_t divisor) {
|
43
43
|
return (x / divisor + (x % divisor != 0)) * divisor;
|
44
44
|
}
|
45
45
|
|
46
46
|
/* round an integer up to the next value with three significant figures */
|
47
|
-
static
|
47
|
+
static int64_t round_up_to_three_sig_figs(int64_t x) {
|
48
48
|
if (x < 1000) return x;
|
49
49
|
if (x < 10000) return round_up(x, 10);
|
50
50
|
if (x < 100000) return round_up(x, 100);
|
@@ -58,13 +58,13 @@ static gpr_int64 round_up_to_three_sig_figs(gpr_int64 x) {
|
|
58
58
|
/* encode our minimum viable timeout value */
|
59
59
|
static void enc_tiny(char *buffer) { memcpy(buffer, "1n", 3); }
|
60
60
|
|
61
|
-
static void enc_ext(char *buffer,
|
62
|
-
int n =
|
61
|
+
static void enc_ext(char *buffer, int64_t value, char ext) {
|
62
|
+
int n = int64_ttoa(value, buffer);
|
63
63
|
buffer[n] = ext;
|
64
64
|
buffer[n + 1] = 0;
|
65
65
|
}
|
66
66
|
|
67
|
-
static void enc_seconds(char *buffer,
|
67
|
+
static void enc_seconds(char *buffer, int64_t sec) {
|
68
68
|
if (sec % 3600 == 0) {
|
69
69
|
enc_ext(buffer, sec / 3600, 'H');
|
70
70
|
} else if (sec % 60 == 0) {
|
@@ -74,7 +74,7 @@ static void enc_seconds(char *buffer, gpr_int64 sec) {
|
|
74
74
|
}
|
75
75
|
}
|
76
76
|
|
77
|
-
static void enc_nanos(char *buffer,
|
77
|
+
static void enc_nanos(char *buffer, int64_t x) {
|
78
78
|
x = round_up_to_three_sig_figs(x);
|
79
79
|
if (x < 100000) {
|
80
80
|
if (x % 1000 == 0) {
|
@@ -98,7 +98,7 @@ static void enc_nanos(char *buffer, gpr_int64 x) {
|
|
98
98
|
}
|
99
99
|
}
|
100
100
|
|
101
|
-
static void enc_micros(char *buffer,
|
101
|
+
static void enc_micros(char *buffer, int64_t x) {
|
102
102
|
x = round_up_to_three_sig_figs(x);
|
103
103
|
if (x < 100000) {
|
104
104
|
if (x % 1000 == 0) {
|
@@ -124,7 +124,7 @@ void grpc_chttp2_encode_timeout(gpr_timespec timeout, char *buffer) {
|
|
124
124
|
enc_nanos(buffer, timeout.tv_nsec);
|
125
125
|
} else if (timeout.tv_sec < 1000 && timeout.tv_nsec != 0) {
|
126
126
|
enc_micros(buffer,
|
127
|
-
(
|
127
|
+
(int64_t)(timeout.tv_sec * 1000000) +
|
128
128
|
(timeout.tv_nsec / 1000 + (timeout.tv_nsec % 1000 != 0)));
|
129
129
|
} else {
|
130
130
|
enc_seconds(buffer, timeout.tv_sec + (timeout.tv_nsec != 0));
|
@@ -137,21 +137,24 @@ static int is_all_whitespace(const char *p) {
|
|
137
137
|
}
|
138
138
|
|
139
139
|
int grpc_chttp2_decode_timeout(const char *buffer, gpr_timespec *timeout) {
|
140
|
-
|
141
|
-
const
|
140
|
+
int32_t x = 0;
|
141
|
+
const uint8_t *p = (const uint8_t *)buffer;
|
142
142
|
int have_digit = 0;
|
143
143
|
/* skip whitespace */
|
144
144
|
for (; *p == ' '; p++)
|
145
145
|
;
|
146
146
|
/* decode numeric part */
|
147
147
|
for (; *p >= '0' && *p <= '9'; p++) {
|
148
|
-
|
148
|
+
int32_t digit = (int32_t)(*p - (uint8_t)'0');
|
149
149
|
have_digit = 1;
|
150
|
-
|
151
|
-
|
152
|
-
|
150
|
+
/* spec allows max. 8 digits, but we allow values up to 1,000,000,000 */
|
151
|
+
if (x >= (100 * 1000 * 1000)) {
|
152
|
+
if (x != (100 * 1000 * 1000) || digit != 0) {
|
153
|
+
*timeout = gpr_inf_future(GPR_CLOCK_REALTIME);
|
154
|
+
return 1;
|
155
|
+
}
|
153
156
|
}
|
154
|
-
x =
|
157
|
+
x = x * 10 + digit;
|
155
158
|
}
|
156
159
|
if (!have_digit) return 0;
|
157
160
|
/* skip whitespace */
|