diff --git a/cmd/notify.go b/cmd/notify.go index 0b0231cd..ca8e5d2a 100644 --- a/cmd/notify.go +++ b/cmd/notify.go @@ -3,6 +3,7 @@ package cmd import ( "fmt" "net/http" + "time" "github.com/USA-RedDragon/aredn-manager/internal/config" "github.com/spf13/cobra" @@ -28,7 +29,11 @@ func runNotify(cmd *cobra.Command, _ []string) error { } req.Header.Add("Content-Type", "application/json") - resp, err := http.DefaultClient.Do(req) + client := http.Client{ + Timeout: 5 * time.Second, + } + + resp, err := client.Do(req) if err != nil { return err } diff --git a/internal/metrics/olsr.go b/internal/metrics/olsr.go index a57aa840..cebe0c99 100644 --- a/internal/metrics/olsr.go +++ b/internal/metrics/olsr.go @@ -85,14 +85,17 @@ var ( ) func OLSRWatcher(db *gorm.DB) { + client := http.Client{ + Timeout: 5 * time.Second, + } + for { - resp, err := http.DefaultClient.Get("http://localhost:9090/links") + resp, err := client.Get("http://localhost:9090/links") if err != nil { fmt.Printf("OLSRWatcher: Unable to get links: %v\n", err) time.Sleep(1 * time.Second) continue } - defer resp.Body.Close() var links apimodels.OlsrdLinks err = json.NewDecoder(resp.Body).Decode(&links) if err != nil { @@ -101,6 +104,7 @@ func OLSRWatcher(db *gorm.DB) { resp.Body.Close() continue } + resp.Body.Close() foundInterfaces := []string{} diff --git a/internal/server/api/controllers/v1/aredn_compat.go b/internal/server/api/controllers/v1/aredn_compat.go index 907e1cd6..cbf7c940 100644 --- a/internal/server/api/controllers/v1/aredn_compat.go +++ b/internal/server/api/controllers/v1/aredn_compat.go @@ -9,6 +9,7 @@ import ( "regexp" "strings" "syscall" + "time" "github.com/USA-RedDragon/aredn-manager/internal/config" "github.com/USA-RedDragon/aredn-manager/internal/db/models" @@ -35,7 +36,11 @@ func GETMetrics(c *gin.Context) { return } - nodeResp, err := http.DefaultClient.Get(fmt.Sprintf("http://%s:9100/metrics", config.MetricsNodeExporterHost)) + client := http.Client{ + Timeout: 5 * time.Second, + } + + nodeResp, err := client.Get(fmt.Sprintf("http://%s:9100/metrics", config.MetricsNodeExporterHost)) if err != nil { fmt.Printf("GETMetrics: Unable to get node-exporter metrics: %v\n", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Try again later"}) @@ -50,7 +55,7 @@ func GETMetrics(c *gin.Context) { n, err = nodeResp.Body.Read(buf) } - metricsResp, err := http.DefaultClient.Get(fmt.Sprintf("http://localhost:%d/metrics", config.MetricsPort)) + metricsResp, err := client.Get(fmt.Sprintf("http://localhost:%d/metrics", config.MetricsPort)) if err != nil { fmt.Printf("GETMetrics: Unable to get metrics: %v\n", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Try again later"}) @@ -249,8 +254,11 @@ func getHosts(parser *olsrd.HostsParser) []apimodels.Host { func getLinkInfo() map[string]apimodels.LinkInfo { ret := make(map[string]apimodels.LinkInfo) + client := http.Client{ + Timeout: 5 * time.Second, + } // http request http://localhost:9090/links - resp, err := http.DefaultClient.Get("http://localhost:9090/links") + resp, err := client.Get("http://localhost:9090/links") if err != nil { fmt.Printf("GETSysinfo: Unable to get links: %v\n", err) return nil