Handle existing Wintun adapter on restart

This commit is contained in:
世界 2026-05-19 20:38:06 +08:00
parent 1010e39d79
commit 49e4afd5c7
No known key found for this signature in database
GPG key ID: CD109927C34A63C4

View file

@ -43,7 +43,14 @@ func New(options Options) (WinTun, error) {
} }
adapter, err := wintun.CreateAdapter(options.Name, TunnelType, generateGUIDByDeviceName(options.Name)) adapter, err := wintun.CreateAdapter(options.Name, TunnelType, generateGUIDByDeviceName(options.Name))
if err != nil { 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{ nativeTun := &NativeTun{
adapter: adapter, adapter: adapter,