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:
		| @@ -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 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user