VW: fix MBB token refresh error

This commit is contained in:
andig 2022-04-18 20:32:39 +02:00
parent bc4545e173
commit 2cb91bd040
2 changed files with 20 additions and 12 deletions

View file

@ -18,10 +18,9 @@ type roundTripper struct {
base http.RoundTripper
}
const max = 1024 * 64
var (
LogHeaders bool
LogMaxLen = 1024 * 8
reqMetric *prometheus.SummaryVec
resMetric *prometheus.CounterVec
)
@ -93,7 +92,7 @@ func dump(r io.ReadCloser, w *strings.Builder) error {
if w.Len() > 0 && len(body) > 0 {
w.WriteString("\n--\n")
}
_, err = w.Write(bytes.TrimSpace(body[:min(max, len(body))]))
_, err = w.Write(bytes.TrimSpace(body[:min(LogMaxLen, len(body))]))
return err
}
@ -108,7 +107,7 @@ func (r *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
if LogHeaders {
if body, err := httputil.DumpRequestOut(req, true); err == nil {
bld.WriteString("\n")
bld.Write(bytes.TrimSpace(body[:min(max, len(body))]))
bld.Write(bytes.TrimSpace(body[:min(LogMaxLen, len(body))]))
}
} else {
if save, req.Body, err = drainBody(req.Body); err == nil {
@ -130,7 +129,7 @@ func (r *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
if LogHeaders {
if body, err := httputil.DumpResponse(resp, true); err == nil {
bld.WriteString("\n\n")
bld.Write(bytes.TrimSpace(body[:min(max, len(body))]))
bld.Write(bytes.TrimSpace(body[:min(LogMaxLen, len(body))]))
}
} else {
if save, resp.Body, err = drainBody(resp.Body); err == nil {

View file

@ -100,16 +100,25 @@ func (ts *metaTokenSource) TokenEx() (*Token, error) {
ts.mu.Lock()
defer ts.mu.Unlock()
if ts.ts == nil {
token, err := ts.newT()
if err != nil {
return nil, err
// use token source
if ts.ts != nil {
token, err := ts.ts.TokenEx()
if err == nil {
return token, nil
}
ts.ts = ts.newTS(token)
}
token, err := ts.ts.TokenEx()
// create new start token
token, err := ts.newT()
if err != nil {
return nil, err
}
// create token source
ts.ts = ts.newTS(token)
// use token source
token, err = ts.ts.TokenEx()
if err != nil {
// token source doesn't work anymore, reset it
ts.ts = nil