reuse main http client + resolved memory leak (close previous response) before creating new one.

This commit is contained in:
Cedric Verstraeten
2025-01-16 21:43:28 +01:00
parent ee8a919932
commit 6fc6d9a99e
2 changed files with 7 additions and 3 deletions

View File

@@ -287,7 +287,7 @@ func (dev Device) callMethodDo(endpoint string, method interface{}) (*http.Respo
servResp, err := networking.SendSoap(dev.params.HttpClient, endpoint, soap.String())
if err != nil {
servResp, err = networking.SendSoapWithDigest(new(http.Client), endpoint, soap.String(), dev.params.Username, dev.params.Password)
servResp, err = networking.SendSoapWithDigest(dev.params.HttpClient, endpoint, soap.String(), dev.params.Username, dev.params.Password)
}
return servResp, err
@@ -344,7 +344,9 @@ func (dev Device) SendSoap(endpoint string, xmlRequestBody string) (*http.Respon
servResp, err := networking.SendSoap(dev.params.HttpClient, endpoint, soap.String())
if err != nil {
servResp, err = networking.SendSoapWithDigest(new(http.Client), endpoint, soap.String(), dev.params.Username, dev.params.Password)
// Close server response body to reuse the connection
servResp.Body.Close()
servResp, err = networking.SendSoapWithDigest(dev.params.HttpClient, endpoint, soap.String(), dev.params.Username, dev.params.Password)
}
return servResp, err

View File

@@ -50,7 +50,6 @@ func SendSoapWithDigest(httpClient *http.Client, endpoint, message, username, pa
req.Header.Set("Content-Type", "application/soap+xml; charset=utf-8")
resp, err := httpClient.Do(req)
if err != nil {
fmt.Println(err)
return resp, errors.Annotate(err, "Post with digest")
}
@@ -75,6 +74,9 @@ func SendSoapWithDigest(httpClient *http.Client, endpoint, message, username, pa
return resp, fmt.Errorf("fail to build digest: %w", err)
}
// Readout body to close the connection
resp.Body.Close()
req.Header.Add("Authorization", cred.String())
req.Body = io.NopCloser((bytes.NewBufferString(message)))
resp, err = httpClient.Do(req)