diff --git a/go.mod b/go.mod
index b802194bc7ac0740b862b922f4e60abfbbbca264..a201dffd6d7524d0deec39462ea1d34aca745e22 100644
--- a/go.mod
+++ b/go.mod
@@ -15,7 +15,7 @@ require (
 	github.com/golang/protobuf v1.3.5
 	github.com/google/go-cmp v0.4.0
 	github.com/gorilla/websocket v1.4.1
-	github.com/iotaledger/hive.go v0.0.0-20200617164933-c48b4401b814
+	github.com/iotaledger/hive.go v0.0.0-20200618111525-99e5fb050f12
 	github.com/iotaledger/iota.go v1.0.0-beta.14
 	github.com/labstack/echo v3.3.10+incompatible
 	github.com/labstack/gommon v0.3.0
diff --git a/go.sum b/go.sum
index d56d14b5eb88dbea5dd9a357508507a3089efc06..6d1a6f85347c69a0cc388ef5aed9353a5ebb6f84 100644
--- a/go.sum
+++ b/go.sum
@@ -155,10 +155,8 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T
 github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/iotaledger/hive.go v0.0.0-20200615181744-3ab0cddc15cf h1:JW1kB2q+arYv4KgRIvyGUj7Svf20EUQRswDe3+8sYSw=
-github.com/iotaledger/hive.go v0.0.0-20200615181744-3ab0cddc15cf/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU=
-github.com/iotaledger/hive.go v0.0.0-20200617164933-c48b4401b814 h1:9Cg6q13ngg3/UxBPQjdDREYr+792HO8SN8KzI1t7xFY=
-github.com/iotaledger/hive.go v0.0.0-20200617164933-c48b4401b814/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU=
+github.com/iotaledger/hive.go v0.0.0-20200618111525-99e5fb050f12 h1:rWYQqY7Pm2qOPtYO7LnerrrlfCWvpkAcCGxQHqz8q9Y=
+github.com/iotaledger/hive.go v0.0.0-20200618111525-99e5fb050f12/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU=
 github.com/iotaledger/iota.go v1.0.0-beta.9/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8=
 github.com/iotaledger/iota.go v1.0.0-beta.14 h1:Oeb28MfBuJEeXcGrLhTCJFtbsnc8y1u7xidsAmiOD5A=
 github.com/iotaledger/iota.go v1.0.0-beta.14/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8=
diff --git a/plugins/analysis/dashboard/fpc_livefeed.go b/plugins/analysis/dashboard/fpc_livefeed.go
index ec782cd56b9831dd9a2e672c9fd703098188bc46..42f04c2bf2b8ab1b2550f0564a1ba6121c0a1f16 100644
--- a/plugins/analysis/dashboard/fpc_livefeed.go
+++ b/plugins/analysis/dashboard/fpc_livefeed.go
@@ -64,6 +64,7 @@ func runFPCLiveFeed() {
 				analysis.Events.FPCHeartbeat.Detach(onFPCHeartbeatReceived)
 				cleanUpTicker.Stop()
 				log.Info("Stopping Analysis[FPCUpdater] ... done")
+				return
 			case <-cleanUpTicker.C:
 				log.Info("Cleaning up Finalized Conflicts ...")
 				recordedConflicts.cleanUp()
diff --git a/plugins/analysis/server/plugin.go b/plugins/analysis/server/plugin.go
index 6f396244562c328e98c528dd43fbf634f5a5928c..32556417ecf55bbe6b7b4c6a2793d277f7deabf2 100644
--- a/plugins/analysis/server/plugin.go
+++ b/plugins/analysis/server/plugin.go
@@ -1,8 +1,10 @@
 package server
 
 import (
+	"io"
 	"net"
 	"strconv"
+	"strings"
 	"time"
 
 	"github.com/iotaledger/goshimmer/packages/shutdown"
@@ -82,31 +84,29 @@ func run(_ *node.Plugin) {
 
 // HandleConnection handles the given connection.
 func HandleConnection(conn *network.ManagedConnection) {
-	conn.Events.Error.Attach(events.NewClosure(func(err error) {
-		log.Warn(err)
-		_ = conn.Close()
-	}))
-
 	err := conn.SetReadTimeout(IdleTimeout)
 	if err != nil {
-		log.Error(err)
+		log.Warnw("Error setting read timeout; closing connection", "err", err)
+		_ = conn.Close()
+		return
 	}
-
 	onReceiveData := events.NewClosure(func(data []byte) {
-		// process incoming data in protocol.Receive()
 		_, err := prot.Read(data)
 		if err != nil {
-			log.Warnf("invalid message received: %s", err)
+			log.Warnw("Invalid message received; closing connection", "err", err)
 			_ = conn.Close()
 		}
 	})
-
 	conn.Events.ReceiveData.Attach(onReceiveData)
-
 	// starts the protocol and reads from its connection
 	go func() {
 		buffer := make([]byte, 2048)
-		_, _ = conn.Read(buffer)
+		_, err := conn.Read(buffer)
+		if err != nil && err != io.EOF && !strings.Contains(err.Error(), "use of closed network connection") {
+			log.Warnw("Read error", "err", err)
+		}
+		// always close the connection when we've stopped reading from it
+		_ = conn.Close()
 	}()
 }