|
|
@@ -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) {
|