summaryrefslogtreecommitdiffhomepage
path: root/tun
diff options
context:
space:
mode:
Diffstat (limited to 'tun')
-rw-r--r--tun/tun_windows.go13
1 files changed, 4 insertions, 9 deletions
diff --git a/tun/tun_windows.go b/tun/tun_windows.go
index 2d8364d..b7f9947 100644
--- a/tun/tun_windows.go
+++ b/tun/tun_windows.go
@@ -214,18 +214,13 @@ func (tun *NativeTun) Events() chan TUNEvent {
func (tun *NativeTun) Close() error {
tun.close = true
- err1 := tun.closeTUN()
-
if tun.events != nil {
close(tun.events)
}
-
- _, _, err2 := tun.wt.DeleteInterface(0)
- if err1 == nil {
- err1 = err2
- }
-
- return err1
+ /* We delete it first, before closing, so that the close operations don't hang with the concurrent read operation. */
+ _, _, err := tun.wt.DeleteInterface(0)
+ tun.closeTUN()
+ return err
}
func (tun *NativeTun) MTU() (int, error) {