grpc 1.41.0 → 1.42.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 +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +83 -70
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
data/third_party/re2/re2/dfa.cc
CHANGED
@@ -56,6 +56,10 @@ namespace re2 {
|
|
56
56
|
// Controls whether the DFA should bail out early if the NFA would be faster.
|
57
57
|
static bool dfa_should_bail_when_slow = true;
|
58
58
|
|
59
|
+
void Prog::TESTING_ONLY_set_dfa_should_bail_when_slow(bool b) {
|
60
|
+
dfa_should_bail_when_slow = b;
|
61
|
+
}
|
62
|
+
|
59
63
|
// Changing this to true compiles in prints that trace execution of the DFA.
|
60
64
|
// Generates a lot of output -- only useful for debugging.
|
61
65
|
static const bool ExtraDebug = false;
|
@@ -167,6 +171,9 @@ class DFA {
|
|
167
171
|
typedef std::unordered_set<State*, StateHash, StateEqual> StateSet;
|
168
172
|
|
169
173
|
private:
|
174
|
+
// Make it easier to swap in a scalable reader-writer mutex.
|
175
|
+
using CacheMutex = Mutex;
|
176
|
+
|
170
177
|
enum {
|
171
178
|
// Indices into start_ for unanchored searches.
|
172
179
|
// Add kStartAnchored for anchored searches.
|
@@ -280,10 +287,10 @@ class DFA {
|
|
280
287
|
// The generic search loop, inlined to create specialized versions.
|
281
288
|
// cache_mutex_.r <= L < mutex_
|
282
289
|
// Might unlock and relock cache_mutex_ via params->cache_lock.
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
290
|
+
template <bool can_prefix_accel,
|
291
|
+
bool want_earliest_match,
|
292
|
+
bool run_forward>
|
293
|
+
inline bool InlinedSearchLoop(SearchParams* params);
|
287
294
|
|
288
295
|
// The specialized versions of InlinedSearchLoop. The three letters
|
289
296
|
// at the ends of the name denote the true/false values used as the
|
@@ -305,13 +312,6 @@ class DFA {
|
|
305
312
|
// Might unlock and relock cache_mutex_ via params->cache_lock.
|
306
313
|
bool FastSearchLoop(SearchParams* params);
|
307
314
|
|
308
|
-
// For debugging, a slow search loop that calls InlinedSearchLoop
|
309
|
-
// directly -- because the booleans passed are not constants, the
|
310
|
-
// loop is not specialized like the SearchFFF etc. versions, so it
|
311
|
-
// runs much more slowly. Useful only for debugging.
|
312
|
-
// cache_mutex_.r <= L < mutex_
|
313
|
-
// Might unlock and relock cache_mutex_ via params->cache_lock.
|
314
|
-
bool SlowSearchLoop(SearchParams* params);
|
315
315
|
|
316
316
|
// Looks up bytes in bytemap_ but handles case c == kByteEndText too.
|
317
317
|
int ByteMap(int c) {
|
@@ -338,7 +338,7 @@ class DFA {
|
|
338
338
|
// while holding cache_mutex_ for writing, to avoid interrupting other
|
339
339
|
// readers. Any State* pointers are only valid while cache_mutex_
|
340
340
|
// is held.
|
341
|
-
|
341
|
+
CacheMutex cache_mutex_;
|
342
342
|
int64_t mem_budget_; // Total memory budget for all States.
|
343
343
|
int64_t state_budget_; // Amount of memory remaining for new States.
|
344
344
|
StateSet state_cache_; // All States computed so far.
|
@@ -1113,7 +1113,7 @@ DFA::State* DFA::RunStateOnByte(State* state, int c) {
|
|
1113
1113
|
|
1114
1114
|
class DFA::RWLocker {
|
1115
1115
|
public:
|
1116
|
-
explicit RWLocker(
|
1116
|
+
explicit RWLocker(CacheMutex* mu);
|
1117
1117
|
~RWLocker();
|
1118
1118
|
|
1119
1119
|
// If the lock is only held for reading right now,
|
@@ -1123,14 +1123,14 @@ class DFA::RWLocker {
|
|
1123
1123
|
void LockForWriting();
|
1124
1124
|
|
1125
1125
|
private:
|
1126
|
-
|
1126
|
+
CacheMutex* mu_;
|
1127
1127
|
bool writing_;
|
1128
1128
|
|
1129
1129
|
RWLocker(const RWLocker&) = delete;
|
1130
1130
|
RWLocker& operator=(const RWLocker&) = delete;
|
1131
1131
|
};
|
1132
1132
|
|
1133
|
-
DFA::RWLocker::RWLocker(
|
1133
|
+
DFA::RWLocker::RWLocker(CacheMutex* mu) : mu_(mu), writing_(false) {
|
1134
1134
|
mu_->ReaderLock();
|
1135
1135
|
}
|
1136
1136
|
|
@@ -1321,10 +1321,10 @@ DFA::State* DFA::StateSaver::Restore() {
|
|
1321
1321
|
// The bools are equal to the same-named variables in params, but
|
1322
1322
|
// making them function arguments lets the inliner specialize
|
1323
1323
|
// this function to each combination (see two paragraphs above).
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1324
|
+
template <bool can_prefix_accel,
|
1325
|
+
bool want_earliest_match,
|
1326
|
+
bool run_forward>
|
1327
|
+
inline bool DFA::InlinedSearchLoop(SearchParams* params) {
|
1328
1328
|
State* start = params->start;
|
1329
1329
|
const uint8_t* bp = BytePtr(params->text.data()); // start of text
|
1330
1330
|
const uint8_t* p = bp; // text scanning point
|
@@ -1549,36 +1549,28 @@ inline bool DFA::InlinedSearchLoop(SearchParams* params,
|
|
1549
1549
|
|
1550
1550
|
// Inline specializations of the general loop.
|
1551
1551
|
bool DFA::SearchFFF(SearchParams* params) {
|
1552
|
-
return InlinedSearchLoop
|
1552
|
+
return InlinedSearchLoop<false, false, false>(params);
|
1553
1553
|
}
|
1554
1554
|
bool DFA::SearchFFT(SearchParams* params) {
|
1555
|
-
return InlinedSearchLoop
|
1555
|
+
return InlinedSearchLoop<false, false, true>(params);
|
1556
1556
|
}
|
1557
1557
|
bool DFA::SearchFTF(SearchParams* params) {
|
1558
|
-
return InlinedSearchLoop
|
1558
|
+
return InlinedSearchLoop<false, true, false>(params);
|
1559
1559
|
}
|
1560
1560
|
bool DFA::SearchFTT(SearchParams* params) {
|
1561
|
-
return InlinedSearchLoop
|
1561
|
+
return InlinedSearchLoop<false, true, true>(params);
|
1562
1562
|
}
|
1563
1563
|
bool DFA::SearchTFF(SearchParams* params) {
|
1564
|
-
return InlinedSearchLoop
|
1564
|
+
return InlinedSearchLoop<true, false, false>(params);
|
1565
1565
|
}
|
1566
1566
|
bool DFA::SearchTFT(SearchParams* params) {
|
1567
|
-
return InlinedSearchLoop
|
1567
|
+
return InlinedSearchLoop<true, false, true>(params);
|
1568
1568
|
}
|
1569
1569
|
bool DFA::SearchTTF(SearchParams* params) {
|
1570
|
-
return InlinedSearchLoop
|
1570
|
+
return InlinedSearchLoop<true, true, false>(params);
|
1571
1571
|
}
|
1572
1572
|
bool DFA::SearchTTT(SearchParams* params) {
|
1573
|
-
return InlinedSearchLoop
|
1574
|
-
}
|
1575
|
-
|
1576
|
-
// For debugging, calls the general code directly.
|
1577
|
-
bool DFA::SlowSearchLoop(SearchParams* params) {
|
1578
|
-
return InlinedSearchLoop(params,
|
1579
|
-
params->can_prefix_accel,
|
1580
|
-
params->want_earliest_match,
|
1581
|
-
params->run_forward);
|
1573
|
+
return InlinedSearchLoop<true, true, true>(params);
|
1582
1574
|
}
|
1583
1575
|
|
1584
1576
|
// For performance, calls the appropriate specialized version
|
@@ -1978,10 +1970,6 @@ int Prog::BuildEntireDFA(MatchKind kind, const DFAStateCallback& cb) {
|
|
1978
1970
|
return GetDFA(kind)->BuildAllStates(cb);
|
1979
1971
|
}
|
1980
1972
|
|
1981
|
-
void Prog::TEST_dfa_should_bail_when_slow(bool b) {
|
1982
|
-
dfa_should_bail_when_slow = b;
|
1983
|
-
}
|
1984
|
-
|
1985
1973
|
// Computes min and max for matching string.
|
1986
1974
|
// Won't return strings bigger than maxlen.
|
1987
1975
|
bool DFA::PossibleMatchRange(std::string* min, std::string* max, int maxlen) {
|
@@ -6,6 +6,7 @@
|
|
6
6
|
|
7
7
|
#include <stddef.h>
|
8
8
|
#include <string>
|
9
|
+
#include <utility>
|
9
10
|
|
10
11
|
#include "util/util.h"
|
11
12
|
#include "util/logging.h"
|
@@ -27,7 +28,22 @@ FilteredRE2::FilteredRE2(int min_atom_len)
|
|
27
28
|
FilteredRE2::~FilteredRE2() {
|
28
29
|
for (size_t i = 0; i < re2_vec_.size(); i++)
|
29
30
|
delete re2_vec_[i];
|
30
|
-
|
31
|
+
}
|
32
|
+
|
33
|
+
FilteredRE2::FilteredRE2(FilteredRE2&& other)
|
34
|
+
: re2_vec_(std::move(other.re2_vec_)),
|
35
|
+
compiled_(other.compiled_),
|
36
|
+
prefilter_tree_(std::move(other.prefilter_tree_)) {
|
37
|
+
other.re2_vec_.clear();
|
38
|
+
other.re2_vec_.shrink_to_fit();
|
39
|
+
other.compiled_ = false;
|
40
|
+
other.prefilter_tree_.reset(new PrefilterTree());
|
41
|
+
}
|
42
|
+
|
43
|
+
FilteredRE2& FilteredRE2::operator=(FilteredRE2&& other) {
|
44
|
+
this->~FilteredRE2();
|
45
|
+
(void) new (this) FilteredRE2(std::move(other));
|
46
|
+
return *this;
|
31
47
|
}
|
32
48
|
|
33
49
|
RE2::ErrorCode FilteredRE2::Add(const StringPiece& pattern,
|
@@ -38,7 +54,7 @@ RE2::ErrorCode FilteredRE2::Add(const StringPiece& pattern,
|
|
38
54
|
if (!re->ok()) {
|
39
55
|
if (options.log_errors()) {
|
40
56
|
LOG(ERROR) << "Couldn't compile regular expression, skipping: "
|
41
|
-
<<
|
57
|
+
<< pattern << " due to error " << re->error();
|
42
58
|
}
|
43
59
|
delete re;
|
44
60
|
} else {
|
@@ -21,6 +21,7 @@
|
|
21
21
|
// or AllMatches with a vector of indices of strings that were found
|
22
22
|
// in the text to get the actual regexp matches.
|
23
23
|
|
24
|
+
#include <memory>
|
24
25
|
#include <string>
|
25
26
|
#include <vector>
|
26
27
|
|
@@ -36,12 +37,19 @@ class FilteredRE2 {
|
|
36
37
|
explicit FilteredRE2(int min_atom_len);
|
37
38
|
~FilteredRE2();
|
38
39
|
|
40
|
+
// Not copyable.
|
41
|
+
FilteredRE2(const FilteredRE2&) = delete;
|
42
|
+
FilteredRE2& operator=(const FilteredRE2&) = delete;
|
43
|
+
// Movable.
|
44
|
+
FilteredRE2(FilteredRE2&& other);
|
45
|
+
FilteredRE2& operator=(FilteredRE2&& other);
|
46
|
+
|
39
47
|
// Uses RE2 constructor to create a RE2 object (re). Returns
|
40
48
|
// re->error_code(). If error_code is other than NoError, then re is
|
41
49
|
// deleted and not added to re2_vec_.
|
42
50
|
RE2::ErrorCode Add(const StringPiece& pattern,
|
43
51
|
const RE2::Options& options,
|
44
|
-
int
|
52
|
+
int* id);
|
45
53
|
|
46
54
|
// Prepares the regexps added by Add for filtering. Returns a set
|
47
55
|
// of strings that the caller should check for in candidate texts.
|
@@ -98,10 +106,7 @@ class FilteredRE2 {
|
|
98
106
|
bool compiled_;
|
99
107
|
|
100
108
|
// An AND-OR tree of string atoms used for filtering regexps.
|
101
|
-
PrefilterTree
|
102
|
-
|
103
|
-
FilteredRE2(const FilteredRE2&) = delete;
|
104
|
-
FilteredRE2& operator=(const FilteredRE2&) = delete;
|
109
|
+
std::unique_ptr<PrefilterTree> prefilter_tree_;
|
105
110
|
};
|
106
111
|
|
107
112
|
} // namespace re2
|
data/third_party/re2/re2/nfa.cc
CHANGED
@@ -600,7 +600,7 @@ bool NFA::Search(const StringPiece& text, const StringPiece& const_context,
|
|
600
600
|
// by simply not continuing the loop.
|
601
601
|
// This complements the special case in NFA::Step().
|
602
602
|
if (p == NULL) {
|
603
|
-
(void)Step(runq, nextq,
|
603
|
+
(void) Step(runq, nextq, -1, context, p);
|
604
604
|
DCHECK_EQ(runq->size(), 0);
|
605
605
|
using std::swap;
|
606
606
|
swap(nextq, runq);
|
@@ -44,12 +44,12 @@
|
|
44
44
|
|
45
45
|
namespace re2 {
|
46
46
|
|
47
|
-
//
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
47
|
+
// Controls the maximum repeat count permitted by the parser.
|
48
|
+
static int maximum_repeat_count = 1000;
|
49
|
+
|
50
|
+
void Regexp::FUZZING_ONLY_set_maximum_repeat_count(int i) {
|
51
|
+
maximum_repeat_count = i;
|
52
|
+
}
|
53
53
|
|
54
54
|
// Regular expression parse state.
|
55
55
|
// The list of parsed regexps so far is maintained as a vector of
|
@@ -568,7 +568,9 @@ int RepetitionWalker::ShortVisit(Regexp* re, int parent_arg) {
|
|
568
568
|
bool Regexp::ParseState::PushRepetition(int min, int max,
|
569
569
|
const StringPiece& s,
|
570
570
|
bool nongreedy) {
|
571
|
-
if ((max != -1 && max < min) ||
|
571
|
+
if ((max != -1 && max < min) ||
|
572
|
+
min > maximum_repeat_count ||
|
573
|
+
max > maximum_repeat_count) {
|
572
574
|
status_->set_code(kRegexpRepeatSize);
|
573
575
|
status_->set_error_arg(s);
|
574
576
|
return false;
|
@@ -591,7 +593,7 @@ bool Regexp::ParseState::PushRepetition(int min, int max,
|
|
591
593
|
stacktop_ = re;
|
592
594
|
if (min >= 2 || max >= 2) {
|
593
595
|
RepetitionWalker w;
|
594
|
-
if (w.Walk(stacktop_,
|
596
|
+
if (w.Walk(stacktop_, maximum_repeat_count) == 0) {
|
595
597
|
status_->set_code(kRegexpRepeatSize);
|
596
598
|
status_->set_error_arg(s);
|
597
599
|
return false;
|
@@ -685,7 +687,7 @@ bool Regexp::ParseState::DoRightParen() {
|
|
685
687
|
if ((r1 = stacktop_) == NULL ||
|
686
688
|
(r2 = r1->down_) == NULL ||
|
687
689
|
r2->op() != kLeftParen) {
|
688
|
-
status_->set_code(
|
690
|
+
status_->set_code(kRegexpUnexpectedParen);
|
689
691
|
status_->set_error_arg(whole_regexp_);
|
690
692
|
return false;
|
691
693
|
}
|
@@ -1407,13 +1409,15 @@ static int StringPieceToRune(Rune *r, StringPiece *sp, RegexpStatus* status) {
|
|
1407
1409
|
}
|
1408
1410
|
}
|
1409
1411
|
|
1410
|
-
status
|
1411
|
-
|
1412
|
+
if (status != NULL) {
|
1413
|
+
status->set_code(kRegexpBadUTF8);
|
1414
|
+
status->set_error_arg(StringPiece());
|
1415
|
+
}
|
1412
1416
|
return -1;
|
1413
1417
|
}
|
1414
1418
|
|
1415
|
-
//
|
1416
|
-
// If not,
|
1419
|
+
// Returns whether name is valid UTF-8.
|
1420
|
+
// If not, sets status to kRegexpBadUTF8.
|
1417
1421
|
static bool IsValidUTF8(const StringPiece& s, RegexpStatus* status) {
|
1418
1422
|
StringPiece t = s;
|
1419
1423
|
Rune r;
|
@@ -2011,19 +2015,34 @@ bool Regexp::ParseState::ParseCharClass(StringPiece* s,
|
|
2011
2015
|
return true;
|
2012
2016
|
}
|
2013
2017
|
|
2014
|
-
//
|
2015
|
-
// PCRE limits names to 32 bytes.
|
2016
|
-
// Python rejects names starting with digits.
|
2017
|
-
// We don't enforce either of those.
|
2018
|
+
// Returns whether name is a valid capture name.
|
2018
2019
|
static bool IsValidCaptureName(const StringPiece& name) {
|
2019
2020
|
if (name.empty())
|
2020
2021
|
return false;
|
2021
|
-
|
2022
|
-
|
2023
|
-
|
2024
|
-
|
2025
|
-
|
2026
|
-
|
2022
|
+
|
2023
|
+
// Historically, we effectively used [0-9A-Za-z_]+ to validate; that
|
2024
|
+
// followed Python 2 except for not restricting the first character.
|
2025
|
+
// As of Python 3, Unicode characters beyond ASCII are also allowed;
|
2026
|
+
// accordingly, we permit the Lu, Ll, Lt, Lm, Lo, Nl, Mn, Mc, Nd and
|
2027
|
+
// Pc categories, but again without restricting the first character.
|
2028
|
+
// Also, Unicode normalization (e.g. NFKC) isn't performed: Python 3
|
2029
|
+
// performs it for identifiers, but seemingly not for capture names;
|
2030
|
+
// if they start doing that for capture names, we won't follow suit.
|
2031
|
+
static const CharClass* const cc = []() {
|
2032
|
+
CharClassBuilder ccb;
|
2033
|
+
for (StringPiece group :
|
2034
|
+
{"Lu", "Ll", "Lt", "Lm", "Lo", "Nl", "Mn", "Mc", "Nd", "Pc"})
|
2035
|
+
AddUGroup(&ccb, LookupGroup(group, unicode_groups, num_unicode_groups),
|
2036
|
+
+1, Regexp::NoParseFlags);
|
2037
|
+
return ccb.GetCharClass();
|
2038
|
+
}();
|
2039
|
+
|
2040
|
+
StringPiece t = name;
|
2041
|
+
Rune r;
|
2042
|
+
while (!t.empty()) {
|
2043
|
+
if (StringPieceToRune(&r, &t, NULL) < 0)
|
2044
|
+
return false;
|
2045
|
+
if (cc->Contains(r))
|
2027
2046
|
continue;
|
2028
2047
|
return false;
|
2029
2048
|
}
|
@@ -20,12 +20,12 @@ static const URange16 code3[] = { /* \w */
|
|
20
20
|
{ 0x61, 0x7a },
|
21
21
|
};
|
22
22
|
const UGroup perl_groups[] = {
|
23
|
-
{ "\\d", +1, code1, 1 },
|
24
|
-
{ "\\D", -1, code1, 1 },
|
25
|
-
{ "\\s", +1, code2, 3 },
|
26
|
-
{ "\\S", -1, code2, 3 },
|
27
|
-
{ "\\w", +1, code3, 4 },
|
28
|
-
{ "\\W", -1, code3, 4 },
|
23
|
+
{ "\\d", +1, code1, 1, 0, 0 },
|
24
|
+
{ "\\D", -1, code1, 1, 0, 0 },
|
25
|
+
{ "\\s", +1, code2, 3, 0, 0 },
|
26
|
+
{ "\\S", -1, code2, 3, 0, 0 },
|
27
|
+
{ "\\w", +1, code3, 4, 0, 0 },
|
28
|
+
{ "\\W", -1, code3, 4, 0, 0 },
|
29
29
|
};
|
30
30
|
const int num_perl_groups = 6;
|
31
31
|
static const URange16 code4[] = { /* [:alnum:] */
|
@@ -85,34 +85,34 @@ static const URange16 code17[] = { /* [:xdigit:] */
|
|
85
85
|
{ 0x61, 0x66 },
|
86
86
|
};
|
87
87
|
const UGroup posix_groups[] = {
|
88
|
-
{ "[:alnum:]", +1, code4, 3 },
|
89
|
-
{ "[:^alnum:]", -1, code4, 3 },
|
90
|
-
{ "[:alpha:]", +1, code5, 2 },
|
91
|
-
{ "[:^alpha:]", -1, code5, 2 },
|
92
|
-
{ "[:ascii:]", +1, code6, 1 },
|
93
|
-
{ "[:^ascii:]", -1, code6, 1 },
|
94
|
-
{ "[:blank:]", +1, code7, 2 },
|
95
|
-
{ "[:^blank:]", -1, code7, 2 },
|
96
|
-
{ "[:cntrl:]", +1, code8, 2 },
|
97
|
-
{ "[:^cntrl:]", -1, code8, 2 },
|
98
|
-
{ "[:digit:]", +1, code9, 1 },
|
99
|
-
{ "[:^digit:]", -1, code9, 1 },
|
100
|
-
{ "[:graph:]", +1, code10, 1 },
|
101
|
-
{ "[:^graph:]", -1, code10, 1 },
|
102
|
-
{ "[:lower:]", +1, code11, 1 },
|
103
|
-
{ "[:^lower:]", -1, code11, 1 },
|
104
|
-
{ "[:print:]", +1, code12, 1 },
|
105
|
-
{ "[:^print:]", -1, code12, 1 },
|
106
|
-
{ "[:punct:]", +1, code13, 4 },
|
107
|
-
{ "[:^punct:]", -1, code13, 4 },
|
108
|
-
{ "[:space:]", +1, code14, 2 },
|
109
|
-
{ "[:^space:]", -1, code14, 2 },
|
110
|
-
{ "[:upper:]", +1, code15, 1 },
|
111
|
-
{ "[:^upper:]", -1, code15, 1 },
|
112
|
-
{ "[:word:]", +1, code16, 4 },
|
113
|
-
{ "[:^word:]", -1, code16, 4 },
|
114
|
-
{ "[:xdigit:]", +1, code17, 3 },
|
115
|
-
{ "[:^xdigit:]", -1, code17, 3 },
|
88
|
+
{ "[:alnum:]", +1, code4, 3, 0, 0 },
|
89
|
+
{ "[:^alnum:]", -1, code4, 3, 0, 0 },
|
90
|
+
{ "[:alpha:]", +1, code5, 2, 0, 0 },
|
91
|
+
{ "[:^alpha:]", -1, code5, 2, 0, 0 },
|
92
|
+
{ "[:ascii:]", +1, code6, 1, 0, 0 },
|
93
|
+
{ "[:^ascii:]", -1, code6, 1, 0, 0 },
|
94
|
+
{ "[:blank:]", +1, code7, 2, 0, 0 },
|
95
|
+
{ "[:^blank:]", -1, code7, 2, 0, 0 },
|
96
|
+
{ "[:cntrl:]", +1, code8, 2, 0, 0 },
|
97
|
+
{ "[:^cntrl:]", -1, code8, 2, 0, 0 },
|
98
|
+
{ "[:digit:]", +1, code9, 1, 0, 0 },
|
99
|
+
{ "[:^digit:]", -1, code9, 1, 0, 0 },
|
100
|
+
{ "[:graph:]", +1, code10, 1, 0, 0 },
|
101
|
+
{ "[:^graph:]", -1, code10, 1, 0, 0 },
|
102
|
+
{ "[:lower:]", +1, code11, 1, 0, 0 },
|
103
|
+
{ "[:^lower:]", -1, code11, 1, 0, 0 },
|
104
|
+
{ "[:print:]", +1, code12, 1, 0, 0 },
|
105
|
+
{ "[:^print:]", -1, code12, 1, 0, 0 },
|
106
|
+
{ "[:punct:]", +1, code13, 4, 0, 0 },
|
107
|
+
{ "[:^punct:]", -1, code13, 4, 0, 0 },
|
108
|
+
{ "[:space:]", +1, code14, 2, 0, 0 },
|
109
|
+
{ "[:^space:]", -1, code14, 2, 0, 0 },
|
110
|
+
{ "[:upper:]", +1, code15, 1, 0, 0 },
|
111
|
+
{ "[:^upper:]", -1, code15, 1, 0, 0 },
|
112
|
+
{ "[:word:]", +1, code16, 4, 0, 0 },
|
113
|
+
{ "[:^word:]", -1, code16, 4, 0, 0 },
|
114
|
+
{ "[:xdigit:]", +1, code17, 3, 0, 0 },
|
115
|
+
{ "[:^xdigit:]", -1, code17, 3, 0, 0 },
|
116
116
|
};
|
117
117
|
const int num_posix_groups = 28;
|
118
118
|
|
@@ -648,14 +648,15 @@ Prefilter* Prefilter::FromRegexp(Regexp* re) {
|
|
648
648
|
return NULL;
|
649
649
|
|
650
650
|
Regexp* simple = re->Simplify();
|
651
|
-
|
651
|
+
if (simple == NULL)
|
652
|
+
return NULL;
|
652
653
|
|
654
|
+
Prefilter::Info* info = BuildInfo(simple);
|
653
655
|
simple->Decref();
|
654
656
|
if (info == NULL)
|
655
657
|
return NULL;
|
656
658
|
|
657
659
|
Prefilter* m = info->TakeMatch();
|
658
|
-
|
659
660
|
delete info;
|
660
661
|
return m;
|
661
662
|
}
|