From 5f0c8b942d93be6ac36a156c0ba44c86c3698f91 Mon Sep 17 00:00:00 2001
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
Date: Thu, 11 Mar 2021 09:29:10 -0700
Subject: [PATCH] device: signal to close device in separate routine

Otherwise we wind up deadlocking.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
 device/send.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/device/send.go b/device/send.go
index cb1607b..a437cf1 100644
--- a/device/send.go
+++ b/device/send.go
@@ -228,7 +228,7 @@ func (device *Device) RoutineReadFromTUN() {
 		if err != nil {
 			if !device.isClosed() {
 				device.log.Errorf("Failed to read packet from TUN device: %v", err)
-				device.Close()
+				go device.Close()
 			}
 			device.PutMessageBuffer(elem.buffer)
 			device.PutOutboundElement(elem)