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 != "" {