diff --git a/server/main.go b/server/main.go index 669ca79..b831731 100644 --- a/server/main.go +++ b/server/main.go @@ -5,6 +5,7 @@ import ( grpc "github.com/FlowingSPDG/gotv-plus-go/server/src/grpc" "github.com/FlowingSPDG/gotv-plus-go/server/src/handlers" "github.com/gin-gonic/gin" + "io/ioutil" "log" "net/http" ) @@ -23,6 +24,8 @@ func init() { log.Printf("DEBUG MODE : %v\n", *debug) if *debug == true { gin.SetMode(gin.ReleaseMode) + } else { + gin.DefaultWriter = ioutil.Discard } handlers.InitMatchEngine(*auth, uint32(*delay)) go grpc.StartGRPC(*grpcaddr) diff --git a/server/src/handlers/handlers.go b/server/src/handlers/handlers.go index 0cd796b..c6fbbd0 100644 --- a/server/src/handlers/handlers.go +++ b/server/src/handlers/handlers.go @@ -207,6 +207,7 @@ func PostBodyByIDHandler(c *gin.Context) { c.String(http.StatusBadRequest, "fragment,tps,protocol should be float or int") return } + log.Printf("Received START Fragment. Register match... Token[%s] Tps[%f] Protocol[%d]\n", t, tps, protocol) Matches.Register(&Match{ ID: id, Token: t, @@ -224,6 +225,13 @@ func PostBodyByIDHandler(c *gin.Context) { // Fragment: uint32(fragment), }) m, err := Matches.GetMatchByToken(t) + if err != nil { + log.Printf("ERR : %v\n", err) + c.String(http.StatusNotFound, "") + return + } + m.Lock() + defer m.Unlock() m.Startframe[uint32(fragment)] = &Startframe{ At: time.Now(), Body: reqBody, @@ -236,6 +244,8 @@ func PostBodyByIDHandler(c *gin.Context) { c.String(http.StatusResetContent, "") return } + m.Lock() + defer m.Unlock() tick, err := strconv.Atoi(c.Query("tick")) if err != nil { c.String(http.StatusBadRequest, "tick should be float or int") @@ -258,6 +268,8 @@ func PostBodyByIDHandler(c *gin.Context) { c.String(http.StatusResetContent, "") return } + m.Lock() + defer m.Unlock() endtick, err := strconv.Atoi(c.Query("endtick")) if err != nil { c.String(http.StatusBadRequest, "endtick should be float or int") @@ -330,6 +342,13 @@ func PostBodyHandler(c *gin.Context) { // Fragment: uint32(fragment), }) m, err := Matches.GetMatchByToken(t) + if err != nil { + log.Printf("ERR : %v\n", err) + c.String(http.StatusNotFound, "") + return + } + m.Lock() + defer m.Unlock() m.Startframe[uint32(fragment)] = &Startframe{ At: time.Now(), Body: reqBody, @@ -342,6 +361,8 @@ func PostBodyHandler(c *gin.Context) { c.String(http.StatusResetContent, "") return } + m.Lock() + defer m.Unlock() tick, err := strconv.Atoi(c.Query("tick")) if err != nil { c.String(http.StatusBadRequest, "tick should be float or int") @@ -364,6 +385,8 @@ func PostBodyHandler(c *gin.Context) { c.String(http.StatusResetContent, "") return } + m.Lock() + defer m.Unlock() endtick, err := strconv.Atoi(c.Query("endtick")) if err != nil { c.String(http.StatusBadRequest, "endtick should be float or int")