From 6910a3d7cf42eee116a65d558b87a4c9e3c2f07b Mon Sep 17 00:00:00 2001 From: Jacob McSwain Date: Wed, 21 Feb 2024 10:14:50 -0600 Subject: [PATCH] notify: handle olsr parsing async --- internal/server/api/controllers/v1/notify.go | 56 ++++++++++---------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/internal/server/api/controllers/v1/notify.go b/internal/server/api/controllers/v1/notify.go index eed83023..bb39e90a 100644 --- a/internal/server/api/controllers/v1/notify.go +++ b/internal/server/api/controllers/v1/notify.go @@ -16,39 +16,41 @@ func POSTNotify(c *gin.Context) { return } - olsrdParser, ok := c.MustGet("OLSRDHostParser").(*olsrd.HostsParser) - if !ok { - fmt.Println("POSTLogin: OLSRDHostParser not found in context") - c.JSON(http.StatusInternalServerError, gin.H{"error": "Try again later"}) - return - } - err := olsrdParser.Parse() - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": "Error parsing hosts"}) - fmt.Println("Error parsing hosts:", err) - return - } - - err = dnsmasq.Reload() + err := dnsmasq.Reload() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Error regenerating DNS"}) fmt.Println("Error reloading DNS config:", err) return } - olsrdServicesParser, ok := c.MustGet("OLSRDServicesParser").(*olsrd.ServicesParser) - if !ok { - fmt.Println("POSTLogin: OLSRDServicesParser not found in context") - c.JSON(http.StatusInternalServerError, gin.H{"error": "Try again later"}) - return - } - - err = olsrdServicesParser.Parse() - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": "Error parsing services"}) - fmt.Println("Error parsing services:", err) - return - } + go func() { + olsrdParser, ok := c.MustGet("OLSRDHostParser").(*olsrd.HostsParser) + if !ok { + fmt.Println("POSTLogin: OLSRDHostParser not found in context") + c.JSON(http.StatusInternalServerError, gin.H{"error": "Try again later"}) + return + } + err := olsrdParser.Parse() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Error parsing hosts"}) + fmt.Println("Error parsing hosts:", err) + return + } + + olsrdServicesParser, ok := c.MustGet("OLSRDServicesParser").(*olsrd.ServicesParser) + if !ok { + fmt.Println("POSTLogin: OLSRDServicesParser not found in context") + c.JSON(http.StatusInternalServerError, gin.H{"error": "Try again later"}) + return + } + + err = olsrdServicesParser.Parse() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Error parsing services"}) + fmt.Println("Error parsing services:", err) + return + } + }() c.JSON(http.StatusOK, gin.H{"status": "OK"}) }