From 2a931df07af4bf889adf49cc896a61bf8e4484d4 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Sat, 7 Jul 2018 12:34:10 +0100 Subject: [PATCH] Try to clean up UNIX domain admin sockets if shutdown properly --- src/yggdrasil/admin.go | 10 ++++++++++ src/yggdrasil/core.go | 1 + 2 files changed, 11 insertions(+) diff --git a/src/yggdrasil/admin.go b/src/yggdrasil/admin.go index e02bf9e..cd3ea5c 100644 --- a/src/yggdrasil/admin.go +++ b/src/yggdrasil/admin.go @@ -227,6 +227,16 @@ func (a *admin) start() error { return nil } +// cleans up when stopping +func (a *admin) stop() error { + if a.listenaddr[0:7] == "unix://" { + if err := os.Remove(a.listenaddr[7:]); err != nil { + return err + } + } + return nil +} + // listen is run by start and manages API connections. func (a *admin) listen() { var l net.Listener diff --git a/src/yggdrasil/core.go b/src/yggdrasil/core.go index 6d130d8..5263676 100644 --- a/src/yggdrasil/core.go +++ b/src/yggdrasil/core.go @@ -135,6 +135,7 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) error { func (c *Core) Stop() { c.log.Println("Stopping...") c.tun.close() + c.admin.stop() } // Generates a new encryption keypair. The encryption keys are used to