From 49e4afd5c79ec92127c83e9601f9b050d6725e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Tue, 19 May 2026 20:38:06 +0800 Subject: [PATCH] Handle existing Wintun adapter on restart --- tun_windows.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tun_windows.go b/tun_windows.go index 54e7395..d00d51d 100644 --- a/tun_windows.go +++ b/tun_windows.go @@ -43,7 +43,14 @@ func New(options Options) (WinTun, error) { } adapter, err := wintun.CreateAdapter(options.Name, TunnelType, generateGUIDByDeviceName(options.Name)) if err != nil { - return nil, err + if !errors.Is(err, os.ErrExist) { + return nil, err + } + createErr := err + adapter, err = wintun.OpenAdapter(options.Name) + if err != nil { + return nil, E.Errors(E.Cause(createErr, "create adapter"), E.Cause(err, "open existing adapter")) + } } nativeTun := &NativeTun{ adapter: adapter,