grpc 1.18.0 → 1.22.0
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 +4731 -7404
- data/etc/roots.pem +146 -0
- data/include/grpc/grpc.h +11 -6
- data/include/grpc/grpc_security.h +297 -4
- data/include/grpc/grpc_security_constants.h +1 -1
- data/include/grpc/impl/codegen/byte_buffer.h +13 -0
- data/include/grpc/impl/codegen/gpr_types.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +30 -7
- data/include/grpc/impl/codegen/port_platform.h +88 -7
- data/include/grpc/impl/codegen/slice.h +2 -22
- data/include/grpc/impl/codegen/status.h +2 -1
- data/include/grpc/impl/codegen/sync_posix.h +18 -0
- data/include/grpc/slice.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +21 -16
- data/src/core/ext/filters/client_channel/backup_poller.h +8 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +3 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +2435 -1557
- data/src/core/ext/filters/client_channel/client_channel.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -89
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +8 -33
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +22 -34
- data/src/core/ext/filters/client_channel/client_channel_factory.h +19 -38
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -11
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +59 -55
- data/src/core/ext/filters/client_channel/health/health_check_client.h +20 -9
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +146 -157
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +29 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +844 -859
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +16 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +185 -312
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +143 -375
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +192 -245
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +1554 -955
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_secure.cc +0 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +115 -22
- data/src/core/ext/filters/client_channel/lb_policy.h +260 -129
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +5 -2
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +107 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -3
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +56 -0
- data/src/core/ext/filters/client_channel/parse_address.cc +24 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +121 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +84 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +179 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +111 -47
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +7 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +39 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +0 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -64
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
- data/src/core/{lib/iomgr/network_status_tracker.cc → ext/filters/client_channel/resolver/dns/dns_resolver_selection.h} +8 -15
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +36 -82
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +111 -72
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +13 -8
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +28 -63
- data/src/core/ext/filters/client_channel/resolver.cc +54 -1
- data/src/core/ext/filters/client_channel/resolver.h +52 -23
- data/src/core/ext/filters/client_channel/resolver_factory.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_registry.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver_registry.h +5 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +368 -241
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +58 -76
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +543 -0
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +139 -0
- data/src/core/ext/filters/client_channel/server_address.cc +4 -54
- data/src/core/ext/filters/client_channel/server_address.h +1 -13
- data/src/core/ext/filters/client_channel/service_config.cc +329 -0
- data/src/core/ext/filters/client_channel/service_config.h +205 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +803 -838
- data/src/core/ext/filters/client_channel/subchannel.h +295 -128
- data/src/core/ext/filters/client_channel/subchannel_interface.h +113 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +94 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/http/client/http_client_filter.cc +7 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +4 -3
- data/src/core/ext/filters/http/server/http_server_filter.cc +18 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +5 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +119 -77
- data/src/core/ext/filters/message_size/message_size_filter.h +33 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +13 -12
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +45 -47
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +134 -143
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +68 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +4 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +9 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +156 -94
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -37
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +74 -55
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +33 -11
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +7 -14
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -1
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +9 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +43 -30
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -70
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +70 -33
- data/src/core/ext/transport/inproc/inproc_transport.cc +26 -18
- data/src/core/lib/channel/channel_args.cc +2 -101
- data/src/core/lib/channel/channel_args.h +3 -37
- data/src/core/lib/channel/channel_stack.h +10 -6
- data/src/core/lib/channel/channel_trace.cc +4 -4
- data/src/core/lib/channel/channel_trace.h +4 -4
- data/src/core/lib/channel/channelz.cc +168 -38
- data/src/core/lib/channel/channelz.h +40 -44
- data/src/core/lib/channel/channelz_registry.cc +75 -107
- data/src/core/lib/channel/channelz_registry.h +10 -28
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/handshaker.cc +151 -218
- data/src/core/lib/channel/handshaker.h +110 -101
- data/src/core/lib/channel/handshaker_factory.h +11 -19
- data/src/core/lib/channel/handshaker_registry.cc +67 -51
- data/src/core/lib/channel/handshaker_registry.h +21 -16
- data/src/core/lib/compression/algorithm_metadata.h +3 -3
- data/src/core/lib/compression/compression.cc +14 -9
- data/src/core/lib/compression/compression_args.cc +127 -0
- data/src/core/lib/compression/compression_args.h +55 -0
- data/src/core/lib/compression/compression_internal.cc +16 -12
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/stream_compression.cc +3 -2
- data/src/core/lib/compression/stream_compression.h +2 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
- data/src/core/lib/debug/trace.cc +13 -7
- data/src/core/lib/debug/trace.h +14 -1
- data/src/core/lib/gpr/arena.h +13 -9
- data/src/core/lib/gpr/cpu_posix.cc +5 -3
- data/src/core/lib/gpr/env.h +3 -6
- data/src/core/lib/gpr/env_linux.cc +6 -1
- data/src/core/lib/gpr/env_posix.cc +5 -0
- data/src/core/lib/gpr/env_windows.cc +7 -5
- data/src/core/lib/gpr/log.cc +9 -13
- data/src/core/lib/gpr/log_posix.cc +2 -1
- data/src/core/lib/gpr/string.cc +20 -7
- data/src/core/lib/gpr/string.h +10 -3
- data/src/core/lib/gpr/sync_posix.cc +65 -4
- data/src/core/lib/gpr/time.cc +8 -0
- data/src/core/lib/gpr/time_posix.cc +21 -2
- data/src/core/lib/gprpp/arena.cc +103 -0
- data/src/core/lib/gprpp/arena.h +121 -0
- data/src/core/lib/gprpp/atomic.h +75 -5
- data/src/core/lib/gprpp/fork.cc +13 -32
- data/src/core/lib/gprpp/fork.h +5 -1
- data/src/core/lib/gprpp/global_config.h +96 -0
- data/src/core/lib/gprpp/global_config_custom.h +29 -0
- data/src/core/lib/gprpp/global_config_env.cc +135 -0
- data/src/core/lib/gprpp/global_config_env.h +131 -0
- data/src/core/lib/gprpp/global_config_generic.h +44 -0
- data/src/core/lib/gprpp/inlined_vector.h +8 -0
- data/src/core/lib/gprpp/map.h +436 -0
- data/src/core/lib/gprpp/memory.h +2 -2
- data/src/core/lib/gprpp/optional.h +48 -0
- data/src/core/lib/gprpp/orphanable.h +6 -5
- data/src/core/lib/gprpp/{mutex_lock.h → pair.h} +15 -19
- data/src/core/lib/gprpp/ref_counted.h +36 -17
- data/src/core/lib/gprpp/sync.h +126 -0
- data/src/core/lib/gprpp/thd.h +42 -7
- data/src/core/lib/gprpp/thd_posix.cc +31 -13
- data/src/core/lib/gprpp/thd_windows.cc +47 -34
- data/src/core/lib/http/httpcli.cc +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +13 -15
- data/src/core/lib/http/parser.cc +3 -2
- data/src/core/lib/http/parser.h +2 -1
- data/src/core/lib/iomgr/buffer_list.cc +182 -24
- data/src/core/lib/iomgr/buffer_list.h +72 -10
- data/src/core/lib/iomgr/call_combiner.cc +84 -90
- data/src/core/lib/iomgr/call_combiner.h +75 -82
- data/src/core/lib/iomgr/cfstream_handle.cc +203 -0
- data/src/core/lib/iomgr/cfstream_handle.h +86 -0
- data/src/core/lib/iomgr/combiner.cc +11 -3
- data/src/core/lib/iomgr/combiner.h +1 -1
- data/src/core/lib/iomgr/endpoint.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +3 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +375 -0
- data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/error.cc +21 -17
- data/src/core/lib/iomgr/error.h +36 -6
- data/src/core/lib/iomgr/error_cfstream.cc +52 -0
- data/src/core/lib/iomgr/error_cfstream.h +31 -0
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +44 -28
- data/src/core/lib/iomgr/ev_epollex_linux.cc +173 -194
- data/src/core/lib/iomgr/ev_poll_posix.cc +16 -487
- data/src/core/lib/iomgr/ev_posix.cc +29 -19
- data/src/core/lib/iomgr/ev_posix.h +19 -3
- data/src/core/lib/iomgr/ev_windows.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -0
- data/src/core/lib/iomgr/exec_ctx.h +137 -8
- data/src/core/lib/iomgr/executor.cc +147 -95
- data/src/core/lib/iomgr/executor.h +55 -49
- data/src/core/lib/iomgr/fork_posix.cc +6 -5
- data/src/core/lib/{gprpp/atomic_with_std.h → iomgr/grpc_if_nametoindex.h} +8 -13
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
- data/src/core/lib/iomgr/{network_status_tracker.h → grpc_if_nametoindex_unsupported.cc} +15 -9
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.h +105 -3
- data/src/core/lib/iomgr/iomgr.cc +20 -13
- data/src/core/lib/iomgr/iomgr.h +15 -0
- data/src/core/lib/iomgr/iomgr_custom.cc +17 -3
- data/src/core/lib/iomgr/iomgr_custom.h +2 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +10 -0
- data/src/core/lib/iomgr/iomgr_internal.h +12 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +19 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +93 -0
- data/src/core/lib/iomgr/iomgr_windows.cc +18 -2
- data/src/core/lib/iomgr/lockfree_event.cc +4 -4
- data/src/core/lib/iomgr/port.h +35 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +2 -1
- data/src/core/lib/iomgr/resource_quota.cc +40 -37
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +6 -2
- data/src/core/lib/iomgr/socket_windows.cc +19 -0
- data/src/core/lib/iomgr/socket_windows.h +8 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +216 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
- data/src/core/lib/iomgr/tcp_custom.cc +10 -14
- data/src/core/lib/iomgr/tcp_posix.cc +256 -140
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +24 -0
- data/src/core/lib/iomgr/tcp_server_custom.cc +14 -12
- data/src/core/lib/iomgr/tcp_server_posix.cc +86 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -11
- data/src/core/lib/iomgr/tcp_uv.cc +5 -7
- data/src/core/lib/iomgr/tcp_windows.cc +8 -14
- data/src/core/lib/iomgr/timer.h +2 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -16
- data/src/core/lib/iomgr/timer_manager.cc +20 -11
- data/src/core/lib/iomgr/udp_server.cc +8 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -19
- data/src/core/lib/json/json.cc +1 -4
- data/src/core/lib/profiling/basic_timers.cc +10 -4
- data/src/core/lib/security/context/security_context.cc +6 -7
- data/src/core/lib/security/context/security_context.h +3 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -0
- data/src/core/lib/security/credentials/credentials.h +9 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +10 -6
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +3 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -8
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +192 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +210 -0
- data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +129 -0
- data/src/core/lib/security/credentials/tls/spiffe_credentials.h +62 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -8
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -12
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +7 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +10 -8
- data/src/core/lib/security/security_connector/security_connector.cc +0 -1
- data/src/core/lib/security/security_connector/security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +39 -38
- data/src/core/lib/security/security_connector/ssl_utils.cc +164 -26
- data/src/core/lib/security/security_connector/ssl_utils.h +70 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +426 -0
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +122 -0
- data/src/core/lib/security/transport/auth_filters.h +5 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +55 -50
- data/src/core/lib/security/transport/secure_endpoint.cc +6 -6
- data/src/core/lib/security/transport/security_handshaker.cc +271 -303
- data/src/core/lib/security/transport/security_handshaker.h +11 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -3
- data/src/core/lib/slice/b64.h +2 -2
- data/src/core/lib/slice/percent_encoding.cc +3 -3
- data/src/core/lib/slice/percent_encoding.h +3 -3
- data/src/core/lib/slice/slice.cc +174 -122
- data/src/core/lib/slice/slice_buffer.cc +54 -21
- data/src/core/lib/slice/slice_hash_table.h +4 -4
- data/src/core/lib/slice/slice_intern.cc +49 -107
- data/src/core/lib/slice/slice_internal.h +264 -3
- data/src/core/lib/slice/slice_string_helpers.cc +10 -1
- data/src/core/lib/slice/slice_string_helpers.h +3 -1
- data/src/core/lib/slice/slice_utils.h +50 -0
- data/src/core/lib/slice/slice_weak_hash_table.h +6 -6
- data/src/core/lib/surface/api_trace.h +1 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +17 -0
- data/src/core/lib/surface/call.cc +67 -46
- data/src/core/lib/surface/call.h +7 -2
- data/src/core/lib/surface/call_details.cc +0 -1
- data/src/core/lib/surface/channel.cc +89 -97
- data/src/core/lib/surface/channel.h +60 -6
- data/src/core/lib/surface/channel_init.h +5 -0
- data/src/core/lib/surface/completion_queue.cc +221 -216
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +82 -33
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +5 -7
- data/src/core/lib/surface/server.cc +42 -47
- data/src/core/lib/surface/validate_metadata.cc +14 -8
- data/src/core/lib/surface/validate_metadata.h +13 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.cc +3 -3
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/connectivity_state.cc +10 -40
- data/src/core/lib/transport/connectivity_state.h +0 -8
- data/src/core/lib/transport/error_utils.cc +12 -0
- data/src/core/lib/transport/metadata.cc +258 -267
- data/src/core/lib/transport/metadata.h +227 -16
- data/src/core/lib/transport/metadata_batch.cc +1 -1
- data/src/core/lib/transport/metadata_batch.h +1 -1
- data/src/core/lib/transport/static_metadata.cc +477 -399
- data/src/core/lib/transport/static_metadata.h +273 -182
- data/src/core/lib/transport/status_metadata.cc +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -1
- data/src/core/lib/transport/transport.cc +39 -72
- data/src/core/lib/transport/transport.h +59 -24
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -1
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +12 -10
- data/src/core/tsi/ssl_transport_security.h +24 -4
- data/src/ruby/bin/math_pb.rb +18 -16
- data/src/ruby/ext/grpc/extconf.rb +12 -4
- data/src/ruby/ext/grpc/rb_call_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_channel.c +14 -10
- data/src/ruby/ext/grpc/rb_channel_credentials.c +8 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +9 -7
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc.c +23 -24
- data/src/ruby/ext/grpc/rb_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +24 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -0
- data/src/ruby/ext/grpc/rb_server.c +8 -4
- data/src/ruby/lib/grpc/errors.rb +22 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +13 -10
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +18 -0
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +58 -56
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -0
- data/src/ruby/spec/errors_spec.rb +141 -0
- data/third_party/cares/cares/ares.h +12 -0
- data/third_party/cares/cares/ares_create_query.c +5 -1
- data/third_party/cares/cares/ares_data.c +74 -73
- data/third_party/cares/cares/ares_destroy.c +6 -1
- data/third_party/cares/cares/ares_gethostbyaddr.c +5 -5
- data/third_party/cares/cares/ares_gethostbyname.c +15 -4
- data/third_party/cares/cares/ares_getnameinfo.c +11 -0
- data/third_party/cares/cares/ares_init.c +274 -173
- data/third_party/cares/cares/ares_library_init.c +21 -3
- data/third_party/cares/cares/ares_options.c +6 -2
- data/third_party/cares/cares/ares_parse_naptr_reply.c +7 -6
- data/third_party/cares/cares/ares_parse_ptr_reply.c +4 -2
- data/third_party/cares/cares/ares_platform.c +7 -0
- data/third_party/cares/cares/ares_private.h +19 -11
- data/third_party/cares/cares/ares_process.c +27 -2
- data/third_party/cares/cares/ares_rules.h +1 -1
- data/third_party/cares/cares/ares_search.c +7 -0
- data/third_party/cares/cares/ares_send.c +6 -0
- data/third_party/cares/cares/ares_strsplit.c +174 -0
- data/third_party/cares/cares/ares_strsplit.h +43 -0
- data/third_party/cares/cares/ares_version.h +4 -4
- data/third_party/cares/cares/config-win32.h +1 -1
- data/third_party/cares/cares/inet_ntop.c +2 -3
- data/third_party/cares/config_darwin/ares_config.h +3 -0
- data/third_party/cares/config_freebsd/ares_config.h +3 -0
- data/third_party/cares/config_linux/ares_config.h +3 -0
- data/third_party/cares/config_openbsd/ares_config.h +3 -0
- metadata +83 -48
- data/src/core/ext/filters/client_channel/request_routing.cc +0 -936
- data/src/core/ext/filters/client_channel/request_routing.h +0 -177
- data/src/core/ext/filters/client_channel/subchannel_index.cc +0 -248
- data/src/core/ext/filters/client_channel/subchannel_index.h +0 -76
- data/src/core/lib/channel/handshaker_factory.cc +0 -42
- data/src/core/lib/gpr/arena.cc +0 -192
- data/src/core/lib/gprpp/atomic_with_atm.h +0 -57
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +0 -107
- data/src/core/lib/iomgr/wakeup_fd_cv.h +0 -69
- data/src/core/lib/transport/service_config.cc +0 -106
- data/src/core/lib/transport/service_config.h +0 -249
@@ -104,23 +104,21 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
104
104
|
uint8_t* end = nullptr;
|
105
105
|
uint8_t* cur = nullptr;
|
106
106
|
|
107
|
-
grpc_slice slice =
|
108
|
-
|
109
|
-
|
110
|
-
end = GRPC_SLICE_END_PTR(slice);
|
107
|
+
grpc_slice* slice = grpc_slice_buffer_peek_first(slices);
|
108
|
+
beg = GRPC_SLICE_START_PTR(*slice);
|
109
|
+
end = GRPC_SLICE_END_PTR(*slice);
|
111
110
|
cur = beg;
|
112
111
|
uint32_t message_flags;
|
113
|
-
char* msg;
|
114
112
|
|
115
113
|
if (cur == end) {
|
116
|
-
|
114
|
+
grpc_slice_buffer_remove_first(slices);
|
117
115
|
continue;
|
118
116
|
}
|
119
117
|
|
120
118
|
switch (p->state) {
|
121
119
|
case GRPC_CHTTP2_DATA_ERROR:
|
122
120
|
p->state = GRPC_CHTTP2_DATA_ERROR;
|
123
|
-
|
121
|
+
grpc_slice_buffer_remove_first(slices);
|
124
122
|
return GRPC_ERROR_REF(p->error);
|
125
123
|
case GRPC_CHTTP2_DATA_FH_0:
|
126
124
|
s->stats.incoming.framing_bytes++;
|
@@ -133,24 +131,25 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
133
131
|
p->is_frame_compressed = true; /* GPR_TRUE */
|
134
132
|
break;
|
135
133
|
default:
|
134
|
+
char* msg;
|
136
135
|
gpr_asprintf(&msg, "Bad GRPC frame type 0x%02x", p->frame_type);
|
137
136
|
p->error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
138
137
|
p->error = grpc_error_set_int(p->error, GRPC_ERROR_INT_STREAM_ID,
|
139
138
|
static_cast<intptr_t>(s->id));
|
140
139
|
gpr_free(msg);
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
140
|
+
p->error =
|
141
|
+
grpc_error_set_str(p->error, GRPC_ERROR_STR_RAW_BYTES,
|
142
|
+
grpc_dump_slice_to_slice(
|
143
|
+
*slice, GPR_DUMP_HEX | GPR_DUMP_ASCII));
|
145
144
|
p->error =
|
146
145
|
grpc_error_set_int(p->error, GRPC_ERROR_INT_OFFSET, cur - beg);
|
147
146
|
p->state = GRPC_CHTTP2_DATA_ERROR;
|
148
|
-
|
147
|
+
grpc_slice_buffer_remove_first(slices);
|
149
148
|
return GRPC_ERROR_REF(p->error);
|
150
149
|
}
|
151
150
|
if (++cur == end) {
|
152
151
|
p->state = GRPC_CHTTP2_DATA_FH_1;
|
153
|
-
|
152
|
+
grpc_slice_buffer_remove_first(slices);
|
154
153
|
continue;
|
155
154
|
}
|
156
155
|
/* fallthrough */
|
@@ -159,7 +158,7 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
159
158
|
p->frame_size = (static_cast<uint32_t>(*cur)) << 24;
|
160
159
|
if (++cur == end) {
|
161
160
|
p->state = GRPC_CHTTP2_DATA_FH_2;
|
162
|
-
|
161
|
+
grpc_slice_buffer_remove_first(slices);
|
163
162
|
continue;
|
164
163
|
}
|
165
164
|
/* fallthrough */
|
@@ -168,7 +167,7 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
168
167
|
p->frame_size |= (static_cast<uint32_t>(*cur)) << 16;
|
169
168
|
if (++cur == end) {
|
170
169
|
p->state = GRPC_CHTTP2_DATA_FH_3;
|
171
|
-
|
170
|
+
grpc_slice_buffer_remove_first(slices);
|
172
171
|
continue;
|
173
172
|
}
|
174
173
|
/* fallthrough */
|
@@ -177,7 +176,7 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
177
176
|
p->frame_size |= (static_cast<uint32_t>(*cur)) << 8;
|
178
177
|
if (++cur == end) {
|
179
178
|
p->state = GRPC_CHTTP2_DATA_FH_4;
|
180
|
-
|
179
|
+
grpc_slice_buffer_remove_first(slices);
|
181
180
|
continue;
|
182
181
|
}
|
183
182
|
/* fallthrough */
|
@@ -204,19 +203,18 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
204
203
|
p->state = GRPC_CHTTP2_DATA_FH_0;
|
205
204
|
}
|
206
205
|
s->pending_byte_stream = true;
|
207
|
-
|
208
206
|
if (cur != end) {
|
209
|
-
|
210
|
-
|
211
|
-
|
207
|
+
grpc_slice_buffer_sub_first(slices, static_cast<size_t>(cur - beg),
|
208
|
+
static_cast<size_t>(end - beg));
|
209
|
+
} else {
|
210
|
+
grpc_slice_buffer_remove_first(slices);
|
212
211
|
}
|
213
|
-
grpc_slice_unref_internal(slice);
|
214
212
|
return GRPC_ERROR_NONE;
|
215
213
|
case GRPC_CHTTP2_DATA_FRAME: {
|
216
214
|
GPR_ASSERT(p->parsing_frame != nullptr);
|
217
215
|
GPR_ASSERT(slice_out != nullptr);
|
218
216
|
if (cur == end) {
|
219
|
-
|
217
|
+
grpc_slice_buffer_remove_first(slices);
|
220
218
|
continue;
|
221
219
|
}
|
222
220
|
uint32_t remaining = static_cast<uint32_t>(end - cur);
|
@@ -224,32 +222,32 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
224
222
|
s->stats.incoming.data_bytes += remaining;
|
225
223
|
if (GRPC_ERROR_NONE !=
|
226
224
|
(error = p->parsing_frame->Push(
|
227
|
-
grpc_slice_sub(slice, static_cast<size_t>(cur - beg),
|
225
|
+
grpc_slice_sub(*slice, static_cast<size_t>(cur - beg),
|
228
226
|
static_cast<size_t>(end - beg)),
|
229
227
|
slice_out))) {
|
230
|
-
|
228
|
+
grpc_slice_buffer_remove_first(slices);
|
231
229
|
return error;
|
232
230
|
}
|
233
231
|
if (GRPC_ERROR_NONE !=
|
234
232
|
(error = p->parsing_frame->Finished(GRPC_ERROR_NONE, true))) {
|
235
|
-
|
233
|
+
grpc_slice_buffer_remove_first(slices);
|
236
234
|
return error;
|
237
235
|
}
|
238
236
|
p->parsing_frame = nullptr;
|
239
237
|
p->state = GRPC_CHTTP2_DATA_FH_0;
|
240
|
-
|
238
|
+
grpc_slice_buffer_remove_first(slices);
|
241
239
|
return GRPC_ERROR_NONE;
|
242
240
|
} else if (remaining < p->frame_size) {
|
243
241
|
s->stats.incoming.data_bytes += remaining;
|
244
242
|
if (GRPC_ERROR_NONE !=
|
245
243
|
(error = p->parsing_frame->Push(
|
246
|
-
grpc_slice_sub(slice, static_cast<size_t>(cur - beg),
|
244
|
+
grpc_slice_sub(*slice, static_cast<size_t>(cur - beg),
|
247
245
|
static_cast<size_t>(end - beg)),
|
248
246
|
slice_out))) {
|
249
247
|
return error;
|
250
248
|
}
|
251
249
|
p->frame_size -= remaining;
|
252
|
-
|
250
|
+
grpc_slice_buffer_remove_first(slices);
|
253
251
|
return GRPC_ERROR_NONE;
|
254
252
|
} else {
|
255
253
|
GPR_ASSERT(remaining > p->frame_size);
|
@@ -257,37 +255,35 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
|
|
257
255
|
if (GRPC_ERROR_NONE !=
|
258
256
|
p->parsing_frame->Push(
|
259
257
|
grpc_slice_sub(
|
260
|
-
slice, static_cast<size_t>(cur - beg),
|
258
|
+
*slice, static_cast<size_t>(cur - beg),
|
261
259
|
static_cast<size_t>(cur + p->frame_size - beg)),
|
262
260
|
slice_out)) {
|
263
|
-
|
261
|
+
grpc_slice_buffer_remove_first(slices);
|
264
262
|
return error;
|
265
263
|
}
|
266
264
|
if (GRPC_ERROR_NONE !=
|
267
265
|
(error = p->parsing_frame->Finished(GRPC_ERROR_NONE, true))) {
|
268
|
-
|
266
|
+
grpc_slice_buffer_remove_first(slices);
|
269
267
|
return error;
|
270
268
|
}
|
271
269
|
p->parsing_frame = nullptr;
|
272
270
|
p->state = GRPC_CHTTP2_DATA_FH_0;
|
273
271
|
cur += p->frame_size;
|
274
|
-
|
275
|
-
|
276
|
-
static_cast<size_t>(end - beg)));
|
277
|
-
grpc_slice_unref_internal(slice);
|
272
|
+
grpc_slice_buffer_sub_first(slices, static_cast<size_t>(cur - beg),
|
273
|
+
static_cast<size_t>(end - beg));
|
278
274
|
return GRPC_ERROR_NONE;
|
279
275
|
}
|
280
276
|
}
|
281
277
|
}
|
282
278
|
}
|
283
|
-
|
284
279
|
return GRPC_ERROR_NONE;
|
285
280
|
}
|
286
281
|
|
287
282
|
grpc_error* grpc_chttp2_data_parser_parse(void* parser,
|
288
283
|
grpc_chttp2_transport* t,
|
289
284
|
grpc_chttp2_stream* s,
|
290
|
-
grpc_slice slice,
|
285
|
+
const grpc_slice& slice,
|
286
|
+
int is_last) {
|
291
287
|
if (!s->pending_byte_stream) {
|
292
288
|
grpc_slice_ref_internal(slice);
|
293
289
|
grpc_slice_buffer_add(&s->frame_storage, slice);
|
@@ -67,7 +67,7 @@ grpc_error* grpc_chttp2_data_parser_begin_frame(grpc_chttp2_data_parser* parser,
|
|
67
67
|
grpc_error* grpc_chttp2_data_parser_parse(void* parser,
|
68
68
|
grpc_chttp2_transport* t,
|
69
69
|
grpc_chttp2_stream* s,
|
70
|
-
grpc_slice slice, int is_last);
|
70
|
+
const grpc_slice& slice, int is_last);
|
71
71
|
|
72
72
|
void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf,
|
73
73
|
uint32_t write_bytes, int is_eof,
|
@@ -57,10 +57,11 @@ grpc_error* grpc_chttp2_goaway_parser_begin_frame(grpc_chttp2_goaway_parser* p,
|
|
57
57
|
grpc_error* grpc_chttp2_goaway_parser_parse(void* parser,
|
58
58
|
grpc_chttp2_transport* t,
|
59
59
|
grpc_chttp2_stream* s,
|
60
|
-
grpc_slice slice,
|
61
|
-
|
62
|
-
uint8_t* const
|
63
|
-
uint8_t*
|
60
|
+
const grpc_slice& slice,
|
61
|
+
int is_last) {
|
62
|
+
const uint8_t* const beg = GRPC_SLICE_START_PTR(slice);
|
63
|
+
const uint8_t* const end = GRPC_SLICE_END_PTR(slice);
|
64
|
+
const uint8_t* cur = beg;
|
64
65
|
grpc_chttp2_goaway_parser* p =
|
65
66
|
static_cast<grpc_chttp2_goaway_parser*>(parser);
|
66
67
|
|
@@ -149,7 +150,7 @@ grpc_error* grpc_chttp2_goaway_parser_parse(void* parser,
|
|
149
150
|
}
|
150
151
|
|
151
152
|
void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code,
|
152
|
-
grpc_slice debug_data,
|
153
|
+
const grpc_slice& debug_data,
|
153
154
|
grpc_slice_buffer* slice_buffer) {
|
154
155
|
grpc_slice header = GRPC_SLICE_MALLOC(9 + 4 + 4);
|
155
156
|
uint8_t* p = GRPC_SLICE_START_PTR(header);
|
@@ -53,10 +53,11 @@ grpc_error* grpc_chttp2_goaway_parser_begin_frame(
|
|
53
53
|
grpc_error* grpc_chttp2_goaway_parser_parse(void* parser,
|
54
54
|
grpc_chttp2_transport* t,
|
55
55
|
grpc_chttp2_stream* s,
|
56
|
-
grpc_slice slice,
|
56
|
+
const grpc_slice& slice,
|
57
|
+
int is_last);
|
57
58
|
|
58
59
|
void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code,
|
59
|
-
grpc_slice debug_data,
|
60
|
+
const grpc_slice& debug_data,
|
60
61
|
grpc_slice_buffer* slice_buffer);
|
61
62
|
|
62
63
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H */
|
@@ -73,10 +73,11 @@ grpc_error* grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser* parser,
|
|
73
73
|
grpc_error* grpc_chttp2_ping_parser_parse(void* parser,
|
74
74
|
grpc_chttp2_transport* t,
|
75
75
|
grpc_chttp2_stream* s,
|
76
|
-
grpc_slice slice,
|
77
|
-
|
78
|
-
uint8_t* const
|
79
|
-
uint8_t*
|
76
|
+
const grpc_slice& slice,
|
77
|
+
int is_last) {
|
78
|
+
const uint8_t* const beg = GRPC_SLICE_START_PTR(slice);
|
79
|
+
const uint8_t* const end = GRPC_SLICE_END_PTR(slice);
|
80
|
+
const uint8_t* cur = beg;
|
80
81
|
grpc_chttp2_ping_parser* p = static_cast<grpc_chttp2_ping_parser*>(parser);
|
81
82
|
|
82
83
|
while (p->byte != 8 && cur != end) {
|
@@ -37,7 +37,7 @@ grpc_error* grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser* parser,
|
|
37
37
|
grpc_error* grpc_chttp2_ping_parser_parse(void* parser,
|
38
38
|
grpc_chttp2_transport* t,
|
39
39
|
grpc_chttp2_stream* s,
|
40
|
-
grpc_slice slice, int is_last);
|
40
|
+
const grpc_slice& slice, int is_last);
|
41
41
|
|
42
42
|
/* Test-only function for disabling ping ack */
|
43
43
|
void grpc_set_disable_ping_ack(bool disable_ping_ack);
|
@@ -26,6 +26,7 @@
|
|
26
26
|
#include <grpc/support/string_util.h>
|
27
27
|
|
28
28
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
29
|
+
#include "src/core/lib/gprpp/memory.h"
|
29
30
|
#include "src/core/lib/transport/http2_errors.h"
|
30
31
|
|
31
32
|
grpc_slice grpc_chttp2_rst_stream_create(uint32_t id, uint32_t code,
|
@@ -74,10 +75,11 @@ grpc_error* grpc_chttp2_rst_stream_parser_begin_frame(
|
|
74
75
|
grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser,
|
75
76
|
grpc_chttp2_transport* t,
|
76
77
|
grpc_chttp2_stream* s,
|
77
|
-
grpc_slice slice,
|
78
|
-
|
79
|
-
uint8_t* const
|
80
|
-
uint8_t*
|
78
|
+
const grpc_slice& slice,
|
79
|
+
int is_last) {
|
80
|
+
const uint8_t* const beg = GRPC_SLICE_START_PTR(slice);
|
81
|
+
const uint8_t* const end = GRPC_SLICE_END_PTR(slice);
|
82
|
+
const uint8_t* cur = beg;
|
81
83
|
grpc_chttp2_rst_stream_parser* p =
|
82
84
|
static_cast<grpc_chttp2_rst_stream_parser*>(parser);
|
83
85
|
|
@@ -101,9 +103,9 @@ grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser,
|
|
101
103
|
error = grpc_error_set_int(
|
102
104
|
grpc_error_set_str(GRPC_ERROR_CREATE_FROM_STATIC_STRING("RST_STREAM"),
|
103
105
|
GRPC_ERROR_STR_GRPC_MESSAGE,
|
104
|
-
|
106
|
+
grpc_slice_from_moved_string(
|
107
|
+
grpc_core::UniquePtr<char>(message))),
|
105
108
|
GRPC_ERROR_INT_HTTP2_ERROR, static_cast<intptr_t>(reason));
|
106
|
-
gpr_free(message);
|
107
109
|
}
|
108
110
|
grpc_chttp2_mark_stream_closed(t, s, true, true, error);
|
109
111
|
}
|
@@ -38,6 +38,7 @@ grpc_error* grpc_chttp2_rst_stream_parser_begin_frame(
|
|
38
38
|
grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser,
|
39
39
|
grpc_chttp2_transport* t,
|
40
40
|
grpc_chttp2_stream* s,
|
41
|
-
grpc_slice slice,
|
41
|
+
const grpc_slice& slice,
|
42
|
+
int is_last);
|
42
43
|
|
43
44
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_RST_STREAM_H */
|
@@ -111,7 +111,8 @@ grpc_error* grpc_chttp2_settings_parser_begin_frame(
|
|
111
111
|
|
112
112
|
grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t,
|
113
113
|
grpc_chttp2_stream* s,
|
114
|
-
grpc_slice slice,
|
114
|
+
const grpc_slice& slice,
|
115
|
+
int is_last) {
|
115
116
|
grpc_chttp2_settings_parser* parser =
|
116
117
|
static_cast<grpc_chttp2_settings_parser*>(p);
|
117
118
|
const uint8_t* cur = GRPC_SLICE_START_PTR(slice);
|
@@ -216,19 +217,20 @@ grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t,
|
|
216
217
|
parser->incoming_settings[id] != parser->value) {
|
217
218
|
t->initial_window_update += static_cast<int64_t>(parser->value) -
|
218
219
|
parser->incoming_settings[id];
|
219
|
-
if (grpc_http_trace
|
220
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
221
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_flowctl_trace)) {
|
220
222
|
gpr_log(GPR_INFO, "%p[%s] adding %d for initial_window change", t,
|
221
223
|
t->is_client ? "cli" : "svr",
|
222
224
|
static_cast<int>(t->initial_window_update));
|
223
225
|
}
|
224
226
|
}
|
225
227
|
parser->incoming_settings[id] = parser->value;
|
226
|
-
if (grpc_http_trace
|
228
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
227
229
|
gpr_log(GPR_INFO, "CHTTP2:%s:%s: got setting %s = %d",
|
228
230
|
t->is_client ? "CLI" : "SVR", t->peer_string, sp->name,
|
229
231
|
parser->value);
|
230
232
|
}
|
231
|
-
} else if (grpc_http_trace
|
233
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
232
234
|
gpr_log(GPR_ERROR, "CHTTP2: Ignoring unknown setting %d (value %d)",
|
233
235
|
parser->id, parser->value);
|
234
236
|
}
|
@@ -55,6 +55,7 @@ grpc_error* grpc_chttp2_settings_parser_begin_frame(
|
|
55
55
|
grpc_error* grpc_chttp2_settings_parser_parse(void* parser,
|
56
56
|
grpc_chttp2_transport* t,
|
57
57
|
grpc_chttp2_stream* s,
|
58
|
-
grpc_slice slice,
|
58
|
+
const grpc_slice& slice,
|
59
|
+
int is_last);
|
59
60
|
|
60
61
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H */
|
@@ -69,11 +69,11 @@ grpc_error* grpc_chttp2_window_update_parser_begin_frame(
|
|
69
69
|
grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
|
70
70
|
grpc_chttp2_transport* t,
|
71
71
|
grpc_chttp2_stream* s,
|
72
|
-
grpc_slice slice,
|
72
|
+
const grpc_slice& slice,
|
73
73
|
int is_last) {
|
74
|
-
uint8_t* const beg = GRPC_SLICE_START_PTR(slice);
|
75
|
-
uint8_t* const end = GRPC_SLICE_END_PTR(slice);
|
76
|
-
uint8_t* cur = beg;
|
74
|
+
const uint8_t* const beg = GRPC_SLICE_START_PTR(slice);
|
75
|
+
const uint8_t* const end = GRPC_SLICE_END_PTR(slice);
|
76
|
+
const uint8_t* cur = beg;
|
77
77
|
grpc_chttp2_window_update_parser* p =
|
78
78
|
static_cast<grpc_chttp2_window_update_parser*>(parser);
|
79
79
|
|
@@ -88,8 +88,9 @@ grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
|
|
88
88
|
}
|
89
89
|
|
90
90
|
if (p->byte == 4) {
|
91
|
-
|
92
|
-
|
91
|
+
// top bit is reserved and must be ignored.
|
92
|
+
uint32_t received_update = p->amount & 0x7fffffffu;
|
93
|
+
if (received_update == 0) {
|
93
94
|
char* msg;
|
94
95
|
gpr_asprintf(&msg, "invalid window update bytes: %d", p->amount);
|
95
96
|
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
@@ -39,7 +39,7 @@ grpc_error* grpc_chttp2_window_update_parser_begin_frame(
|
|
39
39
|
grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
|
40
40
|
grpc_chttp2_transport* t,
|
41
41
|
grpc_chttp2_stream* s,
|
42
|
-
grpc_slice slice,
|
42
|
+
const grpc_slice& slice,
|
43
43
|
int is_last);
|
44
44
|
|
45
45
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H */
|