//Join tells n to join and adds n to nodelist if welcomed. //if n returns another nodes, repeats it and return true.. //removes fron nodelist if not welcomed and return false. func Join(n *node.Node) bool { const retryJoin = 2 // Times; Join network if n == nil { return false } if hasNodeInTable(list, n) || node.Me(false).Nodestr == n.Nodestr { return false } flag := false for count := 0; count < retryJoin && ListLen() < defaultNodes; count++ { extnode, err := n.Join() if err != nil { RemoveFromTable(list, n) return false } AppendToList(n) flag = true if extnode == nil { return true } n = extnode } return flag }