From 9ab08446ff07e77ba25941c0be55aebe2bc372c0 Mon Sep 17 00:00:00 2001 From: Arceliar Date: Wed, 7 Aug 2019 17:40:50 -0500 Subject: [PATCH] make sure the sessionInfo.recvWorker doesn't block if sinfo.recv somehow fills --- src/yggdrasil/session.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/yggdrasil/session.go b/src/yggdrasil/session.go index 517947e..d8b7e9b 100644 --- a/src/yggdrasil/session.go +++ b/src/yggdrasil/session.go @@ -495,7 +495,11 @@ func (sinfo *sessionInfo) recvWorker() { util.PutBytes(bs) } else { // Pass the packet to the buffer for Conn.Read - sinfo.recv <- bs + select { + case <-sinfo.cancel.Finished(): + util.PutBytes(bs) + case sinfo.recv <- bs: + } } } ch <- callback