grpc 1.8.7 → 1.9.0.pre1
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 +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
@@ -31,33 +31,22 @@
|
|
31
31
|
#include "src/core/lib/transport/status_conversion.h"
|
32
32
|
#include "src/core/lib/transport/timeout_encoding.h"
|
33
33
|
|
34
|
-
static grpc_error* init_frame_parser(
|
35
|
-
|
36
|
-
static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
37
|
-
grpc_chttp2_transport* t,
|
34
|
+
static grpc_error* init_frame_parser(grpc_chttp2_transport* t);
|
35
|
+
static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
|
38
36
|
int is_continuation);
|
39
|
-
static grpc_error* init_data_frame_parser(
|
40
|
-
|
41
|
-
static grpc_error*
|
42
|
-
|
43
|
-
static grpc_error*
|
44
|
-
|
45
|
-
static grpc_error*
|
46
|
-
grpc_chttp2_transport* t);
|
47
|
-
static grpc_error* init_ping_parser(grpc_exec_ctx* exec_ctx,
|
48
|
-
grpc_chttp2_transport* t);
|
49
|
-
static grpc_error* init_goaway_parser(grpc_exec_ctx* exec_ctx,
|
50
|
-
grpc_chttp2_transport* t);
|
51
|
-
static grpc_error* init_skip_frame_parser(grpc_exec_ctx* exec_ctx,
|
52
|
-
grpc_chttp2_transport* t,
|
37
|
+
static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t);
|
38
|
+
static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t);
|
39
|
+
static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t);
|
40
|
+
static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t);
|
41
|
+
static grpc_error* init_ping_parser(grpc_chttp2_transport* t);
|
42
|
+
static grpc_error* init_goaway_parser(grpc_chttp2_transport* t);
|
43
|
+
static grpc_error* init_skip_frame_parser(grpc_chttp2_transport* t,
|
53
44
|
int is_header);
|
54
45
|
|
55
|
-
static grpc_error* parse_frame_slice(
|
56
|
-
grpc_chttp2_transport* t, grpc_slice slice,
|
46
|
+
static grpc_error* parse_frame_slice(grpc_chttp2_transport* t, grpc_slice slice,
|
57
47
|
int is_last);
|
58
48
|
|
59
|
-
grpc_error* grpc_chttp2_perform_read(
|
60
|
-
grpc_chttp2_transport* t,
|
49
|
+
grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
61
50
|
grpc_slice slice) {
|
62
51
|
uint8_t* beg = GRPC_SLICE_START_PTR(slice);
|
63
52
|
uint8_t* end = GRPC_SLICE_END_PTR(slice);
|
@@ -182,12 +171,12 @@ grpc_error* grpc_chttp2_perform_read(grpc_exec_ctx* exec_ctx,
|
|
182
171
|
GPR_ASSERT(cur < end);
|
183
172
|
t->incoming_stream_id |= ((uint32_t)*cur);
|
184
173
|
t->deframe_state = GRPC_DTS_FRAME;
|
185
|
-
err = init_frame_parser(
|
174
|
+
err = init_frame_parser(t);
|
186
175
|
if (err != GRPC_ERROR_NONE) {
|
187
176
|
return err;
|
188
177
|
}
|
189
178
|
if (t->incoming_frame_size == 0) {
|
190
|
-
err = parse_frame_slice(
|
179
|
+
err = parse_frame_slice(t, grpc_empty_slice(), 1);
|
191
180
|
if (err != GRPC_ERROR_NONE) {
|
192
181
|
return err;
|
193
182
|
}
|
@@ -197,9 +186,10 @@ grpc_error* grpc_chttp2_perform_read(grpc_exec_ctx* exec_ctx,
|
|
197
186
|
return GRPC_ERROR_NONE;
|
198
187
|
}
|
199
188
|
goto dts_fh_0; /* loop */
|
200
|
-
} else if (t->
|
201
|
-
t->
|
202
|
-
|
189
|
+
} else if (t->flow_control->flow_control_enabled() &&
|
190
|
+
t->incoming_frame_size >
|
191
|
+
t->settings[GRPC_ACKED_SETTINGS]
|
192
|
+
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
|
203
193
|
char* msg;
|
204
194
|
gpr_asprintf(&msg, "Frame size %d is larger than max frame size %d",
|
205
195
|
t->incoming_frame_size,
|
@@ -217,7 +207,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_exec_ctx* exec_ctx,
|
|
217
207
|
GPR_ASSERT(cur < end);
|
218
208
|
if ((uint32_t)(end - cur) == t->incoming_frame_size) {
|
219
209
|
err =
|
220
|
-
parse_frame_slice(
|
210
|
+
parse_frame_slice(t,
|
221
211
|
grpc_slice_sub_no_ref(slice, (size_t)(cur - beg),
|
222
212
|
(size_t)(end - beg)),
|
223
213
|
1);
|
@@ -230,7 +220,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_exec_ctx* exec_ctx,
|
|
230
220
|
} else if ((uint32_t)(end - cur) > t->incoming_frame_size) {
|
231
221
|
size_t cur_offset = (size_t)(cur - beg);
|
232
222
|
err = parse_frame_slice(
|
233
|
-
|
223
|
+
t,
|
234
224
|
grpc_slice_sub_no_ref(slice, cur_offset,
|
235
225
|
cur_offset + t->incoming_frame_size),
|
236
226
|
1);
|
@@ -242,7 +232,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_exec_ctx* exec_ctx,
|
|
242
232
|
goto dts_fh_0; /* loop */
|
243
233
|
} else {
|
244
234
|
err =
|
245
|
-
parse_frame_slice(
|
235
|
+
parse_frame_slice(t,
|
246
236
|
grpc_slice_sub_no_ref(slice, (size_t)(cur - beg),
|
247
237
|
(size_t)(end - beg)),
|
248
238
|
0);
|
@@ -258,8 +248,7 @@ grpc_error* grpc_chttp2_perform_read(grpc_exec_ctx* exec_ctx,
|
|
258
248
|
GPR_UNREACHABLE_CODE(return nullptr);
|
259
249
|
}
|
260
250
|
|
261
|
-
static grpc_error* init_frame_parser(
|
262
|
-
grpc_chttp2_transport* t) {
|
251
|
+
static grpc_error* init_frame_parser(grpc_chttp2_transport* t) {
|
263
252
|
if (t->is_first_frame &&
|
264
253
|
t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) {
|
265
254
|
char* msg;
|
@@ -291,46 +280,43 @@ static grpc_error* init_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
291
280
|
gpr_free(msg);
|
292
281
|
return err;
|
293
282
|
}
|
294
|
-
return init_header_frame_parser(
|
283
|
+
return init_header_frame_parser(t, 1);
|
295
284
|
}
|
296
285
|
switch (t->incoming_frame_type) {
|
297
286
|
case GRPC_CHTTP2_FRAME_DATA:
|
298
|
-
return init_data_frame_parser(
|
287
|
+
return init_data_frame_parser(t);
|
299
288
|
case GRPC_CHTTP2_FRAME_HEADER:
|
300
|
-
return init_header_frame_parser(
|
289
|
+
return init_header_frame_parser(t, 0);
|
301
290
|
case GRPC_CHTTP2_FRAME_CONTINUATION:
|
302
291
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
303
292
|
"Unexpected CONTINUATION frame");
|
304
293
|
case GRPC_CHTTP2_FRAME_RST_STREAM:
|
305
|
-
return init_rst_stream_parser(
|
294
|
+
return init_rst_stream_parser(t);
|
306
295
|
case GRPC_CHTTP2_FRAME_SETTINGS:
|
307
|
-
return init_settings_frame_parser(
|
296
|
+
return init_settings_frame_parser(t);
|
308
297
|
case GRPC_CHTTP2_FRAME_WINDOW_UPDATE:
|
309
|
-
return init_window_update_frame_parser(
|
298
|
+
return init_window_update_frame_parser(t);
|
310
299
|
case GRPC_CHTTP2_FRAME_PING:
|
311
|
-
return init_ping_parser(
|
300
|
+
return init_ping_parser(t);
|
312
301
|
case GRPC_CHTTP2_FRAME_GOAWAY:
|
313
|
-
return init_goaway_parser(
|
302
|
+
return init_goaway_parser(t);
|
314
303
|
default:
|
315
304
|
if (grpc_http_trace.enabled()) {
|
316
305
|
gpr_log(GPR_ERROR, "Unknown frame type %02x", t->incoming_frame_type);
|
317
306
|
}
|
318
|
-
return init_skip_frame_parser(
|
307
|
+
return init_skip_frame_parser(t, 0);
|
319
308
|
}
|
320
309
|
}
|
321
310
|
|
322
|
-
static grpc_error* skip_parser(
|
323
|
-
|
324
|
-
|
311
|
+
static grpc_error* skip_parser(void* parser, grpc_chttp2_transport* t,
|
312
|
+
grpc_chttp2_stream* s, grpc_slice slice,
|
313
|
+
int is_last) {
|
325
314
|
return GRPC_ERROR_NONE;
|
326
315
|
}
|
327
316
|
|
328
|
-
static void skip_header(
|
329
|
-
GRPC_MDELEM_UNREF(exec_ctx, md);
|
330
|
-
}
|
317
|
+
static void skip_header(void* tp, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); }
|
331
318
|
|
332
|
-
static grpc_error* init_skip_frame_parser(
|
333
|
-
grpc_chttp2_transport* t,
|
319
|
+
static grpc_error* init_skip_frame_parser(grpc_chttp2_transport* t,
|
334
320
|
int is_header) {
|
335
321
|
if (is_header) {
|
336
322
|
uint8_t is_eoh = t->expect_continuation_stream_id != 0;
|
@@ -346,14 +332,11 @@ static grpc_error* init_skip_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
346
332
|
return GRPC_ERROR_NONE;
|
347
333
|
}
|
348
334
|
|
349
|
-
void grpc_chttp2_parsing_become_skip_parser(
|
350
|
-
|
351
|
-
init_skip_frame_parser(exec_ctx, t,
|
352
|
-
t->parser == grpc_chttp2_header_parser_parse);
|
335
|
+
void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
|
336
|
+
init_skip_frame_parser(t, t->parser == grpc_chttp2_header_parser_parse);
|
353
337
|
}
|
354
338
|
|
355
|
-
static grpc_error* init_data_frame_parser(
|
356
|
-
grpc_chttp2_transport* t) {
|
339
|
+
static grpc_error* init_data_frame_parser(grpc_chttp2_transport* t) {
|
357
340
|
grpc_chttp2_stream* s =
|
358
341
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
359
342
|
grpc_error* err = GRPC_ERROR_NONE;
|
@@ -365,17 +348,17 @@ static grpc_error* init_data_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
365
348
|
err = s->flow_control->RecvData(t->incoming_frame_size);
|
366
349
|
action = s->flow_control->MakeAction();
|
367
350
|
}
|
368
|
-
grpc_chttp2_act_on_flowctl_action(
|
351
|
+
grpc_chttp2_act_on_flowctl_action(action, t, s);
|
369
352
|
if (err != GRPC_ERROR_NONE) {
|
370
353
|
goto error_handler;
|
371
354
|
}
|
372
355
|
if (s == nullptr) {
|
373
|
-
return init_skip_frame_parser(
|
356
|
+
return init_skip_frame_parser(t, 0);
|
374
357
|
}
|
375
358
|
s->received_bytes += t->incoming_frame_size;
|
376
359
|
s->stats.incoming.framing_bytes += 9;
|
377
360
|
if (err == GRPC_ERROR_NONE && s->read_closed) {
|
378
|
-
return init_skip_frame_parser(
|
361
|
+
return init_skip_frame_parser(t, 0);
|
379
362
|
}
|
380
363
|
if (err == GRPC_ERROR_NONE) {
|
381
364
|
err = grpc_chttp2_data_parser_begin_frame(
|
@@ -394,13 +377,13 @@ error_handler:
|
|
394
377
|
} else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, nullptr)) {
|
395
378
|
/* handle stream errors by closing the stream */
|
396
379
|
if (s != nullptr) {
|
397
|
-
grpc_chttp2_mark_stream_closed(
|
380
|
+
grpc_chttp2_mark_stream_closed(t, s, true, false, err);
|
398
381
|
}
|
399
382
|
grpc_slice_buffer_add(
|
400
383
|
&t->qbuf, grpc_chttp2_rst_stream_create(t->incoming_stream_id,
|
401
384
|
GRPC_HTTP2_PROTOCOL_ERROR,
|
402
385
|
&s->stats.outgoing));
|
403
|
-
return init_skip_frame_parser(
|
386
|
+
return init_skip_frame_parser(t, 0);
|
404
387
|
} else {
|
405
388
|
return err;
|
406
389
|
}
|
@@ -408,8 +391,7 @@ error_handler:
|
|
408
391
|
|
409
392
|
static void free_timeout(void* p) { gpr_free(p); }
|
410
393
|
|
411
|
-
static void on_initial_header(
|
412
|
-
grpc_mdelem md) {
|
394
|
+
static void on_initial_header(void* tp, grpc_mdelem md) {
|
413
395
|
grpc_chttp2_transport* t = (grpc_chttp2_transport*)tp;
|
414
396
|
grpc_chttp2_stream* s = t->incoming_stream;
|
415
397
|
|
@@ -455,9 +437,9 @@ static void on_initial_header(grpc_exec_ctx* exec_ctx, void* tp,
|
|
455
437
|
}
|
456
438
|
if (timeout != GRPC_MILLIS_INF_FUTURE) {
|
457
439
|
grpc_chttp2_incoming_metadata_buffer_set_deadline(
|
458
|
-
&s->metadata_buffer[0],
|
440
|
+
&s->metadata_buffer[0], grpc_core::ExecCtx::Get()->Now() + timeout);
|
459
441
|
}
|
460
|
-
GRPC_MDELEM_UNREF(
|
442
|
+
GRPC_MDELEM_UNREF(md);
|
461
443
|
} else {
|
462
444
|
const size_t new_size = s->metadata_buffer[0].size + GRPC_MDELEM_LENGTH(md);
|
463
445
|
const size_t metadata_size_limit =
|
@@ -469,22 +451,22 @@ static void on_initial_header(grpc_exec_ctx* exec_ctx, void* tp,
|
|
469
451
|
" vs. %" PRIuPTR ")",
|
470
452
|
new_size, metadata_size_limit);
|
471
453
|
grpc_chttp2_cancel_stream(
|
472
|
-
|
454
|
+
t, s,
|
473
455
|
grpc_error_set_int(
|
474
456
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
475
457
|
"received initial metadata size exceeds limit"),
|
476
458
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
|
477
|
-
grpc_chttp2_parsing_become_skip_parser(
|
459
|
+
grpc_chttp2_parsing_become_skip_parser(t);
|
478
460
|
s->seen_error = true;
|
479
|
-
GRPC_MDELEM_UNREF(
|
461
|
+
GRPC_MDELEM_UNREF(md);
|
480
462
|
} else {
|
481
|
-
grpc_error* error =
|
482
|
-
|
463
|
+
grpc_error* error =
|
464
|
+
grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[0], md);
|
483
465
|
if (error != GRPC_ERROR_NONE) {
|
484
|
-
grpc_chttp2_cancel_stream(
|
485
|
-
grpc_chttp2_parsing_become_skip_parser(
|
466
|
+
grpc_chttp2_cancel_stream(t, s, error);
|
467
|
+
grpc_chttp2_parsing_become_skip_parser(t);
|
486
468
|
s->seen_error = true;
|
487
|
-
GRPC_MDELEM_UNREF(
|
469
|
+
GRPC_MDELEM_UNREF(md);
|
488
470
|
}
|
489
471
|
}
|
490
472
|
}
|
@@ -492,8 +474,7 @@ static void on_initial_header(grpc_exec_ctx* exec_ctx, void* tp,
|
|
492
474
|
GPR_TIMER_END("on_initial_header", 0);
|
493
475
|
}
|
494
476
|
|
495
|
-
static void on_trailing_header(
|
496
|
-
grpc_mdelem md) {
|
477
|
+
static void on_trailing_header(void* tp, grpc_mdelem md) {
|
497
478
|
grpc_chttp2_transport* t = (grpc_chttp2_transport*)tp;
|
498
479
|
grpc_chttp2_stream* s = t->incoming_stream;
|
499
480
|
|
@@ -527,30 +508,29 @@ static void on_trailing_header(grpc_exec_ctx* exec_ctx, void* tp,
|
|
527
508
|
" vs. %" PRIuPTR ")",
|
528
509
|
new_size, metadata_size_limit);
|
529
510
|
grpc_chttp2_cancel_stream(
|
530
|
-
|
511
|
+
t, s,
|
531
512
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
532
513
|
"received trailing metadata size exceeds limit"),
|
533
514
|
GRPC_ERROR_INT_GRPC_STATUS,
|
534
515
|
GRPC_STATUS_RESOURCE_EXHAUSTED));
|
535
|
-
grpc_chttp2_parsing_become_skip_parser(
|
516
|
+
grpc_chttp2_parsing_become_skip_parser(t);
|
536
517
|
s->seen_error = true;
|
537
|
-
GRPC_MDELEM_UNREF(
|
518
|
+
GRPC_MDELEM_UNREF(md);
|
538
519
|
} else {
|
539
|
-
grpc_error* error =
|
540
|
-
|
520
|
+
grpc_error* error =
|
521
|
+
grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[1], md);
|
541
522
|
if (error != GRPC_ERROR_NONE) {
|
542
|
-
grpc_chttp2_cancel_stream(
|
543
|
-
grpc_chttp2_parsing_become_skip_parser(
|
523
|
+
grpc_chttp2_cancel_stream(t, s, error);
|
524
|
+
grpc_chttp2_parsing_become_skip_parser(t);
|
544
525
|
s->seen_error = true;
|
545
|
-
GRPC_MDELEM_UNREF(
|
526
|
+
GRPC_MDELEM_UNREF(md);
|
546
527
|
}
|
547
528
|
}
|
548
529
|
|
549
530
|
GPR_TIMER_END("on_trailing_header", 0);
|
550
531
|
}
|
551
532
|
|
552
|
-
static grpc_error* init_header_frame_parser(
|
553
|
-
grpc_chttp2_transport* t,
|
533
|
+
static grpc_error* init_header_frame_parser(grpc_chttp2_transport* t,
|
554
534
|
int is_continuation) {
|
555
535
|
uint8_t is_eoh =
|
556
536
|
(t->incoming_frame_flags & GRPC_CHTTP2_DATA_FLAG_END_HEADERS) != 0;
|
@@ -580,7 +560,7 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
580
560
|
GRPC_CHTTP2_IF_TRACING(
|
581
561
|
gpr_log(GPR_ERROR,
|
582
562
|
"grpc_chttp2_stream disbanded before CONTINUATION received"));
|
583
|
-
return init_skip_frame_parser(
|
563
|
+
return init_skip_frame_parser(t, 1);
|
584
564
|
}
|
585
565
|
if (t->is_client) {
|
586
566
|
if ((t->incoming_stream_id & 1) &&
|
@@ -590,7 +570,7 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
590
570
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
591
571
|
GPR_ERROR, "ignoring new grpc_chttp2_stream creation on client"));
|
592
572
|
}
|
593
|
-
grpc_error* err = init_skip_frame_parser(
|
573
|
+
grpc_error* err = init_skip_frame_parser(t, 1);
|
594
574
|
if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_HAS_PRIORITY) {
|
595
575
|
grpc_chttp2_hpack_parser_set_has_priority(&t->hpack_parser);
|
596
576
|
}
|
@@ -602,13 +582,13 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
602
582
|
"last grpc_chttp2_stream "
|
603
583
|
"id=%d, new grpc_chttp2_stream id=%d",
|
604
584
|
t->last_new_stream_id, t->incoming_stream_id));
|
605
|
-
return init_skip_frame_parser(
|
585
|
+
return init_skip_frame_parser(t, 1);
|
606
586
|
} else if ((t->incoming_stream_id & 1) == 0) {
|
607
587
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
608
588
|
GPR_ERROR,
|
609
589
|
"ignoring grpc_chttp2_stream with non-client generated index %d",
|
610
590
|
t->incoming_stream_id));
|
611
|
-
return init_skip_frame_parser(
|
591
|
+
return init_skip_frame_parser(t, 1);
|
612
592
|
} else if (grpc_chttp2_stream_map_size(&t->stream_map) >=
|
613
593
|
t->settings[GRPC_ACKED_SETTINGS]
|
614
594
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS]) {
|
@@ -616,11 +596,11 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
616
596
|
}
|
617
597
|
t->last_new_stream_id = t->incoming_stream_id;
|
618
598
|
s = t->incoming_stream =
|
619
|
-
grpc_chttp2_parsing_accept_stream(
|
599
|
+
grpc_chttp2_parsing_accept_stream(t, t->incoming_stream_id);
|
620
600
|
if (s == nullptr) {
|
621
601
|
GRPC_CHTTP2_IF_TRACING(
|
622
602
|
gpr_log(GPR_ERROR, "grpc_chttp2_stream not accepted"));
|
623
|
-
return init_skip_frame_parser(
|
603
|
+
return init_skip_frame_parser(t, 1);
|
624
604
|
}
|
625
605
|
} else {
|
626
606
|
t->incoming_stream = s;
|
@@ -631,7 +611,7 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
631
611
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
632
612
|
GPR_ERROR, "skipping already closed grpc_chttp2_stream header"));
|
633
613
|
t->incoming_stream = nullptr;
|
634
|
-
return init_skip_frame_parser(
|
614
|
+
return init_skip_frame_parser(t, 1);
|
635
615
|
}
|
636
616
|
t->parser = grpc_chttp2_header_parser_parse;
|
637
617
|
t->parser_data = &t->hpack_parser;
|
@@ -656,7 +636,7 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
656
636
|
break;
|
657
637
|
case 2:
|
658
638
|
gpr_log(GPR_ERROR, "too many header frames received");
|
659
|
-
return init_skip_frame_parser(
|
639
|
+
return init_skip_frame_parser(t, 1);
|
660
640
|
}
|
661
641
|
t->hpack_parser.on_header_user_data = t;
|
662
642
|
t->hpack_parser.is_boundary = is_eoh;
|
@@ -668,8 +648,7 @@ static grpc_error* init_header_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
668
648
|
return GRPC_ERROR_NONE;
|
669
649
|
}
|
670
650
|
|
671
|
-
static grpc_error* init_window_update_frame_parser(
|
672
|
-
grpc_chttp2_transport* t) {
|
651
|
+
static grpc_error* init_window_update_frame_parser(grpc_chttp2_transport* t) {
|
673
652
|
grpc_error* err = grpc_chttp2_window_update_parser_begin_frame(
|
674
653
|
&t->simple.window_update, t->incoming_frame_size,
|
675
654
|
t->incoming_frame_flags);
|
@@ -678,7 +657,7 @@ static grpc_error* init_window_update_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
678
657
|
grpc_chttp2_stream* s = t->incoming_stream =
|
679
658
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
680
659
|
if (s == nullptr) {
|
681
|
-
return init_skip_frame_parser(
|
660
|
+
return init_skip_frame_parser(t, 0);
|
682
661
|
}
|
683
662
|
s->stats.incoming.framing_bytes += 9;
|
684
663
|
}
|
@@ -687,8 +666,7 @@ static grpc_error* init_window_update_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
687
666
|
return GRPC_ERROR_NONE;
|
688
667
|
}
|
689
668
|
|
690
|
-
static grpc_error* init_ping_parser(
|
691
|
-
grpc_chttp2_transport* t) {
|
669
|
+
static grpc_error* init_ping_parser(grpc_chttp2_transport* t) {
|
692
670
|
grpc_error* err = grpc_chttp2_ping_parser_begin_frame(
|
693
671
|
&t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags);
|
694
672
|
if (err != GRPC_ERROR_NONE) return err;
|
@@ -697,15 +675,14 @@ static grpc_error* init_ping_parser(grpc_exec_ctx* exec_ctx,
|
|
697
675
|
return GRPC_ERROR_NONE;
|
698
676
|
}
|
699
677
|
|
700
|
-
static grpc_error* init_rst_stream_parser(
|
701
|
-
grpc_chttp2_transport* t) {
|
678
|
+
static grpc_error* init_rst_stream_parser(grpc_chttp2_transport* t) {
|
702
679
|
grpc_error* err = grpc_chttp2_rst_stream_parser_begin_frame(
|
703
680
|
&t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags);
|
704
681
|
if (err != GRPC_ERROR_NONE) return err;
|
705
682
|
grpc_chttp2_stream* s = t->incoming_stream =
|
706
683
|
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
|
707
684
|
if (!t->incoming_stream) {
|
708
|
-
return init_skip_frame_parser(
|
685
|
+
return init_skip_frame_parser(t, 0);
|
709
686
|
}
|
710
687
|
s->stats.incoming.framing_bytes += 9;
|
711
688
|
t->parser = grpc_chttp2_rst_stream_parser_parse;
|
@@ -713,8 +690,7 @@ static grpc_error* init_rst_stream_parser(grpc_exec_ctx* exec_ctx,
|
|
713
690
|
return GRPC_ERROR_NONE;
|
714
691
|
}
|
715
692
|
|
716
|
-
static grpc_error* init_goaway_parser(
|
717
|
-
grpc_chttp2_transport* t) {
|
693
|
+
static grpc_error* init_goaway_parser(grpc_chttp2_transport* t) {
|
718
694
|
grpc_error* err = grpc_chttp2_goaway_parser_begin_frame(
|
719
695
|
&t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags);
|
720
696
|
if (err != GRPC_ERROR_NONE) return err;
|
@@ -723,8 +699,7 @@ static grpc_error* init_goaway_parser(grpc_exec_ctx* exec_ctx,
|
|
723
699
|
return GRPC_ERROR_NONE;
|
724
700
|
}
|
725
701
|
|
726
|
-
static grpc_error* init_settings_frame_parser(
|
727
|
-
grpc_chttp2_transport* t) {
|
702
|
+
static grpc_error* init_settings_frame_parser(grpc_chttp2_transport* t) {
|
728
703
|
if (t->incoming_stream_id != 0) {
|
729
704
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
730
705
|
"Settings frame received for grpc_chttp2_stream");
|
@@ -740,7 +715,7 @@ static grpc_error* init_settings_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
740
715
|
memcpy(t->settings[GRPC_ACKED_SETTINGS], t->settings[GRPC_SENT_SETTINGS],
|
741
716
|
GRPC_CHTTP2_NUM_SETTINGS * sizeof(uint32_t));
|
742
717
|
grpc_chttp2_hptbl_set_max_bytes(
|
743
|
-
|
718
|
+
&t->hpack_parser.table,
|
744
719
|
t->settings[GRPC_ACKED_SETTINGS]
|
745
720
|
[GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
|
746
721
|
t->sent_local_settings = 0;
|
@@ -750,11 +725,10 @@ static grpc_error* init_settings_frame_parser(grpc_exec_ctx* exec_ctx,
|
|
750
725
|
return GRPC_ERROR_NONE;
|
751
726
|
}
|
752
727
|
|
753
|
-
static grpc_error* parse_frame_slice(
|
754
|
-
grpc_chttp2_transport* t, grpc_slice slice,
|
728
|
+
static grpc_error* parse_frame_slice(grpc_chttp2_transport* t, grpc_slice slice,
|
755
729
|
int is_last) {
|
756
730
|
grpc_chttp2_stream* s = t->incoming_stream;
|
757
|
-
grpc_error* err = t->parser(
|
731
|
+
grpc_error* err = t->parser(t->parser_data, t, s, slice, is_last);
|
758
732
|
if (err == GRPC_ERROR_NONE) {
|
759
733
|
return err;
|
760
734
|
} else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, nullptr)) {
|
@@ -762,7 +736,7 @@ static grpc_error* parse_frame_slice(grpc_exec_ctx* exec_ctx,
|
|
762
736
|
const char* msg = grpc_error_string(err);
|
763
737
|
gpr_log(GPR_ERROR, "%s", msg);
|
764
738
|
}
|
765
|
-
grpc_chttp2_parsing_become_skip_parser(
|
739
|
+
grpc_chttp2_parsing_become_skip_parser(t);
|
766
740
|
if (s) {
|
767
741
|
s->forced_close_error = err;
|
768
742
|
grpc_slice_buffer_add(
|