fix: use reader over readcloser, regen cookie-jar (#11482)
This commit is contained in:
parent
c984cd87fe
commit
b5076363e4
|
|
@ -54,11 +54,6 @@ func (c *CookieAuthConfig) initializeClient(client *http.Client) (err error) {
|
|||
c.Method = http.MethodPost
|
||||
}
|
||||
|
||||
// add cookie jar to HTTP client
|
||||
if c.client.Jar, err = cookiejar.New(nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.auth()
|
||||
}
|
||||
|
||||
|
|
@ -77,10 +72,19 @@ func (c *CookieAuthConfig) authRenewal(ctx context.Context, ticker *clockutil.Ti
|
|||
}
|
||||
|
||||
func (c *CookieAuthConfig) auth() error {
|
||||
var body io.ReadCloser
|
||||
var err error
|
||||
|
||||
// everytime we auth we clear out the cookie jar to ensure that the cookie
|
||||
// is not used as a part of re-authing. The only way to empty or reset is
|
||||
// to create a new cookie jar.
|
||||
c.client.Jar, err = cookiejar.New(nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var body io.Reader
|
||||
if c.Body != "" {
|
||||
body = io.NopCloser(strings.NewReader(c.Body))
|
||||
defer body.Close()
|
||||
body = strings.NewReader(c.Body)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(c.Method, c.URL, body)
|
||||
|
|
@ -106,15 +110,17 @@ func (c *CookieAuthConfig) auth() error {
|
|||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if _, err = io.Copy(io.Discard, resp.Body); err != nil {
|
||||
respBody, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// check either 200 or 201 as some devices may return either
|
||||
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated {
|
||||
return fmt.Errorf("cookie auth renewal received status code: %v (%v)",
|
||||
return fmt.Errorf("cookie auth renewal received status code: %v (%v) [%v]",
|
||||
resp.StatusCode,
|
||||
http.StatusText(resp.StatusCode),
|
||||
string(respBody),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ func TestAuthConfig_Start(t *testing.T) {
|
|||
renewal: renewal,
|
||||
endpoint: authEndpointWithBasicAuth,
|
||||
},
|
||||
wantErr: fmt.Errorf("cookie auth renewal received status code: 401 (Unauthorized)"),
|
||||
wantErr: fmt.Errorf("cookie auth renewal received status code: 401 (Unauthorized) []"),
|
||||
firstAuthCount: 0,
|
||||
lastAuthCount: 0,
|
||||
firstHTTPResponse: http.StatusForbidden,
|
||||
|
|
@ -220,7 +220,7 @@ func TestAuthConfig_Start(t *testing.T) {
|
|||
renewal: renewal,
|
||||
endpoint: authEndpointWithBody,
|
||||
},
|
||||
wantErr: fmt.Errorf("cookie auth renewal received status code: 401 (Unauthorized)"),
|
||||
wantErr: fmt.Errorf("cookie auth renewal received status code: 401 (Unauthorized) []"),
|
||||
firstAuthCount: 0,
|
||||
lastAuthCount: 0,
|
||||
firstHTTPResponse: http.StatusForbidden,
|
||||
|
|
|
|||
Loading…
Reference in New Issue