TUN-2754: Add ConnDigest to cloudflared and its RPCs

This commit is contained in:
Adam Chalmers
2020-03-05 15:20:12 -06:00
parent 6b3e2b020b
commit d50fee4fa0
6 changed files with 493 additions and 252 deletions

View File

@@ -39,6 +39,7 @@ const (
var (
errJWTUnset = errors.New("JWT unset")
errEventDigestUnset = errors.New("event digest unset")
errConnDigestUnset = errors.New("conn digest unset")
)
// Supervisor manages non-declarative tunnels. Establishes TCP connections with the edge, and
@@ -64,6 +65,9 @@ type Supervisor struct {
eventDigestLock *sync.RWMutex
eventDigest []byte
connDigestLock *sync.RWMutex
connDigest []byte
bufferPool *buffer.Pool
}
@@ -332,6 +336,21 @@ func (s *Supervisor) SetEventDigest(eventDigest []byte) {
s.eventDigest = eventDigest
}
func (s *Supervisor) ConnDigest() ([]byte, error) {
s.connDigestLock.RLock()
defer s.connDigestLock.RUnlock()
if s.connDigest == nil {
return nil, errConnDigestUnset
}
return s.connDigest, nil
}
func (s *Supervisor) SetConnDigest(connDigest []byte) {
s.connDigestLock.Lock()
defer s.connDigestLock.Unlock()
s.connDigest = connDigest
}
func (s *Supervisor) refreshAuth(
ctx context.Context,
backoff *BackoffHandler,