mirror of
https://github.com/kerberos-io/onvif.git
synced 2025-09-26 20:01:17 +08:00
reuse main http client + resolved memory leak (close previous response) before creating new one.
This commit is contained in:
@@ -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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user