grpc 1.34.0 → 1.35.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 +808 -2787
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +14 -0
- data/include/grpc/grpc_security.h +61 -3
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +1 -1
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
- data/src/core/ext/filters/client_channel/client_channel.h +0 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
- data/src/core/ext/filters/client_channel/subchannel.h +12 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/xds/certificate_provider_store.cc +10 -7
- data/src/core/ext/xds/certificate_provider_store.h +12 -7
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
- data/src/core/ext/xds/xds_api.cc +220 -31
- data/src/core/ext/xds/xds_api.h +41 -10
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
- data/src/core/ext/xds/xds_certificate_provider.h +40 -2
- data/src/core/ext/xds/xds_client.cc +31 -29
- data/src/core/ext/xds/xds_client.h +6 -1
- data/src/core/ext/xds/xds_client_stats.cc +2 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
- data/src/core/lib/channel/channel_args.cc +8 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +13 -14
- data/src/core/lib/channel/channelz.h +0 -1
- data/src/core/lib/channel/channelz_registry.h +0 -1
- data/src/core/lib/channel/handshaker.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/debug/stats.h +2 -2
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/log.cc +53 -16
- data/src/core/lib/gpr/log_linux.cc +3 -1
- data/src/core/lib/gpr/log_posix.cc +3 -1
- data/src/core/lib/gpr/log_windows.cc +3 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +22 -21
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/ref_counted.h +2 -2
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
- data/src/core/lib/gprpp/thd_posix.cc +6 -1
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +1 -1
- data/src/core/lib/http/parser.cc +1 -2
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/error.cc +15 -11
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/exec_ctx.h +6 -4
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/threadpool.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +52 -46
- data/src/core/lib/iomgr/parse_address.h +13 -9
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/timer_custom.cc +3 -3
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
- data/src/core/lib/json/json.h +10 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
- data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +3 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +32 -24
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +16 -10
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +23 -18
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +6 -5
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +59 -15
- data/src/core/lib/surface/server.h +37 -5
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/authority_override.cc +6 -4
- data/src/core/lib/transport/authority_override.h +5 -2
- data/src/core/lib/transport/connectivity_state.h +6 -4
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/transport.h +7 -7
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +5 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +62 -49
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +6 -6
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +525 -516
- data/third_party/upb/upb/def.h +16 -31
- data/third_party/upb/upb/def.hpp +37 -123
- data/third_party/upb/upb/encode.c +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +36 -19
- data/third_party/upb/upb/table.c +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- data/third_party/upb/upb/text_encode.c +45 -22
- data/third_party/upb/upb/text_encode.h +4 -1
- data/third_party/upb/upb/upb.c +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +60 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/third_party/upb/upb/port.c +0 -26
@@ -21,31 +21,67 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <stddef.h>
|
25
|
+
|
26
|
+
#include <map>
|
27
|
+
#include <string>
|
28
|
+
#include <vector>
|
29
|
+
|
30
|
+
#include "absl/status/statusor.h"
|
24
31
|
#include "absl/strings/string_view.h"
|
25
32
|
|
26
|
-
|
33
|
+
namespace grpc_core {
|
27
34
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
class URI {
|
36
|
+
public:
|
37
|
+
struct QueryParam {
|
38
|
+
std::string key;
|
39
|
+
std::string value;
|
40
|
+
bool operator==(const QueryParam& other) const {
|
41
|
+
return key == other.key && value == other.value;
|
42
|
+
}
|
43
|
+
};
|
44
|
+
|
45
|
+
// Creates an instance of GrpcURI by parsing an rfc3986 URI string. Returns
|
46
|
+
// an IllegalArgumentError on failure.
|
47
|
+
static absl::StatusOr<URI> Parse(absl::string_view uri_text);
|
48
|
+
// Explicit construction by individual URI components
|
49
|
+
URI(std::string scheme, std::string authority, std::string path,
|
50
|
+
std::vector<QueryParam> query_parameter_pairs, std::string fragment_);
|
51
|
+
URI() = default;
|
52
|
+
// Copy construction and assignment
|
53
|
+
URI(const URI& other);
|
54
|
+
URI& operator=(const URI& other);
|
55
|
+
// Move construction and assignment
|
56
|
+
URI(URI&&) = default;
|
57
|
+
URI& operator=(URI&&) = default;
|
43
58
|
|
44
|
-
|
45
|
-
|
46
|
-
const
|
59
|
+
const std::string& scheme() const { return scheme_; }
|
60
|
+
const std::string& authority() const { return authority_; }
|
61
|
+
const std::string& path() const { return path_; }
|
62
|
+
// Stores the *last* value appearing for each repeated key in the query
|
63
|
+
// string. If you need to capture repeated query parameters, use
|
64
|
+
// `query_parameter_pairs`.
|
65
|
+
const std::map<absl::string_view, absl::string_view>& query_parameter_map()
|
66
|
+
const {
|
67
|
+
return query_parameter_map_;
|
68
|
+
}
|
69
|
+
// A vector of key:value query parameter pairs, kept in order of appearance
|
70
|
+
// within the URI search string. Repeated keys are represented as separate
|
71
|
+
// key:value elements.
|
72
|
+
const std::vector<QueryParam>& query_parameter_pairs() const {
|
73
|
+
return query_parameter_pairs_;
|
74
|
+
}
|
75
|
+
const std::string& fragment() const { return fragment_; }
|
47
76
|
|
48
|
-
|
49
|
-
|
77
|
+
private:
|
78
|
+
std::string scheme_;
|
79
|
+
std::string authority_;
|
80
|
+
std::string path_;
|
81
|
+
std::map<absl::string_view, absl::string_view> query_parameter_map_;
|
82
|
+
std::vector<QueryParam> query_parameter_pairs_;
|
83
|
+
std::string fragment_;
|
84
|
+
};
|
85
|
+
} // namespace grpc_core
|
50
86
|
|
51
87
|
#endif /* GRPC_CORE_LIB_URI_URI_PARSER_H */
|
@@ -68,12 +68,16 @@ void XdsClientGlobalShutdown();
|
|
68
68
|
} // namespace grpc_core
|
69
69
|
void grpc_certificate_provider_registry_init(void);
|
70
70
|
void grpc_certificate_provider_registry_shutdown(void);
|
71
|
+
namespace grpc_core {
|
72
|
+
void FileWatcherCertificateProviderInit();
|
73
|
+
void FileWatcherCertificateProviderShutdown();
|
74
|
+
} // namespace grpc_core
|
71
75
|
void grpc_lb_policy_cds_init(void);
|
72
76
|
void grpc_lb_policy_cds_shutdown(void);
|
73
|
-
void grpc_lb_policy_eds_init(void);
|
74
|
-
void grpc_lb_policy_eds_shutdown(void);
|
75
77
|
void grpc_lb_policy_xds_cluster_impl_init(void);
|
76
78
|
void grpc_lb_policy_xds_cluster_impl_shutdown(void);
|
79
|
+
void grpc_lb_policy_xds_cluster_resolver_init(void);
|
80
|
+
void grpc_lb_policy_xds_cluster_resolver_shutdown(void);
|
77
81
|
void grpc_lb_policy_xds_cluster_manager_init(void);
|
78
82
|
void grpc_lb_policy_xds_cluster_manager_shutdown(void);
|
79
83
|
void grpc_resolver_xds_init(void);
|
@@ -126,12 +130,14 @@ void grpc_register_built_in_plugins(void) {
|
|
126
130
|
grpc_core::XdsClientGlobalShutdown);
|
127
131
|
grpc_register_plugin(grpc_certificate_provider_registry_init,
|
128
132
|
grpc_certificate_provider_registry_shutdown);
|
133
|
+
grpc_register_plugin(grpc_core::FileWatcherCertificateProviderInit,
|
134
|
+
grpc_core::FileWatcherCertificateProviderShutdown);
|
129
135
|
grpc_register_plugin(grpc_lb_policy_cds_init,
|
130
136
|
grpc_lb_policy_cds_shutdown);
|
131
|
-
grpc_register_plugin(grpc_lb_policy_eds_init,
|
132
|
-
grpc_lb_policy_eds_shutdown);
|
133
137
|
grpc_register_plugin(grpc_lb_policy_xds_cluster_impl_init,
|
134
138
|
grpc_lb_policy_xds_cluster_impl_shutdown);
|
139
|
+
grpc_register_plugin(grpc_lb_policy_xds_cluster_resolver_init,
|
140
|
+
grpc_lb_policy_xds_cluster_resolver_shutdown);
|
135
141
|
grpc_register_plugin(grpc_lb_policy_xds_cluster_manager_init,
|
136
142
|
grpc_lb_policy_xds_cluster_manager_shutdown);
|
137
143
|
grpc_register_plugin(grpc_resolver_xds_init,
|
@@ -43,8 +43,9 @@ grpc_status_code gsec_aead_crypter_encrypt(
|
|
43
43
|
char** error_details) {
|
44
44
|
if (crypter != nullptr && crypter->vtable != nullptr &&
|
45
45
|
crypter->vtable->encrypt_iovec != nullptr) {
|
46
|
-
struct iovec aad_vec = {(
|
47
|
-
struct iovec plaintext_vec = {(
|
46
|
+
struct iovec aad_vec = {const_cast<uint8_t*>(aad), aad_length};
|
47
|
+
struct iovec plaintext_vec = {const_cast<uint8_t*>(plaintext),
|
48
|
+
plaintext_length};
|
48
49
|
struct iovec ciphertext_vec = {ciphertext_and_tag,
|
49
50
|
ciphertext_and_tag_length};
|
50
51
|
return crypter->vtable->encrypt_iovec(
|
@@ -81,8 +82,8 @@ grpc_status_code gsec_aead_crypter_decrypt(
|
|
81
82
|
size_t plaintext_length, size_t* bytes_written, char** error_details) {
|
82
83
|
if (crypter != nullptr && crypter->vtable != nullptr &&
|
83
84
|
crypter->vtable->decrypt_iovec != nullptr) {
|
84
|
-
struct iovec aad_vec = {(
|
85
|
-
struct iovec ciphertext_vec = {(
|
85
|
+
struct iovec aad_vec = {const_cast<uint8_t*>(aad), aad_length};
|
86
|
+
struct iovec ciphertext_vec = {const_cast<uint8_t*>(ciphertext_and_tag),
|
86
87
|
ciphertext_and_tag_length};
|
87
88
|
struct iovec plaintext_vec = {plaintext, plaintext_length};
|
88
89
|
return crypter->vtable->decrypt_iovec(
|
@@ -31,16 +31,18 @@
|
|
31
31
|
|
32
32
|
/* Use little endian to interpret a string of bytes as uint32_t. */
|
33
33
|
static uint32_t load_32_le(const unsigned char* buffer) {
|
34
|
-
return ((
|
35
|
-
((
|
34
|
+
return (static_cast<uint32_t>(buffer[3]) << 24) |
|
35
|
+
(static_cast<uint32_t>(buffer[2]) << 16) |
|
36
|
+
(static_cast<uint32_t>(buffer[1]) << 8) |
|
37
|
+
static_cast<uint32_t>(buffer[0]);
|
36
38
|
}
|
37
39
|
|
38
40
|
/* Store uint32_t as a string of little endian bytes. */
|
39
41
|
static void store_32_le(uint32_t value, unsigned char* buffer) {
|
40
|
-
buffer[3] =
|
41
|
-
buffer[2] =
|
42
|
-
buffer[1] =
|
43
|
-
buffer[0] =
|
42
|
+
buffer[3] = static_cast<unsigned char>(value >> 24) & 0xFF;
|
43
|
+
buffer[2] = static_cast<unsigned char>(value >> 16) & 0xFF;
|
44
|
+
buffer[1] = static_cast<unsigned char>(value >> 8) & 0xFF;
|
45
|
+
buffer[0] = static_cast<unsigned char>(value) & 0xFF;
|
44
46
|
}
|
45
47
|
|
46
48
|
/* Frame writer implementation. */
|
@@ -279,7 +279,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
279
279
|
if (code != GRPC_STATUS_OK) {
|
280
280
|
upb_strview details = grpc_gcp_HandshakerStatus_details(resp_status);
|
281
281
|
if (details.size > 0) {
|
282
|
-
char* error_details = (
|
282
|
+
char* error_details = static_cast<char*>(gpr_zalloc(details.size + 1));
|
283
283
|
memcpy(error_details, details.data, details.size);
|
284
284
|
gpr_log(GPR_ERROR, "Error from handshaker service:%s", error_details);
|
285
285
|
gpr_free(error_details);
|
@@ -253,8 +253,8 @@ static const tsi_handshaker_result_vtable result_vtable = {
|
|
253
253
|
|
254
254
|
tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
|
255
255
|
bool is_client,
|
256
|
-
tsi_handshaker_result**
|
257
|
-
if (
|
256
|
+
tsi_handshaker_result** result) {
|
257
|
+
if (result == nullptr || resp == nullptr) {
|
258
258
|
gpr_log(GPR_ERROR, "Invalid arguments to create_handshaker_result()");
|
259
259
|
return TSI_INVALID_ARGUMENT;
|
260
260
|
}
|
@@ -305,19 +305,19 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
|
|
305
305
|
grpc_gcp_Identity_service_account(local_identity);
|
306
306
|
// We don't check if local service account is empty here
|
307
307
|
// because local identity could be empty in certain situations.
|
308
|
-
alts_tsi_handshaker_result*
|
309
|
-
static_cast<alts_tsi_handshaker_result*>(gpr_zalloc(sizeof(*
|
310
|
-
|
308
|
+
alts_tsi_handshaker_result* sresult =
|
309
|
+
static_cast<alts_tsi_handshaker_result*>(gpr_zalloc(sizeof(*sresult)));
|
310
|
+
sresult->key_data =
|
311
311
|
static_cast<char*>(gpr_zalloc(kAltsAes128GcmRekeyKeyLength));
|
312
|
-
memcpy(
|
313
|
-
|
312
|
+
memcpy(sresult->key_data, key_data.data, kAltsAes128GcmRekeyKeyLength);
|
313
|
+
sresult->peer_identity =
|
314
314
|
static_cast<char*>(gpr_zalloc(peer_service_account.size + 1));
|
315
|
-
memcpy(
|
315
|
+
memcpy(sresult->peer_identity, peer_service_account.data,
|
316
316
|
peer_service_account.size);
|
317
|
-
|
317
|
+
sresult->max_frame_size = grpc_gcp_HandshakerResult_max_frame_size(hresult);
|
318
318
|
upb::Arena rpc_versions_arena;
|
319
319
|
bool serialized = grpc_gcp_rpc_protocol_versions_encode(
|
320
|
-
peer_rpc_version, rpc_versions_arena.ptr(), &
|
320
|
+
peer_rpc_version, rpc_versions_arena.ptr(), &sresult->rpc_versions);
|
321
321
|
if (!serialized) {
|
322
322
|
gpr_log(GPR_ERROR, "Failed to serialize peer's RPC protocol versions.");
|
323
323
|
return TSI_FAILED_PRECONDITION;
|
@@ -363,11 +363,11 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
|
|
363
363
|
gpr_log(GPR_ERROR, "Failed to serialize peer's ALTS context.");
|
364
364
|
return TSI_FAILED_PRECONDITION;
|
365
365
|
}
|
366
|
-
|
366
|
+
sresult->serialized_context =
|
367
367
|
grpc_slice_from_copied_buffer(serialized_ctx, serialized_ctx_length);
|
368
|
-
|
369
|
-
|
370
|
-
*
|
368
|
+
sresult->is_client = is_client;
|
369
|
+
sresult->base.vtable = &result_vtable;
|
370
|
+
*result = &sresult->base;
|
371
371
|
return TSI_OK;
|
372
372
|
}
|
373
373
|
|
@@ -652,21 +652,21 @@ tsi_result alts_tsi_handshaker_create(
|
|
652
652
|
return TSI_OK;
|
653
653
|
}
|
654
654
|
|
655
|
-
void alts_tsi_handshaker_result_set_unused_bytes(tsi_handshaker_result*
|
655
|
+
void alts_tsi_handshaker_result_set_unused_bytes(tsi_handshaker_result* result,
|
656
656
|
grpc_slice* recv_bytes,
|
657
657
|
size_t bytes_consumed) {
|
658
|
-
GPR_ASSERT(recv_bytes != nullptr &&
|
658
|
+
GPR_ASSERT(recv_bytes != nullptr && result != nullptr);
|
659
659
|
if (GRPC_SLICE_LENGTH(*recv_bytes) == bytes_consumed) {
|
660
660
|
return;
|
661
661
|
}
|
662
|
-
alts_tsi_handshaker_result*
|
663
|
-
reinterpret_cast<alts_tsi_handshaker_result*>(
|
664
|
-
|
665
|
-
|
666
|
-
static_cast<unsigned char*>(gpr_zalloc(
|
667
|
-
memcpy(
|
662
|
+
alts_tsi_handshaker_result* sresult =
|
663
|
+
reinterpret_cast<alts_tsi_handshaker_result*>(result);
|
664
|
+
sresult->unused_bytes_size = GRPC_SLICE_LENGTH(*recv_bytes) - bytes_consumed;
|
665
|
+
sresult->unused_bytes =
|
666
|
+
static_cast<unsigned char*>(gpr_zalloc(sresult->unused_bytes_size));
|
667
|
+
memcpy(sresult->unused_bytes,
|
668
668
|
GRPC_SLICE_START_PTR(*recv_bytes) + bytes_consumed,
|
669
|
-
|
669
|
+
sresult->unused_bytes_size);
|
670
670
|
}
|
671
671
|
|
672
672
|
namespace grpc_core {
|
@@ -56,16 +56,18 @@ static void maybe_append_error_msg(const char* appendix, char** dst) {
|
|
56
56
|
|
57
57
|
/* Use little endian to interpret a string of bytes as uint32_t. */
|
58
58
|
static uint32_t load_32_le(const unsigned char* buffer) {
|
59
|
-
return ((
|
60
|
-
((
|
59
|
+
return (static_cast<uint32_t>(buffer[3]) << 24) |
|
60
|
+
(static_cast<uint32_t>(buffer[2]) << 16) |
|
61
|
+
(static_cast<uint32_t>(buffer[1]) << 8) |
|
62
|
+
static_cast<uint32_t>(buffer[0]);
|
61
63
|
}
|
62
64
|
|
63
65
|
/* Store uint32_t as a string of little endian bytes. */
|
64
66
|
static void store_32_le(uint32_t value, unsigned char* buffer) {
|
65
|
-
buffer[3] =
|
66
|
-
buffer[2] =
|
67
|
-
buffer[1] =
|
68
|
-
buffer[0] =
|
67
|
+
buffer[3] = static_cast<unsigned char>(value >> 24) & 0xFF;
|
68
|
+
buffer[2] = static_cast<unsigned char>(value >> 16) & 0xFF;
|
69
|
+
buffer[1] = static_cast<unsigned char>(value >> 8) & 0xFF;
|
70
|
+
buffer[0] = static_cast<unsigned char>(value) & 0xFF;
|
69
71
|
}
|
70
72
|
|
71
73
|
/* Ensures header and tag iovec have sufficient length. */
|
@@ -87,10 +87,10 @@ static bool read_frame_size(const grpc_slice_buffer* sb,
|
|
87
87
|
}
|
88
88
|
GPR_ASSERT(remaining == 0);
|
89
89
|
/* Gets little-endian frame size. */
|
90
|
-
uint32_t frame_size = ((
|
91
|
-
((
|
92
|
-
((
|
93
|
-
(
|
90
|
+
uint32_t frame_size = (static_cast<uint32_t>(frame_size_buffer[3]) << 24) |
|
91
|
+
(static_cast<uint32_t>(frame_size_buffer[2]) << 16) |
|
92
|
+
(static_cast<uint32_t>(frame_size_buffer[1]) << 8) |
|
93
|
+
static_cast<uint32_t>(frame_size_buffer[0]);
|
94
94
|
if (frame_size > kMaxFrameLength) {
|
95
95
|
gpr_log(GPR_ERROR, "Frame size is larger than maximum frame size");
|
96
96
|
return false;
|
@@ -524,7 +524,8 @@ static tsi_result fake_handshaker_result_create_frame_protector(
|
|
524
524
|
static tsi_result fake_handshaker_result_get_unused_bytes(
|
525
525
|
const tsi_handshaker_result* self, const unsigned char** bytes,
|
526
526
|
size_t* bytes_size) {
|
527
|
-
fake_handshaker_result* result = (
|
527
|
+
fake_handshaker_result* result = reinterpret_cast<fake_handshaker_result*>(
|
528
|
+
const_cast<tsi_handshaker_result*>(self));
|
528
529
|
*bytes_size = result->unused_bytes_size;
|
529
530
|
*bytes = result->unused_bytes;
|
530
531
|
return TSI_OK;
|
@@ -581,8 +582,9 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
581
582
|
static_cast<tsi_fake_handshake_message>(impl->next_message_to_send + 2);
|
582
583
|
const char* msg_string =
|
583
584
|
tsi_fake_handshake_message_to_string(impl->next_message_to_send);
|
584
|
-
result = tsi_fake_frame_set_data(
|
585
|
-
|
585
|
+
result = tsi_fake_frame_set_data(
|
586
|
+
reinterpret_cast<unsigned char*>(const_cast<char*>(msg_string)),
|
587
|
+
strlen(msg_string), &impl->outgoing_frame);
|
586
588
|
if (result != TSI_OK) return result;
|
587
589
|
if (next_message_to_send > TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
|
588
590
|
next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX;
|
@@ -32,7 +32,7 @@ namespace {
|
|
32
32
|
|
33
33
|
class BoringSslCachedSession : public SslCachedSession {
|
34
34
|
public:
|
35
|
-
BoringSslCachedSession(SslSessionPtr session)
|
35
|
+
explicit BoringSslCachedSession(SslSessionPtr session)
|
36
36
|
: session_(std::move(session)) {}
|
37
37
|
|
38
38
|
SslSessionPtr CopySession() const override {
|
@@ -141,7 +141,7 @@ struct tsi_ssl_frame_protector {
|
|
141
141
|
static gpr_once g_init_openssl_once = GPR_ONCE_INIT;
|
142
142
|
static int g_ssl_ctx_ex_factory_index = -1;
|
143
143
|
static const unsigned char kSslSessionIdContext[] = {'g', 'r', 'p', 'c'};
|
144
|
-
#
|
144
|
+
#if !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_NO_ENGINE)
|
145
145
|
static const char kSslEnginePrefix[] = "engine:";
|
146
146
|
#endif
|
147
147
|
|
@@ -340,8 +340,7 @@ static tsi_result add_pem_certificate(X509* cert, tsi_peer_property* property) {
|
|
340
340
|
return TSI_INTERNAL_ERROR;
|
341
341
|
}
|
342
342
|
tsi_result result = tsi_construct_string_peer_property(
|
343
|
-
TSI_X509_PEM_CERT_PROPERTY, (
|
344
|
-
static_cast<size_t>(len), property);
|
343
|
+
TSI_X509_PEM_CERT_PROPERTY, contents, static_cast<size_t>(len), property);
|
345
344
|
BIO_free(bio);
|
346
345
|
return result;
|
347
346
|
}
|
@@ -554,12 +553,12 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context,
|
|
554
553
|
X509* certificate = nullptr;
|
555
554
|
BIO* pem;
|
556
555
|
GPR_ASSERT(pem_cert_chain_size <= INT_MAX);
|
557
|
-
pem = BIO_new_mem_buf((
|
558
|
-
static_cast<int>(pem_cert_chain_size));
|
556
|
+
pem = BIO_new_mem_buf(pem_cert_chain, static_cast<int>(pem_cert_chain_size));
|
559
557
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
560
558
|
|
561
559
|
do {
|
562
|
-
certificate =
|
560
|
+
certificate =
|
561
|
+
PEM_read_bio_X509_AUX(pem, nullptr, nullptr, const_cast<char*>(""));
|
563
562
|
if (certificate == nullptr) {
|
564
563
|
result = TSI_INVALID_ARGUMENT;
|
565
564
|
break;
|
@@ -570,7 +569,7 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context,
|
|
570
569
|
}
|
571
570
|
while (true) {
|
572
571
|
X509* certificate_authority =
|
573
|
-
PEM_read_bio_X509(pem, nullptr, nullptr, (
|
572
|
+
PEM_read_bio_X509(pem, nullptr, nullptr, const_cast<char*>(""));
|
574
573
|
if (certificate_authority == nullptr) {
|
575
574
|
ERR_clear_error();
|
576
575
|
break; /* Done reading. */
|
@@ -592,7 +591,7 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context,
|
|
592
591
|
return result;
|
593
592
|
}
|
594
593
|
|
595
|
-
#
|
594
|
+
#if !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_NO_ENGINE)
|
596
595
|
static tsi_result ssl_ctx_use_engine_private_key(SSL_CTX* context,
|
597
596
|
const char* pem_key,
|
598
597
|
size_t pem_key_size) {
|
@@ -665,7 +664,7 @@ static tsi_result ssl_ctx_use_engine_private_key(SSL_CTX* context,
|
|
665
664
|
if (engine_name != nullptr) gpr_free(engine_name);
|
666
665
|
return result;
|
667
666
|
}
|
668
|
-
#endif /* OPENSSL_IS_BORINGSSL */
|
667
|
+
#endif /* !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_NO_ENGINE) */
|
669
668
|
|
670
669
|
static tsi_result ssl_ctx_use_pem_private_key(SSL_CTX* context,
|
671
670
|
const char* pem_key,
|
@@ -674,10 +673,11 @@ static tsi_result ssl_ctx_use_pem_private_key(SSL_CTX* context,
|
|
674
673
|
EVP_PKEY* private_key = nullptr;
|
675
674
|
BIO* pem;
|
676
675
|
GPR_ASSERT(pem_key_size <= INT_MAX);
|
677
|
-
pem = BIO_new_mem_buf(
|
676
|
+
pem = BIO_new_mem_buf(pem_key, static_cast<int>(pem_key_size));
|
678
677
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
679
678
|
do {
|
680
|
-
private_key =
|
679
|
+
private_key =
|
680
|
+
PEM_read_bio_PrivateKey(pem, nullptr, nullptr, const_cast<char*>(""));
|
681
681
|
if (private_key == nullptr) {
|
682
682
|
result = TSI_INVALID_ARGUMENT;
|
683
683
|
break;
|
@@ -696,11 +696,11 @@ static tsi_result ssl_ctx_use_pem_private_key(SSL_CTX* context,
|
|
696
696
|
static tsi_result ssl_ctx_use_private_key(SSL_CTX* context, const char* pem_key,
|
697
697
|
size_t pem_key_size) {
|
698
698
|
// BoringSSL does not have ENGINE support
|
699
|
-
#
|
699
|
+
#if !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_NO_ENGINE)
|
700
700
|
if (strncmp(pem_key, kSslEnginePrefix, strlen(kSslEnginePrefix)) == 0) {
|
701
701
|
return ssl_ctx_use_engine_private_key(context, pem_key, pem_key_size);
|
702
702
|
} else
|
703
|
-
#endif /* OPENSSL_IS_BORINGSSL */
|
703
|
+
#endif /* !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_NO_ENGINE) */
|
704
704
|
{
|
705
705
|
return ssl_ctx_use_pem_private_key(context, pem_key, pem_key_size);
|
706
706
|
}
|
@@ -718,7 +718,7 @@ static tsi_result x509_store_load_certs(X509_STORE* cert_store,
|
|
718
718
|
X509_NAME* root_name = nullptr;
|
719
719
|
BIO* pem;
|
720
720
|
GPR_ASSERT(pem_roots_size <= INT_MAX);
|
721
|
-
pem = BIO_new_mem_buf(
|
721
|
+
pem = BIO_new_mem_buf(pem_roots, static_cast<int>(pem_roots_size));
|
722
722
|
if (cert_store == nullptr) return TSI_INVALID_ARGUMENT;
|
723
723
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
724
724
|
if (root_names != nullptr) {
|
@@ -727,7 +727,7 @@ static tsi_result x509_store_load_certs(X509_STORE* cert_store,
|
|
727
727
|
}
|
728
728
|
|
729
729
|
while (true) {
|
730
|
-
root = PEM_read_bio_X509_AUX(pem, nullptr, nullptr, (
|
730
|
+
root = PEM_read_bio_X509_AUX(pem, nullptr, nullptr, const_cast<char*>(""));
|
731
731
|
if (root == nullptr) {
|
732
732
|
ERR_clear_error();
|
733
733
|
break; /* We're at the end of stream. */
|
@@ -837,10 +837,10 @@ tsi_result tsi_ssl_extract_x509_subject_names_from_pem_cert(
|
|
837
837
|
tsi_result result = TSI_OK;
|
838
838
|
X509* cert = nullptr;
|
839
839
|
BIO* pem;
|
840
|
-
pem = BIO_new_mem_buf(
|
840
|
+
pem = BIO_new_mem_buf(pem_cert, static_cast<int>(strlen(pem_cert)));
|
841
841
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
842
842
|
|
843
|
-
cert = PEM_read_bio_X509(pem, nullptr, nullptr, (
|
843
|
+
cert = PEM_read_bio_X509(pem, nullptr, nullptr, const_cast<char*>(""));
|
844
844
|
if (cert == nullptr) {
|
845
845
|
gpr_log(GPR_ERROR, "Invalid certificate");
|
846
846
|
result = TSI_INVALID_ARGUMENT;
|
@@ -910,12 +910,18 @@ static tsi_result tsi_set_min_and_max_tls_versions(
|
|
910
910
|
return TSI_INVALID_ARGUMENT;
|
911
911
|
}
|
912
912
|
#if OPENSSL_VERSION_NUMBER >= 0x10100000
|
913
|
-
// Set the min TLS version of the SSL context
|
913
|
+
// Set the min TLS version of the SSL context if using OpenSSL version
|
914
|
+
// >= 1.1.0. This OpenSSL version is required because the
|
915
|
+
// |SSL_CTX_set_min_proto_version| and |SSL_CTX_set_max_proto_version| APIs
|
916
|
+
// only exist in this version range.
|
914
917
|
switch (min_tls_version) {
|
915
918
|
case tsi_tls_version::TSI_TLS1_2:
|
916
919
|
SSL_CTX_set_min_proto_version(ssl_context, TLS1_2_VERSION);
|
917
920
|
break;
|
918
921
|
#if defined(TLS1_3_VERSION)
|
922
|
+
// If the library does not support TLS 1.3 and the caller requests a minimum
|
923
|
+
// of TLS 1.3, then return an error because the caller's request cannot be
|
924
|
+
// satisfied.
|
919
925
|
case tsi_tls_version::TSI_TLS1_3:
|
920
926
|
SSL_CTX_set_min_proto_version(ssl_context, TLS1_3_VERSION);
|
921
927
|
break;
|
@@ -924,16 +930,21 @@ static tsi_result tsi_set_min_and_max_tls_versions(
|
|
924
930
|
gpr_log(GPR_INFO, "TLS version is not supported.");
|
925
931
|
return TSI_FAILED_PRECONDITION;
|
926
932
|
}
|
933
|
+
|
927
934
|
// Set the max TLS version of the SSL context.
|
928
935
|
switch (max_tls_version) {
|
929
936
|
case tsi_tls_version::TSI_TLS1_2:
|
930
937
|
SSL_CTX_set_max_proto_version(ssl_context, TLS1_2_VERSION);
|
931
938
|
break;
|
932
|
-
#if defined(TLS1_3_VERSION)
|
933
939
|
case tsi_tls_version::TSI_TLS1_3:
|
940
|
+
#if defined(TLS1_3_VERSION)
|
934
941
|
SSL_CTX_set_max_proto_version(ssl_context, TLS1_3_VERSION);
|
935
|
-
|
942
|
+
#else
|
943
|
+
// If the library does not support TLS 1.3, then set the max TLS version
|
944
|
+
// to TLS 1.2 instead.
|
945
|
+
SSL_CTX_set_max_proto_version(ssl_context, TLS1_2_VERSION);
|
936
946
|
#endif
|
947
|
+
break;
|
937
948
|
default:
|
938
949
|
gpr_log(GPR_INFO, "TLS version is not supported.");
|
939
950
|
return TSI_FAILED_PRECONDITION;
|
@@ -1150,11 +1161,11 @@ static const tsi_frame_protector_vtable frame_protector_vtable = {
|
|
1150
1161
|
/* --- tsi_server_handshaker_factory methods implementation. --- */
|
1151
1162
|
|
1152
1163
|
static void tsi_ssl_handshaker_factory_destroy(
|
1153
|
-
tsi_ssl_handshaker_factory*
|
1154
|
-
if (
|
1164
|
+
tsi_ssl_handshaker_factory* factory) {
|
1165
|
+
if (factory == nullptr) return;
|
1155
1166
|
|
1156
|
-
if (
|
1157
|
-
|
1167
|
+
if (factory->vtable != nullptr && factory->vtable->destroy != nullptr) {
|
1168
|
+
factory->vtable->destroy(factory);
|
1158
1169
|
}
|
1159
1170
|
/* Note, we don't free(self) here because this object is always directly
|
1160
1171
|
* embedded in another object. If tsi_ssl_handshaker_factory_init allocates
|
@@ -1162,17 +1173,18 @@ static void tsi_ssl_handshaker_factory_destroy(
|
|
1162
1173
|
}
|
1163
1174
|
|
1164
1175
|
static tsi_ssl_handshaker_factory* tsi_ssl_handshaker_factory_ref(
|
1165
|
-
tsi_ssl_handshaker_factory*
|
1166
|
-
if (
|
1167
|
-
gpr_refn(&
|
1168
|
-
return
|
1176
|
+
tsi_ssl_handshaker_factory* factory) {
|
1177
|
+
if (factory == nullptr) return nullptr;
|
1178
|
+
gpr_refn(&factory->refcount, 1);
|
1179
|
+
return factory;
|
1169
1180
|
}
|
1170
1181
|
|
1171
|
-
static void tsi_ssl_handshaker_factory_unref(
|
1172
|
-
|
1182
|
+
static void tsi_ssl_handshaker_factory_unref(
|
1183
|
+
tsi_ssl_handshaker_factory* factory) {
|
1184
|
+
if (factory == nullptr) return;
|
1173
1185
|
|
1174
|
-
if (gpr_unref(&
|
1175
|
-
tsi_ssl_handshaker_factory_destroy(
|
1186
|
+
if (gpr_unref(&factory->refcount)) {
|
1187
|
+
tsi_ssl_handshaker_factory_destroy(factory);
|
1176
1188
|
}
|
1177
1189
|
}
|
1178
1190
|
|
@@ -1206,8 +1218,8 @@ tsi_result tsi_ssl_get_cert_chain_contents(STACK_OF(X509) * peer_chain,
|
|
1206
1218
|
return TSI_INTERNAL_ERROR;
|
1207
1219
|
}
|
1208
1220
|
tsi_result result = tsi_construct_string_peer_property(
|
1209
|
-
TSI_X509_PEM_CERT_CHAIN_PROPERTY, (
|
1210
|
-
|
1221
|
+
TSI_X509_PEM_CERT_CHAIN_PROPERTY, contents, static_cast<size_t>(len),
|
1222
|
+
property);
|
1211
1223
|
BIO_free(bio);
|
1212
1224
|
return result;
|
1213
1225
|
}
|
@@ -1682,16 +1694,17 @@ static int select_protocol_list(const unsigned char** out,
|
|
1682
1694
|
/* --- tsi_ssl_client_handshaker_factory methods implementation. --- */
|
1683
1695
|
|
1684
1696
|
tsi_result tsi_ssl_client_handshaker_factory_create_handshaker(
|
1685
|
-
tsi_ssl_client_handshaker_factory*
|
1686
|
-
tsi_handshaker** handshaker) {
|
1687
|
-
return create_tsi_ssl_handshaker(
|
1688
|
-
&
|
1697
|
+
tsi_ssl_client_handshaker_factory* factory,
|
1698
|
+
const char* server_name_indication, tsi_handshaker** handshaker) {
|
1699
|
+
return create_tsi_ssl_handshaker(factory->ssl_context, 1,
|
1700
|
+
server_name_indication, &factory->base,
|
1701
|
+
handshaker);
|
1689
1702
|
}
|
1690
1703
|
|
1691
1704
|
void tsi_ssl_client_handshaker_factory_unref(
|
1692
|
-
tsi_ssl_client_handshaker_factory*
|
1693
|
-
if (
|
1694
|
-
tsi_ssl_handshaker_factory_unref(&
|
1705
|
+
tsi_ssl_client_handshaker_factory* factory) {
|
1706
|
+
if (factory == nullptr) return;
|
1707
|
+
tsi_ssl_handshaker_factory_unref(&factory->base);
|
1695
1708
|
}
|
1696
1709
|
|
1697
1710
|
static void tsi_ssl_client_handshaker_factory_destroy(
|
@@ -1710,7 +1723,7 @@ static int client_handshaker_factory_npn_callback(
|
|
1710
1723
|
const unsigned char* in, unsigned int inlen, void* arg) {
|
1711
1724
|
tsi_ssl_client_handshaker_factory* factory =
|
1712
1725
|
static_cast<tsi_ssl_client_handshaker_factory*>(arg);
|
1713
|
-
return select_protocol_list(
|
1726
|
+
return select_protocol_list(const_cast<const unsigned char**>(out), outlen,
|
1714
1727
|
factory->alpn_protocol_list,
|
1715
1728
|
factory->alpn_protocol_list_length, in, inlen);
|
1716
1729
|
}
|
@@ -1718,18 +1731,18 @@ static int client_handshaker_factory_npn_callback(
|
|
1718
1731
|
/* --- tsi_ssl_server_handshaker_factory methods implementation. --- */
|
1719
1732
|
|
1720
1733
|
tsi_result tsi_ssl_server_handshaker_factory_create_handshaker(
|
1721
|
-
tsi_ssl_server_handshaker_factory*
|
1722
|
-
if (
|
1734
|
+
tsi_ssl_server_handshaker_factory* factory, tsi_handshaker** handshaker) {
|
1735
|
+
if (factory->ssl_context_count == 0) return TSI_INVALID_ARGUMENT;
|
1723
1736
|
/* Create the handshaker with the first context. We will switch if needed
|
1724
1737
|
because of SNI in ssl_server_handshaker_factory_servername_callback. */
|
1725
|
-
return create_tsi_ssl_handshaker(
|
1726
|
-
&
|
1738
|
+
return create_tsi_ssl_handshaker(factory->ssl_contexts[0], 0, nullptr,
|
1739
|
+
&factory->base, handshaker);
|
1727
1740
|
}
|
1728
1741
|
|
1729
1742
|
void tsi_ssl_server_handshaker_factory_unref(
|
1730
|
-
tsi_ssl_server_handshaker_factory*
|
1731
|
-
if (
|
1732
|
-
tsi_ssl_handshaker_factory_unref(&
|
1743
|
+
tsi_ssl_server_handshaker_factory* factory) {
|
1744
|
+
if (factory == nullptr) return;
|
1745
|
+
tsi_ssl_handshaker_factory_unref(&factory->base);
|
1733
1746
|
}
|
1734
1747
|
|
1735
1748
|
static void tsi_ssl_server_handshaker_factory_destroy(
|