Переглянути джерело

use grpc.NewClient to ensure setUserAgent runs before any connection

grpc.Dial calls exitIdleMode which can start connecting asynchronously.
Switch to grpc.NewClient (lazy, no connection) + setUserAgent + Connect()
to guarantee the UserAgent is fixed before any transport is created.

Co-authored-by: RPRX <[email protected]>
copilot-swe-agent[bot] 4 тижнів тому
батько
коміт
e9f44cbba3
1 змінених файлів з 3 додано та 2 видалено
  1. 3 2
      transport/internet/grpc/dial.go

+ 3 - 2
transport/internet/grpc/dial.go

@@ -182,12 +182,13 @@ func getGrpcClient(ctx context.Context, dest net.Destination, streamSettings *in
 		grpcDestHost = dest.Address.IP().String()
 	}
 
-	conn, err := grpc.Dial(
-		net.JoinHostPort(grpcDestHost, dest.Port.String()),
+	conn, err := grpc.NewClient(
+		"passthrough:///"+net.JoinHostPort(grpcDestHost, dest.Port.String()),
 		dialOptions...,
 	)
 	if err == nil {
 		setUserAgent(conn, userAgent)
+		conn.Connect()
 	}
 	globalDialerMap[dialerConf{dest, streamSettings}] = conn
 	return conn, err