Explorar o código

conn: make startupErr only accept a single response

Chris Bannister %!s(int64=9) %!d(string=hai) anos
pai
achega
7af717e68e
Modificáronse 1 ficheiros con 9 adicións e 12 borrados
  1. 9 12
      conn.go

+ 9 - 12
conn.go

@@ -214,16 +214,16 @@ func Connect(host *HostInfo, addr string, cfg *ConnConfig,
 	defer cancel()
 
 	frameTicker := make(chan struct{}, 1)
-	startupErr := make(chan error, 1)
+	startupErr := make(chan error)
 	go func() {
 		for range frameTicker {
 			err := c.recv()
-			select {
-			case startupErr <- err:
-				if err != nil {
-					return
+			if err != nil {
+				select {
+				case startupErr <- err:
+				case <-ctx.Done():
 				}
-			case <-ctx.Done():
+
 				return
 			}
 		}
@@ -232,12 +232,9 @@ func Connect(host *HostInfo, addr string, cfg *ConnConfig,
 	go func() {
 		defer close(frameTicker)
 		err := c.startup(ctx, frameTicker)
-		if err != nil {
-			select {
-			case startupErr <- err:
-			case <-ctx.Done():
-				return
-			}
+		select {
+		case startupErr <- err:
+		case <-ctx.Done():
 		}
 	}()