fix chain route

This commit is contained in:
rui.zheng 2017-11-09 13:25:35 +08:00
parent 8cb2269159
commit 11b727d72b

View File

@ -16,6 +16,7 @@ var (
// Chain is a proxy chain that holds a list of proxy nodes. // Chain is a proxy chain that holds a list of proxy nodes.
type Chain struct { type Chain struct {
isRoute bool
nodeGroups []*NodeGroup nodeGroups []*NodeGroup
} }
@ -28,6 +29,12 @@ func NewChain(nodes ...Node) *Chain {
return chain return chain
} }
func newRoute(nodes ...Node) *Chain {
chain := NewChain(nodes...)
chain.isRoute = true
return chain
}
// Nodes returns the proxy nodes that the chain holds. // Nodes returns the proxy nodes that the chain holds.
// If a node is a node group, the first node in the group will be returned. // If a node is a node group, the first node in the group will be returned.
func (c *Chain) Nodes() (nodes []Node) { func (c *Chain) Nodes() (nodes []Node) {
@ -165,8 +172,12 @@ func (c *Chain) getConn(route *Chain) (conn net.Conn, err error) {
} }
func (c *Chain) selectRoute() (route *Chain, err error) { func (c *Chain) selectRoute() (route *Chain, err error) {
if c.isRoute {
return c, nil
}
buf := bytes.Buffer{} buf := bytes.Buffer{}
route = NewChain() route = newRoute()
for _, group := range c.nodeGroups { for _, group := range c.nodeGroups {
selector := group.Selector selector := group.Selector
if selector == nil { if selector == nil {
@ -186,7 +197,7 @@ func (c *Chain) selectRoute() (route *Chain, err error) {
node.DialOptions = append(node.DialOptions, node.DialOptions = append(node.DialOptions,
ChainDialOption(route), ChainDialOption(route),
) )
route = NewChain() // cutoff the chain for multiplex route = newRoute() // cutoff the chain for multiplex
} }
route.AddNode(node) route.AddNode(node)
} }