From: Sergey Matveev Date: Sun, 15 Mar 2015 16:00:27 +0000 (+0300) Subject: Heartbeats can block channels during rehandshake. Make them asynchronous X-Git-Tag: 2.2^2~2 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=66236a7d154ceeefa43bd05714f983ef704bcc50;p=govpn.git Heartbeats can block channels during rehandshake. Make them asynchronous Signed-off-by: Sergey Matveev --- diff --git a/transport.go b/transport.go index 3c460e6..8c5e8eb 100644 --- a/transport.go +++ b/transport.go @@ -112,7 +112,7 @@ func TAPListen(ifaceName string) (*TAP, chan []byte, chan struct{}, chan struct{ case <-sinkTerminate: break ListenCycle case <-heartbeat: - sink <- make([]byte, 0) + go func() { sink <- make([]byte, 0) }() continue case <-sinkReady: if exists { @@ -124,7 +124,7 @@ func TAPListen(ifaceName string) (*TAP, chan []byte, chan struct{}, chan struct{ HeartbeatCatched: select { case <-heartbeat: - sink <- make([]byte, 0) + go func() { sink <- make([]byte, 0) }() goto HeartbeatCatched case <-sinkTerminate: break ListenCycle