From a2b4abd89adf0404b43fcd19766bac37009032a5 Mon Sep 17 00:00:00 2001
From: Felix Lange <fjl@twurst.com>
Date: Fri, 9 Dec 2016 19:51:21 +0100
Subject: 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.
---
 rpc/client.go | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

(limited to 'rpc')

diff --git a/rpc/client.go b/rpc/client.go
index 34a3b7831..269eb78c8 100644
--- a/rpc/client.go
+++ b/rpc/client.go
@@ -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
 		}
 	})
-- 
cgit v1.2.3