From 8846274c42296152671fe666841d67a41c388cda Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Thu, 24 Dec 2015 14:25:25 +0000 Subject: [PATCH] optimisation: terminate connection actorLoop asap on error --- mesh/connection.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/mesh/connection.go b/mesh/connection.go index 1f90fb73..436183f2 100644 --- a/mesh/connection.go +++ b/mesh/connection.go @@ -360,20 +360,21 @@ func (conn *LocalConnection) actorLoop(actionChan <-chan ConnectionAction, error for err == nil { select { - case action := <-actionChan: - err = action() - case err = <-errorChan: - - case <-conn.heartbeatTCP.C: - err = conn.sendSimpleProtocolMsg(ProtocolHeartbeat) - - case <-fwdEstablishedChan: - conn.established = true - fwdEstablishedChan = nil - conn.Router.Ourself.ConnectionEstablished(conn) - case err = <-fwdErrorChan: + default: + select { + case action := <-actionChan: + err = action() + case <-conn.heartbeatTCP.C: + err = conn.sendSimpleProtocolMsg(ProtocolHeartbeat) + case <-fwdEstablishedChan: + conn.established = true + fwdEstablishedChan = nil + conn.Router.Ourself.ConnectionEstablished(conn) + case err = <-errorChan: + case err = <-fwdErrorChan: + } } } return