浏览代码

conn: make startupErr only accept a single response

Chris Bannister 9 年之前
父节点
当前提交
7af717e68e
共有 1 个文件被更改,包括 9 次插入12 次删除
  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():
 		}
 	}()