Bläddra i källkod

@author liuqing
@commit context cancel 泄露问题修改

lq 3 månader sedan
förälder
incheckning
f1a850be5e
1 ändrade filer med 6 tillägg och 9 borttagningar
  1. 6 9
      common/mqtt/mqtt.go

+ 6 - 9
common/mqtt/mqtt.go

@@ -138,21 +138,18 @@ func (c *Client) DisconnectImmediately() {
 }
 
 func tokenWithContext(ctx context.Context, token paho.Token) error {
-	completer := make(chan error)
+	completer := make(chan error, 1)
 
-	// TODO: This go routine will not be removed up if the ctx is cancelled or a the ctx timeout passes
 	go func() {
 		token.Wait()
 		completer <- token.Error()
 	}()
 
-	for {
-		select {
-		case <-ctx.Done():
-			return ctx.Err()
-		case err := <-completer:
-			return err
-		}
+	select {
+	case <-ctx.Done():
+		return ctx.Err()
+	case err := <-completer:
+		return err
 	}
 }
 func (c *Client) ConnectionLostHandler(client paho.Client, err error) {