tAdd workaround for when removing the socket file is not possible - partage - File upload system
(HTM) git clone git://git.z3bra.org/partage.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 5a7dddc8f51ee7a5d05525fd81702259d0b952eb
(DIR) parent dcf295ff8e480271ca8ff93fadf4b92ae6b09062
(HTM) Author: Willy Goiffon <dev@z3bra.org>
Date: Tue, 18 Jan 2022 07:46:16 +0100
Add workaround for when removing the socket file is not possible
Diffstat:
M partage.go | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
---
(DIR) diff --git a/partage.go b/partage.go
t@@ -327,25 +327,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 != "" {