aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/manager
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-08-29 17:53:16 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2019-08-30 08:47:21 -0600
commitc5a0c62c4f926cd49041c71f5bda06f42235e325 (patch)
tree15711f7168e95ff317ed850b86f5295b52c97b81 /manager
parentmanager: adjust for wintun api changes (diff)
downloadwireguard-windows-c5a0c62c4f926cd49041c71f5bda06f42235e325.tar.xz
wireguard-windows-c5a0c62c4f926cd49041c71f5bda06f42235e325.zip
manager: delay stale adapter cleanup
By delaying this by 10 seconds, we ensure that we don't cause the locks to be contended immediately on startup. Before, this added around 600ms of latency to tunnel startup.
Diffstat (limited to 'manager')
-rw-r--r--manager/interfacecleanup.go2
-rw-r--r--manager/ipc_server.go4
-rw-r--r--manager/service.go2
3 files changed, 4 insertions, 4 deletions
diff --git a/manager/interfacecleanup.go b/manager/interfacecleanup.go
index 7b13b10c..f5d9ef48 100644
--- a/manager/interfacecleanup.go
+++ b/manager/interfacecleanup.go
@@ -17,7 +17,7 @@ import (
"golang.zx2c4.com/wireguard/windows/services"
)
-func cleanupStaleAdapters() {
+func cleanupStaleWintunInterfaces() {
defer printPanic()
m, err := mgr.Connect()
diff --git a/manager/ipc_server.go b/manager/ipc_server.go
index ed60d6b6..3bb92066 100644
--- a/manager/ipc_server.go
+++ b/manager/ipc_server.go
@@ -107,7 +107,7 @@ func (s *ManagerService) Start(tunnelName string, unused *uintptr) error {
}
}
}()
- go cleanupStaleAdapters()
+ time.AfterFunc(time.Second*10, cleanupStaleWintunInterfaces)
// After that process is started -- it's somewhat asynchronous -- we install the new one.
c, err := conf.LoadFromName(tunnelName)
@@ -122,7 +122,7 @@ func (s *ManagerService) Start(tunnelName string, unused *uintptr) error {
}
func (s *ManagerService) Stop(tunnelName string, _ *uintptr) error {
- go cleanupStaleAdapters()
+ time.AfterFunc(time.Second*10, cleanupStaleWintunInterfaces)
err := UninstallTunnel(tunnelName)
if err == windows.ERROR_SERVICE_DOES_NOT_EXIST {
diff --git a/manager/service.go b/manager/service.go
index 43dd5d4c..47ba51bc 100644
--- a/manager/service.go
+++ b/manager/service.go
@@ -247,7 +247,7 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest
}()
}
- go cleanupStaleAdapters()
+ time.AfterFunc(time.Second*10, cleanupStaleWintunInterfaces)
go checkForUpdates()
var sessionsPointer *windows.WTS_SESSION_INFO