Easee: prevent DOS when signalr connect fails due to rejected token (#8915)
Some checks failed
Some checks failed
This commit is contained in:
parent
75e98550de
commit
850c093958
1 changed files with 13 additions and 1 deletions
|
|
@ -28,6 +28,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/cenkalti/backoff/v4"
|
||||
"github.com/evcc-io/evcc/api"
|
||||
"github.com/evcc-io/evcc/charger/easee"
|
||||
"github.com/evcc-io/evcc/core/loadpoint"
|
||||
|
|
@ -202,7 +203,18 @@ func (c *Easee) chargerSite(charger string) (easee.Site, error) {
|
|||
|
||||
// connect creates an HTTP connection to the signalR hub
|
||||
func (c *Easee) connect(ts oauth2.TokenSource) func() (signalr.Connection, error) {
|
||||
return func() (signalr.Connection, error) {
|
||||
bo := backoff.NewExponentialBackOff()
|
||||
bo.MaxElapsedTime = time.Minute
|
||||
|
||||
return func() (conn signalr.Connection, err error) {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
time.Sleep(bo.NextBackOff())
|
||||
} else {
|
||||
bo.Reset()
|
||||
}
|
||||
}()
|
||||
|
||||
tok, err := ts.Token()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue