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() }() }