diff --git a/partage.go b/partage.go index eec99b1..7317351 100644 --- a/partage.go +++ b/partage.go @@ -92,6 +92,10 @@ func writemeta(filename string, expiry int64) error { size := stat.Size() f.Close() + if expiry < 0 { + expiry = conf.expiry + } + meta := metadata{ Filename: filepath.Base(filename), Size: size, @@ -196,7 +200,11 @@ func uploaderPost(w http.ResponseWriter, r *http.Request) { return } - writemeta(tmp.Name(), conf.expiry) + expiry, err := strconv.Atoi(r.PostFormValue("expiry")) + if err != nil || expiry < 0 { + expiry = int(conf.expiry) + } + writemeta(tmp.Name(), int64(expiry)) link := conf.baseuri + conf.filectx + filepath.Base(tmp.Name()) links = append(links, link) @@ -327,33 +335,25 @@ func main() { } if conf.listen[0] == '/' { - /* Remove any stale socket */ - os.Remove(conf.listen) - if listener, err = net.Listen("unix", conf.listen); err != nil { + listener, err = net.Listen("unix", conf.listen) + if err != nil { log.Fatal(err) } - defer listener.Close() - /* - * Ensure unix socket is removed on exit. - * Note: this might not work when dropping privileges… - */ + /* Ensure unix socket is removed on exit */ defer os.Remove(conf.listen) sigs := make(chan os.Signal, 1) - signal.Notify(sigs, os.Interrupt, os.Kill, syscall.SIGTERM) + signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) go func() { _ = <-sigs - listener.Close() - if err = os.Remove(conf.listen); err != nil { - log.Fatal(err) - } + os.Remove(conf.listen) os.Exit(0) }() } else { - if listener, err = net.Listen("tcp", conf.listen); err != nil { + listener, err = net.Listen("tcp", conf.listen) + if err != nil { log.Fatal(err) } - defer listener.Close() } if conf.user != "" {