From 56b446190aedf7970c9532b1e428fbf1b5b94413 Mon Sep 17 00:00:00 2001
From: Bas van Kervel <basvankervel@gmail.com>
Date: Wed, 30 Nov 2016 17:47:39 +0100
Subject: ethstats: check if received event is valid

---
 ethstats/ethstats.go | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'ethstats')

diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go
index b87f5ab78..a5fa84468 100644
--- a/ethstats/ethstats.go
+++ b/ethstats/ethstats.go
@@ -145,13 +145,21 @@ func (s *Service) loop() {
 					glog.V(logger.Warn).Infof("Full stats report failed: %v", err)
 				}
 			case head := <-headSub.Chan():
+				if head == nil { // node stopped
+					conn.Close()
+					return
+				}
 				if err = s.reportBlock(out, head.Data.(core.ChainHeadEvent).Block); err != nil {
 					glog.V(logger.Warn).Infof("Block stats report failed: %v", err)
 				}
 				if err = s.reportPending(out); err != nil {
 					glog.V(logger.Warn).Infof("Post-block transaction stats report failed: %v", err)
 				}
-			case <-txSub.Chan():
+			case ev := <-txSub.Chan():
+				if ev == nil { // node stopped
+					conn.Close()
+					return
+				}
 				// Exhaust events to avoid reporting too frequently
 				for exhausted := false; !exhausted; {
 					select {
-- 
cgit v1.2.3