Compare commits

...

2 Commits

Author SHA1 Message Date
Rohit Vighne
20d86e9ea6
Merge 76e5e54a674a2e8b4403589229950f0c52319576 into a51da7b8ecec94024cf0e87cc7f36f6ec6d5032f 2025-03-26 16:57:03 +00:00
Rohit Vighne
76e5e54a67 Listen on AF_UNIX socket if -addr is a path 2025-03-26 12:54:12 -04:00
2 changed files with 28 additions and 7 deletions

View File

@ -90,6 +90,10 @@ func main() {
log.SetOutput(os.Stdout)
}
if open && strings.ContainsRune(addr, os.PathSeparator) {
log.Fatal("Cannot open unix socket path (", addr, ") in browser")
}
if db == "" {
configPath, err := os.UserConfigDir()
if err != nil {

View File

@ -2,7 +2,10 @@ package server
import (
"log"
"net"
"net/http"
"os"
"strings"
"sync"
"github.com/nkanaev/yarr/src/storage"
@ -53,14 +56,28 @@ func (s *Server) Start() {
s.worker.RefreshFeeds()
}
httpserver := &http.Server{Addr: s.Addr, Handler: s.handler()}
var err error
if s.CertFile != "" && s.KeyFile != "" {
err = httpserver.ListenAndServeTLS(s.CertFile, s.KeyFile)
} else {
err = httpserver.ListenAndServe()
network := "tcp"
if strings.ContainsRune(s.Addr, os.PathSeparator) {
network = "unix"
err := os.Remove(s.Addr)
if err != nil {
log.Fatal(err)
}
}
ln, err := net.Listen(network, s.Addr)
if err != nil {
log.Fatal(err)
}
httpserver := &http.Server{Handler: s.handler()}
if s.CertFile != "" && s.KeyFile != "" {
err = httpserver.ServeTLS(ln, s.CertFile, s.KeyFile)
ln.Close()
} else {
err = httpserver.Serve(ln)
}
if err != http.ErrServerClosed {
log.Fatal(err)
}