fixed serve blocking spawning more listener

This commit is contained in:
2021-10-05 18:12:04 +02:00
parent a692a3417f
commit 835801c0c6

31
main.go
View File

@@ -20,8 +20,10 @@ import (
"net"
"net/http"
"os"
"os/signal"
"strconv"
"sync"
"syscall"
"time"
)
@@ -353,6 +355,9 @@ func getMatch(w http.ResponseWriter, r *http.Request) {
/match/parse/<sharecode> GET parses sharecode provided
*/
func main() {
killSignals := make(chan os.Signal, 1)
signal.Notify(killSignals, syscall.SIGINT, syscall.SIGTERM)
flag.Parse()
confStr, err := os.ReadFile("config.yaml")
@@ -369,7 +374,7 @@ func main() {
Lock: new(sync.RWMutex),
}
db.Client, err = ent.Open("sqlite3", "file:opencsgo.db?_fk=1&cache=shared")
db.Client, err = ent.Open("sqlite3", "file:csgowtfd.db?_fk=1&cache=shared")
if err != nil {
log.Panicf("Failed to open database %s: %v", "opencsgo.db", err)
}
@@ -407,21 +412,35 @@ func main() {
router.HandleFunc("/match/{id:[0-9]{19}}", getMatch).Methods("GET")
loggedRouter := handlers.LoggingHandler(os.Stdout, router)
sockets := make([]net.Listener, 0)
for _, l := range conf.Httpd.Listen {
if l.Socket != "" {
sL, err := net.Listen("unix", l.Socket)
if err != nil {
log.Fatalf("Failure listing on socket %s: %v", l.Socket, err)
}
err = http.Serve(sL, loggedRouter)
if err != nil {
log.Fatalf("Failure serving on socket %s: %v", l.Socket, err)
}
sockets = append(sockets, sL)
go func() {
_ = http.Serve(sL, loggedRouter)
}()
} else {
err = http.ListenAndServe(fmt.Sprintf("%s:%d", l.Host, l.Port), loggedRouter)
tL, err := net.Listen("tcp", fmt.Sprintf("%s:%d", l.Host, l.Port))
if err != nil {
log.Fatalf("Failure listing on %s:%d: %v", l.Host, l.Port, err)
}
go func() {
err = http.Serve(tL, loggedRouter)
if err != nil {
log.Fatalf("Failure serving on %s:%d: %v", l.Host, l.Port, err)
}
}()
}
}
<-killSignals
for _, s := range sockets {
_ = s.Close()
}
}