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:
Felix Lange 2016-12-09 19:51:21 +01:00
parent 6d5e100d0d
commit a2b4abd89a
1 changed files with 4 additions and 1 deletions

View File

@ -682,7 +682,7 @@ func newClientSubscription(c *Client, channel reflect.Value) *ClientSubscription
// resubscription when the client connection is closed unexpectedly.
//
// 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.
//
// 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()
}
if err != nil {
if err == ErrClientQuit {
err = nil // Adhere to subscription semantics.
}
sub.err <- err
}
})