mirror of
https://github.com/cloudflare/cloudflared.git
synced 2025-07-27 19:29:57 +00:00
TUN-8737: update metrics server port selection
## Summary Update how metrics server binds to a listener by using a known set of ports whenever the default address is used with the fallback to a random port in case all address are already in use. The default address changes at compile time in order to bind to a different default address when the final deliverable is a docker image. Refactor ReadyServer tests. Closes TUN-8737
This commit is contained in:
@@ -9,7 +9,7 @@ import (
|
||||
)
|
||||
|
||||
type ConnTracker struct {
|
||||
sync.RWMutex
|
||||
mutex sync.RWMutex
|
||||
// int is the connection Index
|
||||
connectionInfo map[uint8]ConnectionInfo
|
||||
log *zerolog.Logger
|
||||
@@ -20,43 +20,39 @@ type ConnectionInfo struct {
|
||||
Protocol connection.Protocol
|
||||
}
|
||||
|
||||
func NewConnTracker(log *zerolog.Logger) *ConnTracker {
|
||||
func NewConnTracker(
|
||||
log *zerolog.Logger,
|
||||
) *ConnTracker {
|
||||
return &ConnTracker{
|
||||
connectionInfo: make(map[uint8]ConnectionInfo, 0),
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func MockedConnTracker(mocked map[uint8]ConnectionInfo) *ConnTracker {
|
||||
return &ConnTracker{
|
||||
connectionInfo: mocked,
|
||||
}
|
||||
}
|
||||
|
||||
func (ct *ConnTracker) OnTunnelEvent(c connection.Event) {
|
||||
switch c.EventType {
|
||||
case connection.Connected:
|
||||
ct.Lock()
|
||||
ct.mutex.Lock()
|
||||
ci := ConnectionInfo{
|
||||
IsConnected: true,
|
||||
Protocol: c.Protocol,
|
||||
}
|
||||
ct.connectionInfo[c.Index] = ci
|
||||
ct.Unlock()
|
||||
ct.mutex.Unlock()
|
||||
case connection.Disconnected, connection.Reconnecting, connection.RegisteringTunnel, connection.Unregistering:
|
||||
ct.Lock()
|
||||
ct.mutex.Lock()
|
||||
ci := ct.connectionInfo[c.Index]
|
||||
ci.IsConnected = false
|
||||
ct.connectionInfo[c.Index] = ci
|
||||
ct.Unlock()
|
||||
ct.mutex.Unlock()
|
||||
default:
|
||||
ct.log.Error().Msgf("Unknown connection event case %v", c)
|
||||
}
|
||||
}
|
||||
|
||||
func (ct *ConnTracker) CountActiveConns() uint {
|
||||
ct.RLock()
|
||||
defer ct.RUnlock()
|
||||
ct.mutex.RLock()
|
||||
defer ct.mutex.RUnlock()
|
||||
active := uint(0)
|
||||
for _, ci := range ct.connectionInfo {
|
||||
if ci.IsConnected {
|
||||
@@ -69,8 +65,8 @@ func (ct *ConnTracker) CountActiveConns() uint {
|
||||
// HasConnectedWith checks if we've ever had a successful connection to the edge
|
||||
// with said protocol.
|
||||
func (ct *ConnTracker) HasConnectedWith(protocol connection.Protocol) bool {
|
||||
ct.RLock()
|
||||
defer ct.RUnlock()
|
||||
ct.mutex.RLock()
|
||||
defer ct.mutex.RUnlock()
|
||||
for _, ci := range ct.connectionInfo {
|
||||
if ci.Protocol == protocol {
|
||||
return true
|
||||
|
Reference in New Issue
Block a user