mirror of https://github.com/knative/pkg.git
				
				
				
			Bump google.golang.org/grpc from 1.72.0 to 1.72.1 (#3180)
* Bump google.golang.org/grpc from 1.72.0 to 1.72.1 Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.72.0 to 1.72.1. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.72.0...v1.72.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.72.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Run ./hack/update-codegen.sh --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									873230f3a4
								
							
						
					
					
						commit
						44579e9ce5
					
				
							
								
								
									
										2
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										2
									
								
								go.mod
								
								
								
								
							| 
						 | 
				
			
			@ -28,7 +28,7 @@ require (
 | 
			
		|||
	golang.org/x/sync v0.14.0
 | 
			
		||||
	golang.org/x/tools v0.33.0
 | 
			
		||||
	gomodules.xyz/jsonpatch/v2 v2.5.0
 | 
			
		||||
	google.golang.org/grpc v1.72.0
 | 
			
		||||
	google.golang.org/grpc v1.72.1
 | 
			
		||||
	google.golang.org/protobuf v1.36.6
 | 
			
		||||
	gopkg.in/yaml.v3 v3.0.1
 | 
			
		||||
	k8s.io/api v0.32.2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										4
									
								
								go.sum
								
								
								
								
							| 
						 | 
				
			
			@ -672,8 +672,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
 | 
			
		|||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
 | 
			
		||||
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
 | 
			
		||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
 | 
			
		||||
google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM=
 | 
			
		||||
google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
 | 
			
		||||
google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
 | 
			
		||||
google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
 | 
			
		||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 | 
			
		||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 | 
			
		||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										159
									
								
								vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
								
								
									generated
								
								
									vendored
								
								
							
							
						
						
									
										159
									
								
								vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
								
								
									generated
								
								
									vendored
								
								
							| 
						 | 
				
			
			@ -28,6 +28,8 @@ import (
 | 
			
		|||
 | 
			
		||||
	"google.golang.org/grpc/grpclog"
 | 
			
		||||
	"google.golang.org/grpc/internal/proxyattributes"
 | 
			
		||||
	"google.golang.org/grpc/internal/transport"
 | 
			
		||||
	"google.golang.org/grpc/internal/transport/networktype"
 | 
			
		||||
	"google.golang.org/grpc/resolver"
 | 
			
		||||
	"google.golang.org/grpc/serviceconfig"
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +42,7 @@ var (
 | 
			
		|||
 | 
			
		||||
// delegatingResolver manages both target URI and proxy address resolution by
 | 
			
		||||
// delegating these tasks to separate child resolvers. Essentially, it acts as
 | 
			
		||||
// a intermediary between the gRPC ClientConn and the child resolvers.
 | 
			
		||||
// an intermediary between the gRPC ClientConn and the child resolvers.
 | 
			
		||||
//
 | 
			
		||||
// It implements the [resolver.Resolver] interface.
 | 
			
		||||
type delegatingResolver struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +50,9 @@ type delegatingResolver struct {
 | 
			
		|||
	cc       resolver.ClientConn // gRPC ClientConn
 | 
			
		||||
	proxyURL *url.URL            // proxy URL, derived from proxy environment and target
 | 
			
		||||
 | 
			
		||||
	// We do not hold both mu and childMu in the same goroutine. Avoid holding
 | 
			
		||||
	// both locks when calling into the child, as the child resolver may
 | 
			
		||||
	// synchronously callback into the channel.
 | 
			
		||||
	mu                  sync.Mutex         // protects all the fields below
 | 
			
		||||
	targetResolverState *resolver.State    // state of the target resolver
 | 
			
		||||
	proxyAddrs          []resolver.Address // resolved proxy addresses; empty if no proxy is configured
 | 
			
		||||
| 
						 | 
				
			
			@ -66,8 +71,8 @@ func (nopResolver) ResolveNow(resolver.ResolveNowOptions) {}
 | 
			
		|||
 | 
			
		||||
func (nopResolver) Close() {}
 | 
			
		||||
 | 
			
		||||
// proxyURLForTarget determines the proxy URL for the given address based on
 | 
			
		||||
// the environment. It can return the following:
 | 
			
		||||
// proxyURLForTarget determines the proxy URL for the given address based on the
 | 
			
		||||
// environment. It can return the following:
 | 
			
		||||
//   - nil URL, nil error: No proxy is configured or the address is excluded
 | 
			
		||||
//     using the `NO_PROXY` environment variable or if req.URL.Host is
 | 
			
		||||
//     "localhost" (with or without // a port number)
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +91,8 @@ func proxyURLForTarget(address string) (*url.URL, error) {
 | 
			
		|||
// resolvers:
 | 
			
		||||
//   - one to resolve the proxy address specified using the supported
 | 
			
		||||
//     environment variables. This uses the registered resolver for the "dns"
 | 
			
		||||
//     scheme.
 | 
			
		||||
//     scheme. It is lazily built when a target resolver update contains at least
 | 
			
		||||
//     one TCP address.
 | 
			
		||||
//   - one to resolve the target URI using the resolver specified by the scheme
 | 
			
		||||
//     in the target URI or specified by the user using the WithResolvers dial
 | 
			
		||||
//     option. As a special case, if the target URI's scheme is "dns" and a
 | 
			
		||||
| 
						 | 
				
			
			@ -97,6 +103,8 @@ func New(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOpti
 | 
			
		|||
	r := &delegatingResolver{
 | 
			
		||||
		target:         target,
 | 
			
		||||
		cc:             cc,
 | 
			
		||||
		proxyResolver:  nopResolver{},
 | 
			
		||||
		targetResolver: nopResolver{},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var err error
 | 
			
		||||
| 
						 | 
				
			
			@ -123,12 +131,13 @@ func New(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOpti
 | 
			
		|||
	// resolution should be handled by the proxy, not the client. Therefore, we
 | 
			
		||||
	// bypass the target resolver and store the unresolved target address.
 | 
			
		||||
	if target.URL.Scheme == "dns" && !targetResolutionEnabled {
 | 
			
		||||
		state := resolver.State{
 | 
			
		||||
		r.targetResolverState = &resolver.State{
 | 
			
		||||
			Addresses: []resolver.Address{{Addr: target.Endpoint()}},
 | 
			
		||||
			Endpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: target.Endpoint()}}}},
 | 
			
		||||
		}
 | 
			
		||||
		r.targetResolverState = &state
 | 
			
		||||
	} else {
 | 
			
		||||
		r.updateTargetResolverState(*r.targetResolverState)
 | 
			
		||||
		return r, nil
 | 
			
		||||
	}
 | 
			
		||||
	wcc := &wrappingClientConn{
 | 
			
		||||
		stateListener: r.updateTargetResolverState,
 | 
			
		||||
		parent:        r,
 | 
			
		||||
| 
						 | 
				
			
			@ -136,24 +145,12 @@ func New(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOpti
 | 
			
		|||
	if r.targetResolver, err = targetResolverBuilder.Build(target, wcc, opts); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("delegating_resolver: unable to build the resolver for target %s: %v", target, err)
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if r.proxyResolver, err = r.proxyURIResolver(opts); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("delegating_resolver: failed to build resolver for proxy URL %q: %v", r.proxyURL, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if r.targetResolver == nil {
 | 
			
		||||
		r.targetResolver = nopResolver{}
 | 
			
		||||
	}
 | 
			
		||||
	if r.proxyResolver == nil {
 | 
			
		||||
		r.proxyResolver = nopResolver{}
 | 
			
		||||
	}
 | 
			
		||||
	return r, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// proxyURIResolver creates a resolver for resolving proxy URIs using the
 | 
			
		||||
// "dns" scheme. It adjusts the proxyURL to conform to the "dns:///" format and
 | 
			
		||||
// builds a resolver with a wrappingClientConn to capture resolved addresses.
 | 
			
		||||
// proxyURIResolver creates a resolver for resolving proxy URIs using the "dns"
 | 
			
		||||
// scheme. It adjusts the proxyURL to conform to the "dns:///" format and builds
 | 
			
		||||
// a resolver with a wrappingClientConn to capture resolved addresses.
 | 
			
		||||
func (r *delegatingResolver) proxyURIResolver(opts resolver.BuildOptions) (resolver.Resolver, error) {
 | 
			
		||||
	proxyBuilder := resolver.Get("dns")
 | 
			
		||||
	if proxyBuilder == nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -189,18 +186,43 @@ func (r *delegatingResolver) Close() {
 | 
			
		|||
	r.proxyResolver = nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// updateClientConnStateLocked creates a list of combined addresses by
 | 
			
		||||
// pairing each proxy address with every target address. For each pair, it
 | 
			
		||||
// generates a new [resolver.Address] using the proxy address, and adding the
 | 
			
		||||
// target address as the attribute along with user info. It returns nil if
 | 
			
		||||
// either resolver has not sent update even once and returns the error from
 | 
			
		||||
// ClientConn update once both resolvers have sent update atleast once.
 | 
			
		||||
func networkTypeFromAddr(addr resolver.Address) string {
 | 
			
		||||
	networkType, ok := networktype.Get(addr)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		networkType, _ = transport.ParseDialTarget(addr.Addr)
 | 
			
		||||
	}
 | 
			
		||||
	return networkType
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func isTCPAddressPresent(state *resolver.State) bool {
 | 
			
		||||
	for _, addr := range state.Addresses {
 | 
			
		||||
		if networkType := networkTypeFromAddr(addr); networkType == "tcp" {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	for _, endpoint := range state.Endpoints {
 | 
			
		||||
		for _, addr := range endpoint.Addresses {
 | 
			
		||||
			if networktype := networkTypeFromAddr(addr); networktype == "tcp" {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// updateClientConnStateLocked constructs a combined list of addresses by
 | 
			
		||||
// pairing each proxy address with every target address of type TCP. For each
 | 
			
		||||
// pair, it creates a new [resolver.Address] using the proxy address and
 | 
			
		||||
// attaches the corresponding target address and user info as attributes. Target
 | 
			
		||||
// addresses that are not of type TCP are appended to the list as-is. The
 | 
			
		||||
// function returns nil if either resolver has not yet provided an update, and
 | 
			
		||||
// returns the result of ClientConn.UpdateState once both resolvers have
 | 
			
		||||
// provided at least one update.
 | 
			
		||||
func (r *delegatingResolver) updateClientConnStateLocked() error {
 | 
			
		||||
	if r.targetResolverState == nil || r.proxyAddrs == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	curState := *r.targetResolverState
 | 
			
		||||
	// If multiple resolved proxy addresses are present, we send only the
 | 
			
		||||
	// unresolved proxy host and let net.Dial handle the proxy host name
 | 
			
		||||
	// resolution when creating the transport. Sending all resolved addresses
 | 
			
		||||
| 
						 | 
				
			
			@ -218,24 +240,30 @@ func (r *delegatingResolver) updateClientConnStateLocked() error {
 | 
			
		|||
	}
 | 
			
		||||
	var addresses []resolver.Address
 | 
			
		||||
	for _, targetAddr := range (*r.targetResolverState).Addresses {
 | 
			
		||||
		// Avoid proxy when network is not tcp.
 | 
			
		||||
		if networkType := networkTypeFromAddr(targetAddr); networkType != "tcp" {
 | 
			
		||||
			addresses = append(addresses, targetAddr)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		addresses = append(addresses, proxyattributes.Set(proxyAddr, proxyattributes.Options{
 | 
			
		||||
			User:        r.proxyURL.User,
 | 
			
		||||
			ConnectAddr: targetAddr.Addr,
 | 
			
		||||
		}))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create a list of combined endpoints by pairing all proxy endpoints
 | 
			
		||||
	// with every target endpoint. Each time, it constructs a new
 | 
			
		||||
	// [resolver.Endpoint] using the all addresses from all the proxy endpoint
 | 
			
		||||
	// and the target addresses from one endpoint. The target address and user
 | 
			
		||||
	// information from the proxy URL are added as attributes to the proxy
 | 
			
		||||
	// address.The resulting list of addresses is then grouped into endpoints,
 | 
			
		||||
	// covering all combinations of proxy and target endpoints.
 | 
			
		||||
	// For each target endpoint, construct a new [resolver.Endpoint] that
 | 
			
		||||
	// includes all addresses from all proxy endpoints and the addresses from
 | 
			
		||||
	// that target endpoint, preserving the number of target endpoints.
 | 
			
		||||
	var endpoints []resolver.Endpoint
 | 
			
		||||
	for _, endpt := range (*r.targetResolverState).Endpoints {
 | 
			
		||||
		var addrs []resolver.Address
 | 
			
		||||
		for _, proxyAddr := range r.proxyAddrs {
 | 
			
		||||
		for _, targetAddr := range endpt.Addresses {
 | 
			
		||||
			// Avoid proxy when network is not tcp.
 | 
			
		||||
			if networkType := networkTypeFromAddr(targetAddr); networkType != "tcp" {
 | 
			
		||||
				addrs = append(addrs, targetAddr)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			for _, proxyAddr := range r.proxyAddrs {
 | 
			
		||||
				addrs = append(addrs, proxyattributes.Set(proxyAddr, proxyattributes.Options{
 | 
			
		||||
					User:        r.proxyURL.User,
 | 
			
		||||
					ConnectAddr: targetAddr.Addr,
 | 
			
		||||
| 
						 | 
				
			
			@ -246,8 +274,9 @@ func (r *delegatingResolver) updateClientConnStateLocked() error {
 | 
			
		|||
	}
 | 
			
		||||
	// Use the targetResolverState for its service config and attributes
 | 
			
		||||
	// contents. The state update is only sent after both the target and proxy
 | 
			
		||||
	// resolvers have sent their updates, and curState has been updated with
 | 
			
		||||
	// the combined addresses.
 | 
			
		||||
	// resolvers have sent their updates, and curState has been updated with the
 | 
			
		||||
	// combined addresses.
 | 
			
		||||
	curState := *r.targetResolverState
 | 
			
		||||
	curState.Addresses = addresses
 | 
			
		||||
	curState.Endpoints = endpoints
 | 
			
		||||
	return r.cc.UpdateState(curState)
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +286,8 @@ func (r *delegatingResolver) updateClientConnStateLocked() error {
 | 
			
		|||
// addresses and endpoints, marking the resolver as ready, and triggering a
 | 
			
		||||
// state update if both proxy and target resolvers are ready. If the ClientConn
 | 
			
		||||
// returns a non-nil error, it calls `ResolveNow()` on the target resolver.  It
 | 
			
		||||
// is a StateListener function of wrappingClientConn passed to the proxy resolver.
 | 
			
		||||
// is a StateListener function of wrappingClientConn passed to the proxy
 | 
			
		||||
// resolver.
 | 
			
		||||
func (r *delegatingResolver) updateProxyResolverState(state resolver.State) error {
 | 
			
		||||
	r.mu.Lock()
 | 
			
		||||
	defer r.mu.Unlock()
 | 
			
		||||
| 
						 | 
				
			
			@ -265,8 +295,8 @@ func (r *delegatingResolver) updateProxyResolverState(state resolver.State) erro
 | 
			
		|||
		logger.Infof("Addresses received from proxy resolver: %s", state.Addresses)
 | 
			
		||||
	}
 | 
			
		||||
	if len(state.Endpoints) > 0 {
 | 
			
		||||
		// We expect exactly one address per endpoint because the proxy
 | 
			
		||||
		// resolver uses "dns" resolution.
 | 
			
		||||
		// We expect exactly one address per endpoint because the proxy resolver
 | 
			
		||||
		// uses "dns" resolution.
 | 
			
		||||
		r.proxyAddrs = make([]resolver.Address, 0, len(state.Endpoints))
 | 
			
		||||
		for _, endpoint := range state.Endpoints {
 | 
			
		||||
			r.proxyAddrs = append(r.proxyAddrs, endpoint.Addresses...)
 | 
			
		||||
| 
						 | 
				
			
			@ -294,11 +324,14 @@ func (r *delegatingResolver) updateProxyResolverState(state resolver.State) erro
 | 
			
		|||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// updateTargetResolverState updates the target resolver state by storing target
 | 
			
		||||
// addresses, endpoints, and service config, marking the resolver as ready, and
 | 
			
		||||
// triggering a state update if both resolvers are ready. If the ClientConn
 | 
			
		||||
// returns a non-nil error, it calls `ResolveNow()` on the proxy resolver. It
 | 
			
		||||
// is a StateListener function of wrappingClientConn passed to the target resolver.
 | 
			
		||||
// updateTargetResolverState is the StateListener function provided to the
 | 
			
		||||
// target resolver via wrappingClientConn. It updates the resolver state and
 | 
			
		||||
// marks the target resolver as ready. If the update includes at least one TCP
 | 
			
		||||
// address and the proxy resolver has not yet been constructed, it initializes
 | 
			
		||||
// the proxy resolver. A combined state update is triggered once both resolvers
 | 
			
		||||
// are ready. If all addresses are non-TCP, it proceeds without waiting for the
 | 
			
		||||
// proxy resolver. If ClientConn.UpdateState returns a non-nil error,
 | 
			
		||||
// ResolveNow() is called on the proxy resolver.
 | 
			
		||||
func (r *delegatingResolver) updateTargetResolverState(state resolver.State) error {
 | 
			
		||||
	r.mu.Lock()
 | 
			
		||||
	defer r.mu.Unlock()
 | 
			
		||||
| 
						 | 
				
			
			@ -307,6 +340,31 @@ func (r *delegatingResolver) updateTargetResolverState(state resolver.State) err
 | 
			
		|||
		logger.Infof("Addresses received from target resolver: %v", state.Addresses)
 | 
			
		||||
	}
 | 
			
		||||
	r.targetResolverState = &state
 | 
			
		||||
	// If no addresses returned by resolver have network type as tcp , do not
 | 
			
		||||
	// wait for proxy update.
 | 
			
		||||
	if !isTCPAddressPresent(r.targetResolverState) {
 | 
			
		||||
		return r.cc.UpdateState(*r.targetResolverState)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// The proxy resolver may be rebuilt multiple times, specifically each time
 | 
			
		||||
	// the target resolver sends an update, even if the target resolver is built
 | 
			
		||||
	// successfully but building the proxy resolver fails.
 | 
			
		||||
	if len(r.proxyAddrs) == 0 {
 | 
			
		||||
		go func() {
 | 
			
		||||
			r.childMu.Lock()
 | 
			
		||||
			defer r.childMu.Unlock()
 | 
			
		||||
			if _, ok := r.proxyResolver.(nopResolver); !ok {
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			proxyResolver, err := r.proxyURIResolver(resolver.BuildOptions{})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				r.cc.ReportError(fmt.Errorf("delegating_resolver: unable to build the proxy resolver: %v", err))
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			r.proxyResolver = proxyResolver
 | 
			
		||||
		}()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := r.updateClientConnStateLocked()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		go func() {
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +393,8 @@ func (wcc *wrappingClientConn) UpdateState(state resolver.State) error {
 | 
			
		|||
	return wcc.stateListener(state)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReportError intercepts errors from the child resolvers and passes them to ClientConn.
 | 
			
		||||
// ReportError intercepts errors from the child resolvers and passes them to
 | 
			
		||||
// ClientConn.
 | 
			
		||||
func (wcc *wrappingClientConn) ReportError(err error) {
 | 
			
		||||
	wcc.parent.cc.ReportError(err)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -346,8 +405,8 @@ func (wcc *wrappingClientConn) NewAddress(addrs []resolver.Address) {
 | 
			
		|||
	wcc.UpdateState(resolver.State{Addresses: addrs})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParseServiceConfig parses the provided service config and returns an
 | 
			
		||||
// object that provides the parsed config.
 | 
			
		||||
// ParseServiceConfig parses the provided service config and returns an object
 | 
			
		||||
// that provides the parsed config.
 | 
			
		||||
func (wcc *wrappingClientConn) ParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult {
 | 
			
		||||
	return wcc.parent.cc.ParseServiceConfig(serviceConfigJSON)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error
 | 
			
		|||
		return fn(ctx, address)
 | 
			
		||||
	}
 | 
			
		||||
	if !ok {
 | 
			
		||||
		networkType, address = parseDialTarget(address)
 | 
			
		||||
		networkType, address = ParseDialTarget(address)
 | 
			
		||||
	}
 | 
			
		||||
	if opts, present := proxyattributes.Get(addr); present {
 | 
			
		||||
		return proxyDial(ctx, addr, grpcUA, opts)
 | 
			
		||||
| 
						 | 
				
			
			@ -1242,7 +1242,8 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {
 | 
			
		|||
			statusCode = codes.DeadlineExceeded
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode), nil, false)
 | 
			
		||||
	st := status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode)
 | 
			
		||||
	t.closeStream(s, st.Err(), false, http2.ErrCodeNo, st, nil, false)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -439,8 +439,8 @@ func getWriteBufferPool(size int) *sync.Pool {
 | 
			
		|||
	return pool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseDialTarget returns the network and address to pass to dialer.
 | 
			
		||||
func parseDialTarget(target string) (string, string) {
 | 
			
		||||
// ParseDialTarget returns the network and address to pass to dialer.
 | 
			
		||||
func ParseDialTarget(target string) (string, string) {
 | 
			
		||||
	net := "tcp"
 | 
			
		||||
	m1 := strings.Index(target, ":")
 | 
			
		||||
	m2 := strings.Index(target, ":/")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,4 +19,4 @@
 | 
			
		|||
package grpc
 | 
			
		||||
 | 
			
		||||
// Version is the current grpc version.
 | 
			
		||||
const Version = "1.72.0"
 | 
			
		||||
const Version = "1.72.1"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -325,7 +325,7 @@ google.golang.org/genproto/googleapis/api/httpbody
 | 
			
		|||
# google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a
 | 
			
		||||
## explicit; go 1.22
 | 
			
		||||
google.golang.org/genproto/googleapis/rpc/status
 | 
			
		||||
# google.golang.org/grpc v1.72.0
 | 
			
		||||
# google.golang.org/grpc v1.72.1
 | 
			
		||||
## explicit; go 1.23
 | 
			
		||||
google.golang.org/grpc
 | 
			
		||||
google.golang.org/grpc/attributes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue