rpc: send nil on subscription Err channel when Client is closed
This change makes client subscriptions compatible with the new Subscription semantics introduced in the previous commit.
This commit is contained in:
parent
6d5e100d0d
commit
a2b4abd89a
@ -682,7 +682,7 @@ func newClientSubscription(c *Client, channel reflect.Value) *ClientSubscription
|
|||||||
// resubscription when the client connection is closed unexpectedly.
|
// resubscription when the client connection is closed unexpectedly.
|
||||||
//
|
//
|
||||||
// The error channel receives a value when the subscription has ended due
|
// The error channel receives a value when the subscription has ended due
|
||||||
// to an error. The received error is ErrClientQuit if Close has been called
|
// to an error. The received error is nil if Close has been called
|
||||||
// on the underlying client and no other error has occurred.
|
// on the underlying client and no other error has occurred.
|
||||||
//
|
//
|
||||||
// The error channel is closed when Unsubscribe is called on the subscription.
|
// The error channel is closed when Unsubscribe is called on the subscription.
|
||||||
@ -707,6 +707,9 @@ func (sub *ClientSubscription) quitWithError(err error, unsubscribeServer bool)
|
|||||||
sub.requestUnsubscribe()
|
sub.requestUnsubscribe()
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == ErrClientQuit {
|
||||||
|
err = nil // Adhere to subscription semantics.
|
||||||
|
}
|
||||||
sub.err <- err
|
sub.err <- err
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user