grpc 1.30.0 → 1.31.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +560 -619
- data/include/grpc/grpc_security.h +8 -0
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json_reader.cc +20 -21
- data/src/core/lib/security/credentials/credentials.h +5 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +108 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- 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/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +90 -30
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -70,6 +70,7 @@ static bool upb_encode_reserve(upb_encstate *e, size_t bytes) {
|
|
70
70
|
|
71
71
|
/* Writes the given bytes to the buffer, handling reserve/advance. */
|
72
72
|
static bool upb_put_bytes(upb_encstate *e, const void *data, size_t len) {
|
73
|
+
if (len == 0) return true;
|
73
74
|
CHK(upb_encode_reserve(e, len));
|
74
75
|
memcpy(e->ptr, data, len);
|
75
76
|
return true;
|
@@ -110,68 +111,150 @@ static bool upb_put_float(upb_encstate *e, float d) {
|
|
110
111
|
return upb_put_fixed32(e, u32);
|
111
112
|
}
|
112
113
|
|
113
|
-
static uint32_t upb_readcase(const char *msg, const upb_msglayout_field *f) {
|
114
|
-
uint32_t ret;
|
115
|
-
uint32_t offset = ~f->presence;
|
116
|
-
memcpy(&ret, msg + offset, sizeof(ret));
|
117
|
-
return ret;
|
118
|
-
}
|
119
|
-
|
120
|
-
static bool upb_readhasbit(const char *msg, const upb_msglayout_field *f) {
|
121
|
-
uint32_t hasbit = f->presence;
|
122
|
-
UPB_ASSERT(f->presence > 0);
|
123
|
-
return msg[hasbit / 8] & (1 << (hasbit % 8));
|
124
|
-
}
|
125
|
-
|
126
114
|
static bool upb_put_tag(upb_encstate *e, int field_number, int wire_type) {
|
127
115
|
return upb_put_varint(e, (field_number << 3) | wire_type);
|
128
116
|
}
|
129
117
|
|
130
118
|
static bool upb_put_fixedarray(upb_encstate *e, const upb_array *arr,
|
131
|
-
size_t
|
132
|
-
size_t bytes = arr->len *
|
133
|
-
|
119
|
+
size_t elem_size, uint32_t tag) {
|
120
|
+
size_t bytes = arr->len * elem_size;
|
121
|
+
const char* data = _upb_array_constptr(arr);
|
122
|
+
const char* ptr = data + bytes - elem_size;
|
123
|
+
if (tag) {
|
124
|
+
while (true) {
|
125
|
+
CHK(upb_put_bytes(e, ptr, elem_size) && upb_put_varint(e, tag));
|
126
|
+
if (ptr == data) break;
|
127
|
+
ptr -= elem_size;
|
128
|
+
}
|
129
|
+
return true;
|
130
|
+
} else {
|
131
|
+
return upb_put_bytes(e, data, bytes) && upb_put_varint(e, bytes);
|
132
|
+
}
|
134
133
|
}
|
135
134
|
|
136
135
|
bool upb_encode_message(upb_encstate *e, const char *msg,
|
137
136
|
const upb_msglayout *m, size_t *size);
|
138
137
|
|
138
|
+
static bool upb_encode_scalarfield(upb_encstate *e, const void *_field_mem,
|
139
|
+
const upb_msglayout *m,
|
140
|
+
const upb_msglayout_field *f,
|
141
|
+
bool skip_zero_value) {
|
142
|
+
const char *field_mem = _field_mem;
|
143
|
+
#define CASE(ctype, type, wire_type, encodeval) do { \
|
144
|
+
ctype val = *(ctype*)field_mem; \
|
145
|
+
if (skip_zero_value && val == 0) { \
|
146
|
+
return true; \
|
147
|
+
} \
|
148
|
+
return upb_put_ ## type(e, encodeval) && \
|
149
|
+
upb_put_tag(e, f->number, wire_type); \
|
150
|
+
} while(0)
|
151
|
+
|
152
|
+
switch (f->descriptortype) {
|
153
|
+
case UPB_DESCRIPTOR_TYPE_DOUBLE:
|
154
|
+
CASE(double, double, UPB_WIRE_TYPE_64BIT, val);
|
155
|
+
case UPB_DESCRIPTOR_TYPE_FLOAT:
|
156
|
+
CASE(float, float, UPB_WIRE_TYPE_32BIT, val);
|
157
|
+
case UPB_DESCRIPTOR_TYPE_INT64:
|
158
|
+
case UPB_DESCRIPTOR_TYPE_UINT64:
|
159
|
+
CASE(uint64_t, varint, UPB_WIRE_TYPE_VARINT, val);
|
160
|
+
case UPB_DESCRIPTOR_TYPE_UINT32:
|
161
|
+
CASE(uint32_t, varint, UPB_WIRE_TYPE_VARINT, val);
|
162
|
+
case UPB_DESCRIPTOR_TYPE_INT32:
|
163
|
+
case UPB_DESCRIPTOR_TYPE_ENUM:
|
164
|
+
CASE(int32_t, varint, UPB_WIRE_TYPE_VARINT, (int64_t)val);
|
165
|
+
case UPB_DESCRIPTOR_TYPE_SFIXED64:
|
166
|
+
case UPB_DESCRIPTOR_TYPE_FIXED64:
|
167
|
+
CASE(uint64_t, fixed64, UPB_WIRE_TYPE_64BIT, val);
|
168
|
+
case UPB_DESCRIPTOR_TYPE_FIXED32:
|
169
|
+
case UPB_DESCRIPTOR_TYPE_SFIXED32:
|
170
|
+
CASE(uint32_t, fixed32, UPB_WIRE_TYPE_32BIT, val);
|
171
|
+
case UPB_DESCRIPTOR_TYPE_BOOL:
|
172
|
+
CASE(bool, varint, UPB_WIRE_TYPE_VARINT, val);
|
173
|
+
case UPB_DESCRIPTOR_TYPE_SINT32:
|
174
|
+
CASE(int32_t, varint, UPB_WIRE_TYPE_VARINT, upb_zzencode_32(val));
|
175
|
+
case UPB_DESCRIPTOR_TYPE_SINT64:
|
176
|
+
CASE(int64_t, varint, UPB_WIRE_TYPE_VARINT, upb_zzencode_64(val));
|
177
|
+
case UPB_DESCRIPTOR_TYPE_STRING:
|
178
|
+
case UPB_DESCRIPTOR_TYPE_BYTES: {
|
179
|
+
upb_strview view = *(upb_strview*)field_mem;
|
180
|
+
if (skip_zero_value && view.size == 0) {
|
181
|
+
return true;
|
182
|
+
}
|
183
|
+
return upb_put_bytes(e, view.data, view.size) &&
|
184
|
+
upb_put_varint(e, view.size) &&
|
185
|
+
upb_put_tag(e, f->number, UPB_WIRE_TYPE_DELIMITED);
|
186
|
+
}
|
187
|
+
case UPB_DESCRIPTOR_TYPE_GROUP: {
|
188
|
+
size_t size;
|
189
|
+
void *submsg = *(void **)field_mem;
|
190
|
+
const upb_msglayout *subm = m->submsgs[f->submsg_index];
|
191
|
+
if (submsg == NULL) {
|
192
|
+
return true;
|
193
|
+
}
|
194
|
+
return upb_put_tag(e, f->number, UPB_WIRE_TYPE_END_GROUP) &&
|
195
|
+
upb_encode_message(e, submsg, subm, &size) &&
|
196
|
+
upb_put_tag(e, f->number, UPB_WIRE_TYPE_START_GROUP);
|
197
|
+
}
|
198
|
+
case UPB_DESCRIPTOR_TYPE_MESSAGE: {
|
199
|
+
size_t size;
|
200
|
+
void *submsg = *(void **)field_mem;
|
201
|
+
const upb_msglayout *subm = m->submsgs[f->submsg_index];
|
202
|
+
if (submsg == NULL) {
|
203
|
+
return true;
|
204
|
+
}
|
205
|
+
return upb_encode_message(e, submsg, subm, &size) &&
|
206
|
+
upb_put_varint(e, size) &&
|
207
|
+
upb_put_tag(e, f->number, UPB_WIRE_TYPE_DELIMITED);
|
208
|
+
}
|
209
|
+
}
|
210
|
+
#undef CASE
|
211
|
+
UPB_UNREACHABLE();
|
212
|
+
}
|
213
|
+
|
139
214
|
static bool upb_encode_array(upb_encstate *e, const char *field_mem,
|
140
215
|
const upb_msglayout *m,
|
141
216
|
const upb_msglayout_field *f) {
|
142
217
|
const upb_array *arr = *(const upb_array**)field_mem;
|
218
|
+
bool packed = f->label == _UPB_LABEL_PACKED;
|
143
219
|
|
144
220
|
if (arr == NULL || arr->len == 0) {
|
145
221
|
return true;
|
146
222
|
}
|
147
223
|
|
148
|
-
#define VARINT_CASE(ctype, encode)
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
224
|
+
#define VARINT_CASE(ctype, encode) \
|
225
|
+
{ \
|
226
|
+
const ctype *start = _upb_array_constptr(arr); \
|
227
|
+
const ctype *ptr = start + arr->len; \
|
228
|
+
size_t pre_len = e->limit - e->ptr; \
|
229
|
+
uint32_t tag = packed ? 0 : (f->number << 3) | UPB_WIRE_TYPE_VARINT; \
|
230
|
+
do { \
|
231
|
+
ptr--; \
|
232
|
+
CHK(upb_put_varint(e, encode)); \
|
233
|
+
if (tag) CHK(upb_put_varint(e, tag)); \
|
234
|
+
} while (ptr != start); \
|
235
|
+
if (!tag) CHK(upb_put_varint(e, e->limit - e->ptr - pre_len)); \
|
236
|
+
} \
|
237
|
+
break; \
|
238
|
+
do { \
|
239
|
+
; \
|
240
|
+
} while (0)
|
241
|
+
|
242
|
+
#define TAG(wire_type) (packed ? 0 : (f->number << 3 | wire_type))
|
160
243
|
|
161
244
|
switch (f->descriptortype) {
|
162
245
|
case UPB_DESCRIPTOR_TYPE_DOUBLE:
|
163
|
-
CHK(upb_put_fixedarray(e, arr, sizeof(double)));
|
246
|
+
CHK(upb_put_fixedarray(e, arr, sizeof(double), TAG(UPB_WIRE_TYPE_64BIT)));
|
164
247
|
break;
|
165
248
|
case UPB_DESCRIPTOR_TYPE_FLOAT:
|
166
|
-
CHK(upb_put_fixedarray(e, arr, sizeof(float)));
|
249
|
+
CHK(upb_put_fixedarray(e, arr, sizeof(float), TAG(UPB_WIRE_TYPE_32BIT)));
|
167
250
|
break;
|
168
251
|
case UPB_DESCRIPTOR_TYPE_SFIXED64:
|
169
252
|
case UPB_DESCRIPTOR_TYPE_FIXED64:
|
170
|
-
CHK(upb_put_fixedarray(e, arr, sizeof(uint64_t)));
|
253
|
+
CHK(upb_put_fixedarray(e, arr, sizeof(uint64_t), TAG(UPB_WIRE_TYPE_64BIT)));
|
171
254
|
break;
|
172
255
|
case UPB_DESCRIPTOR_TYPE_FIXED32:
|
173
256
|
case UPB_DESCRIPTOR_TYPE_SFIXED32:
|
174
|
-
CHK(upb_put_fixedarray(e, arr, sizeof(uint32_t)));
|
257
|
+
CHK(upb_put_fixedarray(e, arr, sizeof(uint32_t), TAG(UPB_WIRE_TYPE_32BIT)));
|
175
258
|
break;
|
176
259
|
case UPB_DESCRIPTOR_TYPE_INT64:
|
177
260
|
case UPB_DESCRIPTOR_TYPE_UINT64:
|
@@ -189,8 +272,8 @@ do { ; } while(0)
|
|
189
272
|
VARINT_CASE(int64_t, upb_zzencode_64(*ptr));
|
190
273
|
case UPB_DESCRIPTOR_TYPE_STRING:
|
191
274
|
case UPB_DESCRIPTOR_TYPE_BYTES: {
|
192
|
-
upb_strview *start = arr
|
193
|
-
upb_strview *ptr = start + arr->len;
|
275
|
+
const upb_strview *start = _upb_array_constptr(arr);
|
276
|
+
const upb_strview *ptr = start + arr->len;
|
194
277
|
do {
|
195
278
|
ptr--;
|
196
279
|
CHK(upb_put_bytes(e, ptr->data, ptr->size) &&
|
@@ -200,8 +283,8 @@ do { ; } while(0)
|
|
200
283
|
return true;
|
201
284
|
}
|
202
285
|
case UPB_DESCRIPTOR_TYPE_GROUP: {
|
203
|
-
void
|
204
|
-
void
|
286
|
+
const void *const*start = _upb_array_constptr(arr);
|
287
|
+
const void *const*ptr = start + arr->len;
|
205
288
|
const upb_msglayout *subm = m->submsgs[f->submsg_index];
|
206
289
|
do {
|
207
290
|
size_t size;
|
@@ -213,8 +296,8 @@ do { ; } while(0)
|
|
213
296
|
return true;
|
214
297
|
}
|
215
298
|
case UPB_DESCRIPTOR_TYPE_MESSAGE: {
|
216
|
-
void
|
217
|
-
void
|
299
|
+
const void *const*start = _upb_array_constptr(arr);
|
300
|
+
const void *const*ptr = start + arr->len;
|
218
301
|
const upb_msglayout *subm = m->submsgs[f->submsg_index];
|
219
302
|
do {
|
220
303
|
size_t size;
|
@@ -228,87 +311,44 @@ do { ; } while(0)
|
|
228
311
|
}
|
229
312
|
#undef VARINT_CASE
|
230
313
|
|
231
|
-
|
232
|
-
|
233
|
-
|
314
|
+
if (packed) {
|
315
|
+
CHK(upb_put_tag(e, f->number, UPB_WIRE_TYPE_DELIMITED));
|
316
|
+
}
|
234
317
|
return true;
|
235
318
|
}
|
236
319
|
|
237
|
-
static bool
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
} while(0)
|
320
|
+
static bool upb_encode_map(upb_encstate *e, const char *field_mem,
|
321
|
+
const upb_msglayout *m,
|
322
|
+
const upb_msglayout_field *f) {
|
323
|
+
const upb_map *map = *(const upb_map**)field_mem;
|
324
|
+
const upb_msglayout *entry = m->submsgs[f->submsg_index];
|
325
|
+
const upb_msglayout_field *key_field = &entry->fields[0];
|
326
|
+
const upb_msglayout_field *val_field = &entry->fields[1];
|
327
|
+
upb_strtable_iter i;
|
328
|
+
if (map == NULL) {
|
329
|
+
return true;
|
330
|
+
}
|
249
331
|
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
case UPB_DESCRIPTOR_TYPE_FIXED64:
|
265
|
-
CASE(uint64_t, fixed64, UPB_WIRE_TYPE_64BIT, val);
|
266
|
-
case UPB_DESCRIPTOR_TYPE_FIXED32:
|
267
|
-
case UPB_DESCRIPTOR_TYPE_SFIXED32:
|
268
|
-
CASE(uint32_t, fixed32, UPB_WIRE_TYPE_32BIT, val);
|
269
|
-
case UPB_DESCRIPTOR_TYPE_BOOL:
|
270
|
-
CASE(bool, varint, UPB_WIRE_TYPE_VARINT, val);
|
271
|
-
case UPB_DESCRIPTOR_TYPE_SINT32:
|
272
|
-
CASE(int32_t, varint, UPB_WIRE_TYPE_VARINT, upb_zzencode_32(val));
|
273
|
-
case UPB_DESCRIPTOR_TYPE_SINT64:
|
274
|
-
CASE(int64_t, varint, UPB_WIRE_TYPE_VARINT, upb_zzencode_64(val));
|
275
|
-
case UPB_DESCRIPTOR_TYPE_STRING:
|
276
|
-
case UPB_DESCRIPTOR_TYPE_BYTES: {
|
277
|
-
upb_strview view = *(upb_strview*)field_mem;
|
278
|
-
if (skip_zero_value && view.size == 0) {
|
279
|
-
return true;
|
280
|
-
}
|
281
|
-
return upb_put_bytes(e, view.data, view.size) &&
|
282
|
-
upb_put_varint(e, view.size) &&
|
283
|
-
upb_put_tag(e, f->number, UPB_WIRE_TYPE_DELIMITED);
|
284
|
-
}
|
285
|
-
case UPB_DESCRIPTOR_TYPE_GROUP: {
|
286
|
-
size_t size;
|
287
|
-
void *submsg = *(void **)field_mem;
|
288
|
-
const upb_msglayout *subm = m->submsgs[f->submsg_index];
|
289
|
-
if (submsg == NULL) {
|
290
|
-
return true;
|
291
|
-
}
|
292
|
-
return upb_put_tag(e, f->number, UPB_WIRE_TYPE_END_GROUP) &&
|
293
|
-
upb_encode_message(e, submsg, subm, &size) &&
|
294
|
-
upb_put_tag(e, f->number, UPB_WIRE_TYPE_START_GROUP);
|
295
|
-
}
|
296
|
-
case UPB_DESCRIPTOR_TYPE_MESSAGE: {
|
297
|
-
size_t size;
|
298
|
-
void *submsg = *(void **)field_mem;
|
299
|
-
const upb_msglayout *subm = m->submsgs[f->submsg_index];
|
300
|
-
if (submsg == NULL) {
|
301
|
-
return true;
|
302
|
-
}
|
303
|
-
return upb_encode_message(e, submsg, subm, &size) &&
|
304
|
-
upb_put_varint(e, size) &&
|
305
|
-
upb_put_tag(e, f->number, UPB_WIRE_TYPE_DELIMITED);
|
306
|
-
}
|
332
|
+
upb_strtable_begin(&i, &map->table);
|
333
|
+
for(; !upb_strtable_done(&i); upb_strtable_next(&i)) {
|
334
|
+
size_t pre_len = e->limit - e->ptr;
|
335
|
+
size_t size;
|
336
|
+
upb_strview key = upb_strtable_iter_key(&i);
|
337
|
+
const upb_value val = upb_strtable_iter_value(&i);
|
338
|
+
upb_map_entry ent;
|
339
|
+
_upb_map_fromkey(key, &ent.k, map->key_size);
|
340
|
+
_upb_map_fromvalue(val, &ent.v, map->val_size);
|
341
|
+
CHK(upb_encode_scalarfield(e, &ent.v, entry, val_field, false));
|
342
|
+
CHK(upb_encode_scalarfield(e, &ent.k, entry, key_field, false));
|
343
|
+
size = (e->limit - e->ptr) - pre_len;
|
344
|
+
CHK(upb_put_varint(e, size));
|
345
|
+
CHK(upb_put_tag(e, f->number, UPB_WIRE_TYPE_DELIMITED));
|
307
346
|
}
|
308
|
-
|
309
|
-
|
347
|
+
|
348
|
+
return true;
|
310
349
|
}
|
311
350
|
|
351
|
+
|
312
352
|
bool upb_encode_message(upb_encstate *e, const char *msg,
|
313
353
|
const upb_msglayout *m, size_t *size) {
|
314
354
|
int i;
|
@@ -316,11 +356,19 @@ bool upb_encode_message(upb_encstate *e, const char *msg,
|
|
316
356
|
const char *unknown;
|
317
357
|
size_t unknown_size;
|
318
358
|
|
359
|
+
unknown = upb_msg_getunknown(msg, &unknown_size);
|
360
|
+
|
361
|
+
if (unknown) {
|
362
|
+
upb_put_bytes(e, unknown, unknown_size);
|
363
|
+
}
|
364
|
+
|
319
365
|
for (i = m->field_count - 1; i >= 0; i--) {
|
320
366
|
const upb_msglayout_field *f = &m->fields[i];
|
321
367
|
|
322
|
-
if (f
|
368
|
+
if (_upb_isrepeated(f)) {
|
323
369
|
CHK(upb_encode_array(e, msg + f->offset, m, f));
|
370
|
+
} else if (f->label == _UPB_LABEL_MAP) {
|
371
|
+
CHK(upb_encode_map(e, msg + f->offset, m, f));
|
324
372
|
} else {
|
325
373
|
bool skip_empty = false;
|
326
374
|
if (f->presence == 0) {
|
@@ -328,12 +376,12 @@ bool upb_encode_message(upb_encstate *e, const char *msg,
|
|
328
376
|
skip_empty = true;
|
329
377
|
} else if (f->presence > 0) {
|
330
378
|
/* Proto2 presence: hasbit. */
|
331
|
-
if (!
|
379
|
+
if (!_upb_hasbit_field(msg, f)) {
|
332
380
|
continue;
|
333
381
|
}
|
334
382
|
} else {
|
335
383
|
/* Field is in a oneof. */
|
336
|
-
if (
|
384
|
+
if (_upb_getoneofcase_field(msg, f) != f->number) {
|
337
385
|
continue;
|
338
386
|
}
|
339
387
|
}
|
@@ -341,12 +389,6 @@ bool upb_encode_message(upb_encstate *e, const char *msg,
|
|
341
389
|
}
|
342
390
|
}
|
343
391
|
|
344
|
-
unknown = upb_msg_getunknown(msg, &unknown_size);
|
345
|
-
|
346
|
-
if (unknown) {
|
347
|
-
upb_put_bytes(e, unknown, unknown_size);
|
348
|
-
}
|
349
|
-
|
350
392
|
*size = (e->limit - e->ptr) - pre_len;
|
351
393
|
return true;
|
352
394
|
}
|
data/third_party/upb/upb/msg.c
CHANGED
@@ -5,24 +5,27 @@
|
|
5
5
|
|
6
6
|
#include "upb/port_def.inc"
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
/*
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
/*
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
8
|
+
/** upb_msg *******************************************************************/
|
9
|
+
|
10
|
+
static const char _upb_fieldtype_to_sizelg2[12] = {
|
11
|
+
0,
|
12
|
+
0, /* UPB_TYPE_BOOL */
|
13
|
+
2, /* UPB_TYPE_FLOAT */
|
14
|
+
2, /* UPB_TYPE_INT32 */
|
15
|
+
2, /* UPB_TYPE_UINT32 */
|
16
|
+
2, /* UPB_TYPE_ENUM */
|
17
|
+
UPB_SIZE(2, 3), /* UPB_TYPE_MESSAGE */
|
18
|
+
3, /* UPB_TYPE_DOUBLE */
|
19
|
+
3, /* UPB_TYPE_INT64 */
|
20
|
+
3, /* UPB_TYPE_UINT64 */
|
21
|
+
UPB_SIZE(3, 4), /* UPB_TYPE_STRING */
|
22
|
+
UPB_SIZE(3, 4), /* UPB_TYPE_BYTES */
|
23
|
+
};
|
24
|
+
|
25
|
+
static uintptr_t tag_arrptr(void* ptr, int elem_size_lg2) {
|
26
|
+
UPB_ASSERT(elem_size_lg2 <= 4);
|
27
|
+
return (uintptr_t)ptr | elem_size_lg2;
|
28
|
+
}
|
26
29
|
|
27
30
|
static int upb_msg_internalsize(const upb_msglayout *l) {
|
28
31
|
return sizeof(upb_msg_internal) - l->extendable * sizeof(void *);
|
@@ -32,80 +35,143 @@ static size_t upb_msg_sizeof(const upb_msglayout *l) {
|
|
32
35
|
return l->size + upb_msg_internalsize(l);
|
33
36
|
}
|
34
37
|
|
35
|
-
static upb_msg_internal *
|
36
|
-
|
38
|
+
static const upb_msg_internal *upb_msg_getinternal_const(const upb_msg *msg) {
|
39
|
+
ptrdiff_t size = sizeof(upb_msg_internal);
|
40
|
+
return UPB_PTR_AT(msg, -size, upb_msg_internal);
|
37
41
|
}
|
38
42
|
|
39
|
-
static
|
40
|
-
return
|
43
|
+
static upb_msg_internal *upb_msg_getinternal(upb_msg *msg) {
|
44
|
+
return (upb_msg_internal*)upb_msg_getinternal_const(msg);
|
41
45
|
}
|
42
46
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
+
void _upb_msg_clear(upb_msg *msg, const upb_msglayout *l) {
|
48
|
+
ptrdiff_t internal = upb_msg_internalsize(l);
|
49
|
+
void *mem = UPB_PTR_AT(msg, -internal, char);
|
50
|
+
memset(mem, 0, l->size + internal);
|
47
51
|
}
|
48
52
|
|
49
|
-
upb_msg *
|
50
|
-
|
51
|
-
void *mem = upb_malloc(alloc, upb_msg_sizeof(l));
|
52
|
-
upb_msg_internal *in;
|
53
|
+
upb_msg *_upb_msg_new(const upb_msglayout *l, upb_arena *a) {
|
54
|
+
void *mem = upb_arena_malloc(a, upb_msg_sizeof(l));
|
53
55
|
upb_msg *msg;
|
54
56
|
|
55
57
|
if (!mem) {
|
56
58
|
return NULL;
|
57
59
|
}
|
58
60
|
|
59
|
-
msg =
|
60
|
-
|
61
|
-
/* Initialize normal members. */
|
62
|
-
memset(msg, 0, l->size);
|
63
|
-
|
64
|
-
/* Initialize internal members. */
|
65
|
-
in = upb_msg_getinternal(msg);
|
66
|
-
in->unknown = NULL;
|
67
|
-
in->unknown_len = 0;
|
68
|
-
in->unknown_size = 0;
|
69
|
-
|
70
|
-
if (l->extendable) {
|
71
|
-
upb_msg_getinternalwithext(msg, l)->extdict = NULL;
|
72
|
-
}
|
73
|
-
|
61
|
+
msg = UPB_PTR_AT(mem, upb_msg_internalsize(l), upb_msg);
|
62
|
+
_upb_msg_clear(msg, l);
|
74
63
|
return msg;
|
75
64
|
}
|
76
65
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
if (!ret) {
|
81
|
-
return NULL;
|
82
|
-
}
|
83
|
-
|
84
|
-
ret->data = NULL;
|
85
|
-
ret->len = 0;
|
86
|
-
ret->size = 0;
|
87
|
-
|
88
|
-
return ret;
|
89
|
-
}
|
90
|
-
|
91
|
-
void upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
|
92
|
-
upb_arena *arena) {
|
66
|
+
bool _upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
|
67
|
+
upb_arena *arena) {
|
93
68
|
upb_msg_internal *in = upb_msg_getinternal(msg);
|
94
69
|
if (len > in->unknown_size - in->unknown_len) {
|
95
70
|
upb_alloc *alloc = upb_arena_alloc(arena);
|
96
71
|
size_t need = in->unknown_size + len;
|
97
72
|
size_t newsize = UPB_MAX(in->unknown_size * 2, need);
|
98
|
-
|
73
|
+
void *mem = upb_realloc(alloc, in->unknown, in->unknown_size, newsize);
|
74
|
+
if (!mem) return false;
|
75
|
+
in->unknown = mem;
|
99
76
|
in->unknown_size = newsize;
|
100
77
|
}
|
101
78
|
memcpy(in->unknown + in->unknown_len, data, len);
|
102
79
|
in->unknown_len += len;
|
80
|
+
return true;
|
81
|
+
}
|
82
|
+
|
83
|
+
void _upb_msg_discardunknown_shallow(upb_msg *msg) {
|
84
|
+
upb_msg_internal *in = upb_msg_getinternal(msg);
|
85
|
+
in->unknown_len = 0;
|
103
86
|
}
|
104
87
|
|
105
88
|
const char *upb_msg_getunknown(const upb_msg *msg, size_t *len) {
|
106
|
-
const upb_msg_internal*
|
89
|
+
const upb_msg_internal *in = upb_msg_getinternal_const(msg);
|
107
90
|
*len = in->unknown_len;
|
108
91
|
return in->unknown;
|
109
92
|
}
|
110
93
|
|
111
|
-
|
94
|
+
/** upb_array *****************************************************************/
|
95
|
+
|
96
|
+
upb_array *_upb_array_new(upb_arena *a, upb_fieldtype_t type) {
|
97
|
+
upb_array *arr = upb_arena_malloc(a, sizeof(upb_array));
|
98
|
+
|
99
|
+
if (!arr) {
|
100
|
+
return NULL;
|
101
|
+
}
|
102
|
+
|
103
|
+
arr->data = tag_arrptr(NULL, _upb_fieldtype_to_sizelg2[type]);
|
104
|
+
arr->len = 0;
|
105
|
+
arr->size = 0;
|
106
|
+
|
107
|
+
return arr;
|
108
|
+
}
|
109
|
+
|
110
|
+
bool _upb_array_realloc(upb_array *arr, size_t min_size, upb_arena *arena) {
|
111
|
+
size_t new_size = UPB_MAX(arr->size, 4);
|
112
|
+
int elem_size_lg2 = arr->data & 7;
|
113
|
+
size_t old_bytes = arr->size << elem_size_lg2;
|
114
|
+
size_t new_bytes;
|
115
|
+
void* ptr = _upb_array_ptr(arr);
|
116
|
+
|
117
|
+
/* Log2 ceiling of size. */
|
118
|
+
while (new_size < min_size) new_size *= 2;
|
119
|
+
|
120
|
+
new_bytes = new_size << elem_size_lg2;
|
121
|
+
ptr = upb_arena_realloc(arena, ptr, old_bytes, new_bytes);
|
122
|
+
|
123
|
+
if (!ptr) {
|
124
|
+
return false;
|
125
|
+
}
|
126
|
+
|
127
|
+
arr->data = tag_arrptr(ptr, elem_size_lg2);
|
128
|
+
arr->size = new_size;
|
129
|
+
return true;
|
130
|
+
}
|
131
|
+
|
132
|
+
static upb_array *getorcreate_array(upb_array **arr_ptr, upb_fieldtype_t type,
|
133
|
+
upb_arena *arena) {
|
134
|
+
upb_array *arr = *arr_ptr;
|
135
|
+
if (!arr) {
|
136
|
+
arr = _upb_array_new(arena, type);
|
137
|
+
if (!arr) return NULL;
|
138
|
+
*arr_ptr = arr;
|
139
|
+
}
|
140
|
+
return arr;
|
141
|
+
}
|
142
|
+
|
143
|
+
void *_upb_array_resize_fallback(upb_array **arr_ptr, size_t size,
|
144
|
+
upb_fieldtype_t type, upb_arena *arena) {
|
145
|
+
upb_array *arr = getorcreate_array(arr_ptr, type, arena);
|
146
|
+
return arr && _upb_array_resize(arr, size, arena) ? _upb_array_ptr(arr) : NULL;
|
147
|
+
}
|
148
|
+
|
149
|
+
bool _upb_array_append_fallback(upb_array **arr_ptr, const void *value,
|
150
|
+
upb_fieldtype_t type, upb_arena *arena) {
|
151
|
+
upb_array *arr = getorcreate_array(arr_ptr, type, arena);
|
152
|
+
size_t elem = arr->len;
|
153
|
+
int lg2 = _upb_fieldtype_to_sizelg2[type];
|
154
|
+
char *data;
|
155
|
+
|
156
|
+
if (!arr || !_upb_array_resize(arr, elem + 1, arena)) return false;
|
157
|
+
|
158
|
+
data = _upb_array_ptr(arr);
|
159
|
+
memcpy(data + (elem << lg2), value, 1 << lg2);
|
160
|
+
return true;
|
161
|
+
}
|
162
|
+
|
163
|
+
/** upb_map *******************************************************************/
|
164
|
+
|
165
|
+
upb_map *_upb_map_new(upb_arena *a, size_t key_size, size_t value_size) {
|
166
|
+
upb_map *map = upb_arena_malloc(a, sizeof(upb_map));
|
167
|
+
|
168
|
+
if (!map) {
|
169
|
+
return NULL;
|
170
|
+
}
|
171
|
+
|
172
|
+
upb_strtable_init2(&map->table, UPB_CTYPE_INT32, upb_arena_alloc(a));
|
173
|
+
map->key_size = key_size;
|
174
|
+
map->val_size = value_size;
|
175
|
+
|
176
|
+
return map;
|
177
|
+
}
|