Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

connected ip should not shown in unconnected list for getpeers API #1157

Closed
cloud8little opened this issue Oct 15, 2019 · 4 comments · Fixed by #1160
Closed

connected ip should not shown in unconnected list for getpeers API #1157

cloud8little opened this issue Oct 15, 2019 · 4 comments · Fixed by #1160

Comments

@cloud8little
Copy link
Contributor

cloud8little commented Oct 15, 2019

Describe the bug
some connected ip also shown in unconnected list for getpeers API

To Reproduce
Steps to reproduce the behavior:

  1. curl -X POST -d '{"jsonrpc": "2.0","method": "getpeers","params": [],"id": 1}' http://seed4.ngd.network:10332

{"jsonrpc":"2.0","id":1,"result":{"unconnected":[{"address":"144.76.162.50","port":10333},{"address":"3.229.176.157","port":10333},{"address":"124.205.119.183","port":10333},{"address":"47.244.42.109","port":10333},{"address":"47.95.222.22","port":10333},{"address":"14.152.106.43","port":10333},{"address":"18.130.244.37","port":10333},{"address":"13.95.110.172","port":10333},{"address":"101.88.82.200","port":10333},{"address":"18.138.212.81","port":10333},{"address":"23.97.246.218","port":10333},{"address":"13.228.208.203","port":20333},{"address":"34.84.93.195","port":10333},{"address":"35.238.97.165","port":10333},{"address":"35.158.117.74","port":10333},{"address":"3.112.138.57","port":10333},{"address":"13.230.19.97","port":10333},{"address":"178.128.198.255","port":10333},{"address":"195.201.87.244","port":10333},{"address":"180.76.104.5","port":10333},{"address":"18.216.146.68","port":10333},{"address":"52.202.156.204","port":10333},{"address":"47.90.29.31","port":10333},{"address":"13.113.217.133","port":10333},{"address":"52.69.137.133","port":10333},{"address":"180.76.50.66","port":10333},{"address":"54.69.134.249","port":10333},{"address":"47.111.100.0","port":10333},{"address":"47.92.106.161","port":10333},{"address":"13.230.237.195","port":10333},{"address":"52.68.118.177","port":10333},{"address":"54.249.145.198","port":10333},{"address":"35.222.110.210","port":10333},{"address":"47.99.189.137","port":10333},{"address":"18.179.5.31","port":10333},{"address":"50.225.198.67","port":10333},{"address":"88.99.193.204","port":15333},{"address":"13.80.148.40","port":10333},{"address":"54.196.33.24","port":10333},{"address":"47.89.253.82","port":10333},{"address":"47.90.28.83","port":10333},{"address":"40.73.34.77","port":10333},{"address":"52.30.147.224","port":10333},{"address":"138.201.222.170","port":20037},{"address":"35.230.70.112","port":10333},{"address":"52.78.189.238","port":10333},{"address":"140.143.76.198","port":10333},{"address":"149.129.175.157","port":11333},{"address":"148.251.177.254","port":10333},{"address":"47.244.26.97","port":10333},{"address":"95.216.41.121","port":10333},{"address":"18.194.0.22","port":10333},{"address":"18.136.190.9","port":10333},{"address":"52.220.1.196","port":10333},{"address":"13.229.98.18","port":10333},{"address":"94.130.90.159","port":20037},{"address":"18.162.108.140","port":10333},{"address":"18.184.185.59","port":8544},{"address":"185.250.251.12","port":10333},{"address":"217.12.203.33","port":10333},{"address":"18.217.91.255","port":10333},{"address":"54.169.151.10","port":10333},{"address":"47.88.237.121","port":10333},{"address":"47.74.147.233","port":10333},{"address":"18.139.97.235","port":10333},{"address":"47.75.143.59","port":10333},{"address":"161.117.193.208","port":10333},{"address":"221.122.37.74","port":10333},{"address":"52.14.130.46","port":10333},{"address":"101.200.43.179","port":10333},{"address":"51.91.189.149","port":10333},{"address":"88.208.3.195","port":10333},{"address":"1.214.220.178","port":10333},{"address":"47.74.144.83","port":10333},{"address":"35.198.225.152","port":10333},{"address":"13.251.205.172","port":10333},{"address":"13.209.44.12","port":13333},{"address":"13.209.44.12","port":11333},{"address":"13.209.131.99","port":13333},{"address":"13.209.131.99","port":11333},{"address":"217.12.201.61","port":10333},{"address":"107.155.56.28","port":10333},{"address":"35.246.149.221","port":10333},{"address":"89.207.131.151","port":10333},{"address":"149.56.31.230","port":10333},{"address":"47.74.134.169","port":10333},{"address":"52.193.102.161","port":10333},{"address":"54.91.148.140","port":10333},{"address":"213.196.37.164","port":10333},{"address":"47.251.5.71","port":10333},{"address":"13.231.243.99","port":17333},{"address":"161.117.15.71","port":10333},{"address":"47.111.112.48","port":10333},{"address":"3.112.28.145","port":10333},{"address":"13.56.246.207","port":10333},{"address":"116.203.225.169","port":10333},{"address":"46.20.74.253","port":10333},{"address":"178.63.50.78","port":10333},{"address":"94.130.76.116","port":10333},{"address":"47.74.244.204","port":10333},{"address":"180.76.57.238","port":10333},{"address":"47.52.137.102","port":10333},{"address":"104.248.50.32","port":10333},{"address":"52.14.228.80","port":10333},{"address":"54.254.251.59","port":10333},{"address":"54.254.251.59","port":10335},{"address":"54.67.91.119","port":10333},{"address":"13.251.207.0","port":10333},{"address":"142.234.35.213","port":10333},{"address":"47.254.28.42","port":10333},{"address":"180.76.169.246","port":10333},{"address":"104.43.234.181","port":10333},{"address":"72.141.22.201","port":10333},{"address":"197.80.61.20","port":10333}],"bad":[],"connected":[{"address":"54.185.56.9","port":10333},{"address":"35.158.117.74","port":10333},{"address":"34.219.200.76","port":10333},{"address":"94.130.182.117","port":10344},{"address":"52.87.217.222","port":10333},{"address":"47.91.209.112","port":10333},{"address":"52.197.205.193","port":10333},{"address":"149.56.21.37","port":10333},{"address":"52.38.125.205","port":10333},{"address":"37.59.32.210","port":10333},{"address":"3.112.138.57","port":10333},{"address":"98.101.196.61","port":10333},{"address":"47.89.20.188","port":10333},{"address":"104.196.172.132","port":10333},{"address":"109.194.199.73","port":10333},{"address":"167.114.208.68","port":10333},{"address":"54.91.148.140","port":10333},{"address":"159.138.234.252","port":10333},{"address":"18.223.99.87","port":10333},{"address":"54.250.134.234","port":10333},{"address":"115.182.75.74","port":10333},{"address":"47.97.73.20","port":10333},{"address":"31.171.244.97","port":10333},{"address":"13.113.194.157","port":17333},{"address":"3.112.138.57","port":10333},{"address":"94.130.68.227","port":15333},{"address":"149.129.175.157","port":11333},{"address":"54.238.185.156","port":17333},{"address":"54.196.33.24","port":10333},{"address":"47.75.246.239","port":10333},{"address":"3.112.138.57","port":10333},{"address":"47.74.242.228","port":10333},{"address":"222.111.213.199","port":10333},{"address":"94.130.76.116","port":10333},{"address":"3.229.176.157","port":10333},{"address":"52.199.130.74","port":10333},{"address":"1.234.18.162","port":10333},{"address":"42.61.27.26","port":10333},{"address":"3.114.6.35","port":10333},{"address":"52.193.102.161","port":10333}]}}

Expected behavior
connected array should show those node list who connect with seed4.ngd.network, unconnected array should show node list who does not have connection with seed4.ngd.network.

Screenshots
3221571124576_ pic_hd

Platform:

  • OS: Centos 7.3
  • Version neo-cli 2.10.3
@Tommo-L
Copy link
Contributor

Tommo-L commented Oct 18, 2019

I think the problem may be caused by following:

protected void AddPeers(IEnumerable<IPEndPoint> peers)
{
if (UnconnectedPeers.Count < UnconnectedMax)
{
peers = peers.Where(p => p.Port != ListenerTcpPort || !localAddresses.Contains(p.Address));
ImmutableInterlocked.Update(ref UnconnectedPeers, p => p.Union(peers));
}
}

Another modified the UnconnectedPeers is:

neo/neo/Network/P2P/Peer.cs

Lines 224 to 235 in df48b5d

private void OnTimer()
{
if (ConnectedPeers.Count >= MinDesiredConnections) return;
if (UnconnectedPeers.Count == 0)
NeedMorePeers(MinDesiredConnections - ConnectedPeers.Count);
IPEndPoint[] endpoints = UnconnectedPeers.Take(MinDesiredConnections - ConnectedPeers.Count).ToArray();
ImmutableInterlocked.Update(ref UnconnectedPeers, p => p.Except(endpoints));
foreach (IPEndPoint endpoint in endpoints)
{
ConnectToPeer(endpoint);
}
}

Therefore, when a new peer added in UnconnectedPeers, it should be filtered by ConnectedPeers.

@Tommo-L
Copy link
Contributor

Tommo-L commented Oct 18, 2019

fixed by #1160

@vncoelho
Copy link
Member

Nice findings @cloud8little. Great job as always!

@shargon
Copy link
Member

shargon commented Oct 18, 2019

@cloud8little could you test it if #160 fix it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants