From d83be55d70372dd9be3d4f6db09fd6efe1ebb062 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Tue, 23 Aug 2022 14:18:12 -0400 Subject: [PATCH] single http client --- netclient/functions/common.go | 17 ++++++++++++----- netclient/functions/join.go | 8 ++++---- netclient/main.go | 2 ++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/netclient/functions/common.go b/netclient/functions/common.go index 04ddbe38..68612307 100644 --- a/netclient/functions/common.go +++ b/netclient/functions/common.go @@ -30,6 +30,16 @@ const LINUX_APP_DATA_PATH = "/etc/netmaker" // HTTP_TIMEOUT - timeout in seconds for http requests const HTTP_TIMEOUT = 30 +// HTTPClient - http client to be reused by all +var HTTPClient http.Client + +// SetHTTPClient -sets http client with sane default +func SetHTTPClient() { + HTTPClient = http.Client{ + Timeout: HTTP_TIMEOUT * time.Second, + } +} + // ListPorts - lists ports of WireGuard devices func ListPorts() error { wgclient, err := wgctrl.New() @@ -308,7 +318,7 @@ func GetNetmakerPath() string { return LINUX_APP_DATA_PATH } -//API function to interact with netmaker api endpoints. response from endpoint is returned +// API function to interact with netmaker api endpoints. response from endpoint is returned func API(data any, method, url, authorization string) (*http.Response, error) { var request *http.Request var err error @@ -331,10 +341,7 @@ func API(data any, method, url, authorization string) (*http.Response, error) { if authorization != "" { request.Header.Set("authorization", "Bearer "+authorization) } - client := http.Client{ - Timeout: HTTP_TIMEOUT * time.Second, - } - return client.Do(request) + return HTTPClient.Do(request) } // Authenticate authenticates with api to permit subsequent interactions with the api diff --git a/netclient/functions/join.go b/netclient/functions/join.go index bc978ce0..eac8fcad 100644 --- a/netclient/functions/join.go +++ b/netclient/functions/join.go @@ -205,16 +205,16 @@ func JoinNetwork(cfg *config.ClientConfig, privateKey string) error { if err != nil { logger.Log(0, "error setting route for netmaker: "+err.Error()) } + cfg.Node = node + if err := Register(cfg); err != nil { + return err + } logger.Log(0, "starting wireguard") err = wireguard.InitWireguard(&node, privateKey, nodeGET.Peers[:], false) if err != nil { return err } - cfg.Node = node - if err := Register(cfg); err != nil { - return err - } if cfg.Server.Server == "" { return errors.New("did not receive broker address from registration") } diff --git a/netclient/main.go b/netclient/main.go index 34e1f2e0..de79967b 100644 --- a/netclient/main.go +++ b/netclient/main.go @@ -10,6 +10,7 @@ import ( "github.com/gravitl/netmaker/netclient/cli_options" "github.com/gravitl/netmaker/netclient/config" + "github.com/gravitl/netmaker/netclient/functions" "github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/netclient/ncwindows" "github.com/urfave/cli/v2" @@ -29,6 +30,7 @@ func main() { app.UsageText = "netclient [global options] command [command options] [arguments...]. Adjust verbosity of given command with -v, -vv or -vvv (max)." setGarbageCollection() + functions.SetHTTPClient() if ncutils.IsWindows() { ncwindows.InitWindows()