fixed serve blocking spawning more listener
This commit is contained in:
31
main.go
31
main.go
@@ -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()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user