Browse Source

ensure publish dns in go routine

Matthew R Kasun 2 years ago
parent
commit
b9accde5b2
2 changed files with 26 additions and 20 deletions
  1. 17 13
      controllers/dns.go
  2. 9 7
      controllers/ext_client.go

+ 17 - 13
controllers/dns.go

@@ -176,12 +176,14 @@ func createDNS(w http.ResponseWriter, r *http.Request) {
 	}
 	}
 	logger.Log(1, "new DNS record added:", entry.Name)
 	logger.Log(1, "new DNS record added:", entry.Name)
 	if servercfg.IsMessageQueueBackend() {
 	if servercfg.IsMessageQueueBackend() {
-		if err = mq.PublishPeerUpdate(); err != nil {
-			logger.Log(0, "failed to publish peer update after ACL update on", entry.Network)
-		}
-		if err := mq.PublishCustomDNS(&entry); err != nil {
-			logger.Log(0, "error publishing custom dns", err.Error())
-		}
+		go func() {
+			if err = mq.PublishPeerUpdate(); err != nil {
+				logger.Log(0, "failed to publish peer update after ACL update on", entry.Network)
+			}
+			if err := mq.PublishCustomDNS(&entry); err != nil {
+				logger.Log(0, "error publishing custom dns", err.Error())
+			}
+		}()
 	}
 	}
 	logger.Log(2, r.Header.Get("user"),
 	logger.Log(2, r.Header.Get("user"),
 		fmt.Sprintf("DNS entry is set: %+v", entry))
 		fmt.Sprintf("DNS entry is set: %+v", entry))
@@ -224,13 +226,15 @@ func deleteDNS(w http.ResponseWriter, r *http.Request) {
 		return
 		return
 	}
 	}
 	json.NewEncoder(w).Encode(entrytext + " deleted.")
 	json.NewEncoder(w).Encode(entrytext + " deleted.")
-	dns := models.DNSUpdate{
-		Action: models.DNSDeleteByName,
-		Name:   entrytext,
-	}
-	if err := mq.PublishDNSUpdate(params["network"], dns); err != nil {
-		logger.Log(0, "failed to publish dns update", err.Error())
-	}
+	go func() {
+		dns := models.DNSUpdate{
+			Action: models.DNSDeleteByName,
+			Name:   entrytext,
+		}
+		if err := mq.PublishDNSUpdate(params["network"], dns); err != nil {
+			logger.Log(0, "failed to publish dns update", err.Error())
+		}
+	}()
 
 
 }
 }
 
 

+ 9 - 7
controllers/ext_client.go

@@ -388,13 +388,15 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
 
 
 	logger.Log(0, r.Header.Get("user"), "created new ext client on network", networkName)
 	logger.Log(0, r.Header.Get("user"), "created new ext client on network", networkName)
 	w.WriteHeader(http.StatusOK)
 	w.WriteHeader(http.StatusOK)
-	err = mq.PublishExtPeerUpdate(&node)
-	if err != nil {
-		logger.Log(1, "error setting ext peers on "+nodeid+": "+err.Error())
-	}
-	if err := mq.PublishExtCLientDNS(&extclient); err != nil {
-		logger.Log(1, "error publishing extclient dns", err.Error())
-	}
+	go func() {
+		err = mq.PublishExtPeerUpdate(&node)
+		if err != nil {
+			logger.Log(1, "error setting ext peers on "+nodeid+": "+err.Error())
+		}
+		if err := mq.PublishExtCLientDNS(&extclient); err != nil {
+			logger.Log(1, "error publishing extclient dns", err.Error())
+		}
+	}()
 }
 }
 
 
 // swagger:route PUT /api/extclients/{network}/{clientid} ext_client updateExtClient
 // swagger:route PUT /api/extclients/{network}/{clientid} ext_client updateExtClient