From 99e8b4ba605538b64c693c4056904f34810c3938 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 20 May 2021 18:26:01 +0200 Subject: tun: linux: account for interface removal from outside On Linux we can run `ip link del wg0`, in which case the fd becomes stale, and we should exit. Since this is an intentional action, don't treat it as an error. Signed-off-by: Jason A. Donenfeld --- device/send.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'device') diff --git a/device/send.go b/device/send.go index e07df1b..a4f07e4 100644 --- a/device/send.go +++ b/device/send.go @@ -8,7 +8,9 @@ package device import ( "bytes" "encoding/binary" + "errors" "net" + "os" "sync" "sync/atomic" "time" @@ -227,7 +229,9 @@ func (device *Device) RoutineReadFromTUN() { if err != nil { if !device.isClosed() { - device.log.Errorf("Failed to read packet from TUN device: %v", err) + if !errors.Is(err, os.ErrClosed) { + device.log.Errorf("Failed to read packet from TUN device: %v", err) + } go device.Close() } device.PutMessageBuffer(elem.buffer) -- cgit v1.2.3-59-g8ed1b