From 66236a7d154ceeefa43bd05714f983ef704bcc50 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 15 Mar 2015 19:00:27 +0300 Subject: [PATCH] Heartbeats can block channels during rehandshake. Make them asynchronous Signed-off-by: Sergey Matveev --- transport.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 -- 2.48.1