From 0971e954a6e5510a11fca05ec01bbb675f93facc Mon Sep 17 00:00:00 2001 From: dev Date: Tue, 18 Jan 2022 06:46:54 +0000 Subject: [PATCH] Merge branch 'master' of git.z3bra.org:partage git-svn-id: file:///srv/svn/repo/marisa/trunk@62 d6811dac-2434-b64a-9ddc-f563ab233461 --- partage.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/partage.go b/partage.go index 7317351..e80feac 100644 --- a/partage.go +++ b/partage.go @@ -335,25 +335,33 @@ func main() { } if conf.listen[0] == '/' { - listener, err = net.Listen("unix", conf.listen) - if err != nil { + /* Remove any stale socket */ + os.Remove(conf.listen) + if listener, err = net.Listen("unix", conf.listen); err != nil { log.Fatal(err) } + defer listener.Close() - /* Ensure unix socket is removed on exit */ + /* + * Ensure unix socket is removed on exit. + * Note: this might not work when dropping privileges… + */ defer os.Remove(conf.listen) sigs := make(chan os.Signal, 1) - signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) + signal.Notify(sigs, os.Interrupt, os.Kill, syscall.SIGTERM) go func() { _ = <-sigs - os.Remove(conf.listen) + listener.Close() + if err = os.Remove(conf.listen); err != nil { + log.Fatal(err) + } os.Exit(0) }() } else { - listener, err = net.Listen("tcp", conf.listen) - if err != nil { + if listener, err = net.Listen("tcp", conf.listen); err != nil { log.Fatal(err) } + defer listener.Close() } if conf.user != "" {