From f118cff98a0b22505397af78a409a896ec437558 Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Mon, 23 Jan 2023 18:20:23 +0530 Subject: [PATCH 1/3] remove hosts from relays before deletion --- controllers/hosts.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/controllers/hosts.go b/controllers/hosts.go index a2b708fc..924d5563 100644 --- a/controllers/hosts.go +++ b/controllers/hosts.go @@ -150,7 +150,27 @@ func deleteHost(w http.ResponseWriter, r *http.Request) { logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) return } - + if currHost.IsRelay { + if _, _, err := logic.DeleteHostRelay(hostid); err != nil { + logger.Log(0, r.Header.Get("user"), "failed to dissociate host from relays:", err.Error()) + } + } + if currHost.IsRelayed { + relayHost, err := logic.GetHost(currHost.RelayedBy) + if err != nil { + logger.Log(0, r.Header.Get("user"), "failed to fetch relay host:", err.Error()) + } + newRelayedHosts := make([]string, 0) + for _, relayedHostID := range relayHost.RelayedHosts { + if relayedHostID != hostid { + newRelayedHosts = append(newRelayedHosts, relayedHostID) + } + } + relayHost.RelayedHosts = newRelayedHosts + if err := logic.UpsertHost(relayHost); err != nil { + logger.Log(0, r.Header.Get("user"), "failed to update host relays:", err.Error()) + } + } if err = logic.RemoveHost(currHost); err != nil { logger.Log(0, r.Header.Get("user"), "failed to delete a host:", err.Error()) logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) From fd69be9b823e2a3b6b132753e457230ca115b9f2 Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Mon, 23 Jan 2023 18:34:17 +0530 Subject: [PATCH 2/3] return after error --- controllers/hosts.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controllers/hosts.go b/controllers/hosts.go index 924d5563..bd64a00e 100644 --- a/controllers/hosts.go +++ b/controllers/hosts.go @@ -153,12 +153,14 @@ func deleteHost(w http.ResponseWriter, r *http.Request) { if currHost.IsRelay { if _, _, err := logic.DeleteHostRelay(hostid); err != nil { logger.Log(0, r.Header.Get("user"), "failed to dissociate host from relays:", err.Error()) + return } } if currHost.IsRelayed { relayHost, err := logic.GetHost(currHost.RelayedBy) if err != nil { logger.Log(0, r.Header.Get("user"), "failed to fetch relay host:", err.Error()) + return } newRelayedHosts := make([]string, 0) for _, relayedHostID := range relayHost.RelayedHosts { @@ -169,6 +171,7 @@ func deleteHost(w http.ResponseWriter, r *http.Request) { relayHost.RelayedHosts = newRelayedHosts if err := logic.UpsertHost(relayHost); err != nil { logger.Log(0, r.Header.Get("user"), "failed to update host relays:", err.Error()) + return } } if err = logic.RemoveHost(currHost); err != nil { From e769521cc9c0596dbccd09214416bac943d50791 Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Tue, 24 Jan 2023 11:26:52 +0530 Subject: [PATCH 3/3] return error response on relay removal --- controllers/hosts.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controllers/hosts.go b/controllers/hosts.go index bd64a00e..51f5246b 100644 --- a/controllers/hosts.go +++ b/controllers/hosts.go @@ -153,6 +153,7 @@ func deleteHost(w http.ResponseWriter, r *http.Request) { if currHost.IsRelay { if _, _, err := logic.DeleteHostRelay(hostid); err != nil { logger.Log(0, r.Header.Get("user"), "failed to dissociate host from relays:", err.Error()) + logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) return } } @@ -160,6 +161,7 @@ func deleteHost(w http.ResponseWriter, r *http.Request) { relayHost, err := logic.GetHost(currHost.RelayedBy) if err != nil { logger.Log(0, r.Header.Get("user"), "failed to fetch relay host:", err.Error()) + logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) return } newRelayedHosts := make([]string, 0) @@ -171,6 +173,7 @@ func deleteHost(w http.ResponseWriter, r *http.Request) { relayHost.RelayedHosts = newRelayedHosts if err := logic.UpsertHost(relayHost); err != nil { logger.Log(0, r.Header.Get("user"), "failed to update host relays:", err.Error()) + logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) return } }