1
0
mirror of https://github.com/go-micro/go-micro.git synced 2024-12-24 10:07:04 +02:00

Limit the number of outbound connections to MaxConnections

This commit also fixes control channel shenanigans:
- recover error in control channel accept
This commit is contained in:
Milos Gajdos 2019-10-08 14:48:04 +01:00
parent b886dd4b8f
commit ec2fbde979
No known key found for this signature in database
GPG Key ID: 8B31058CC55DFD4F

View File

@ -29,6 +29,8 @@ var (
ControlChannel = "control"
// DefaultLink is default network link
DefaultLink = "network"
// MaxCconnections is the max number of network client connections
MaxCconnections = 3
)
var (
@ -193,6 +195,15 @@ func (n *network) resolveNodes() ([]string, error) {
}
}
// only return MaxCconnections nodes
if len(nodes) > MaxCconnections {
resNodes := make([]string, MaxCconnections)
for i, _ := range resNodes {
resNodes[i] = nodes[i]
}
return resNodes, nil
}
return nodes, nil
}
@ -497,7 +508,6 @@ func (n *network) handleCtrlConn(sess tunnel.Session, msg chan *transport.Messag
for {
m := new(transport.Message)
if err := sess.Recv(m); err != nil {
// TODO: should we bail here?
log.Debugf("Network tunnel advert receive error: %v", err)
return
}
@ -516,9 +526,7 @@ func (n *network) acceptCtrlConn(l tunnel.Listener, recv chan *transport.Message
// accept a connection
conn, err := l.Accept()
if err != nil {
// TODO: handle this
log.Debugf("Network tunnel [%s] accept error: %v", ControlChannel, err)
return
}
select {