Skip to content

Commit 0d6900a

Browse files
committed
FIX: Don't serve nodes as connectable if their TCP and UDP ports are still the same.
1 parent 3fb801b commit 0d6900a

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/main/scala/io/iohk/ethereum/network/discovery/PeerDiscoveryManager.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class PeerDiscoveryManager(
4242
}
4343
.flatMap(ns => Iterant.fromList(ns.toList))
4444
.map(toNode)
45-
.filter(!isLocalNode(_))
45+
.filter(isConnectable)
4646

4747
// Create a consumer on top of the iterant with a limited buffer capacity, so that the Iterant
4848
// blocks trying to push items into it when it gets full, and thus stops making more random lookups.
@@ -73,7 +73,7 @@ class PeerDiscoveryManager(
7373
else
7474
knownNodesStorage.getKnownNodes().map(Node.fromUri)
7575

76-
(bootstrapNodes ++ knownNodes).filterNot(isLocalNode).toVector
76+
(bootstrapNodes ++ knownNodes).filter(isConnectable).toVector
7777
}
7878

7979
override def receive: Receive = init
@@ -191,7 +191,7 @@ class PeerDiscoveryManager(
191191

192192
maybeDiscoveredNodes
193193
.map(_ ++ alreadyDiscoveredNodes)
194-
.map(_.filterNot(isLocalNode))
194+
.map(_.filter(isConnectable))
195195
.map(DiscoveredNodesInfo(_))
196196
}
197197

@@ -238,8 +238,8 @@ class PeerDiscoveryManager(
238238
udpPort = enode.address.udpPort
239239
)
240240

241-
def isLocalNode(node: Node): Boolean =
242-
node.id == localNodeId
241+
def isConnectable(node: Node): Boolean =
242+
node.id != localNodeId && node.tcpPort != node.udpPort
243243

244244
def randomNodeId: ENode.Id = {
245245
// We could use `DiscoveryService.lookupRandom` which generates a random public key,

src/test/scala/io/iohk/ethereum/network/discovery/PeerDiscoveryManagerSpec.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ class PeerDiscoveryManagerSpec
3939
val defaultConfig = DiscoveryConfig(Config.config, bootstrapNodes = Set.empty)
4040

4141
val sampleKnownUris = Set(
42-
"enode://a59e33ccd2b3e52d578f1fbd70c6f9babda2650f0760d6ff3b37742fdcdfdb3defba5d56d315b40c46b70198c7621e63ffa3f987389c7118634b0fefbbdfa7fd@51.158.191.43:38556?discport=38556",
43-
"enode://651b484b652c07c72adebfaaf8bc2bd95b420b16952ef3de76a9c00ef63f07cca02a20bd2363426f9e6fe372cef96a42b0fec3c747d118f79fd5e02f2a4ebd4e@51.158.190.99:45678?discport=45678",
44-
"enode://9b1bf9613d859ac2071d88509ab40a111b75c1cfc51f4ad78a1fdbb429ff2405de0dc5ea8ae75e6ac88e03e51a465f0b27b517e78517f7220ae163a2e0692991@51.158.190.99:30426?discport=30426"
42+
"enode://a59e33ccd2b3e52d578f1fbd70c6f9babda2650f0760d6ff3b37742fdcdfdb3defba5d56d315b40c46b70198c7621e63ffa3f987389c7118634b0fefbbdfa7fd@51.158.191.43:38550?discport=38556",
43+
"enode://651b484b652c07c72adebfaaf8bc2bd95b420b16952ef3de76a9c00ef63f07cca02a20bd2363426f9e6fe372cef96a42b0fec3c747d118f79fd5e02f2a4ebd4e@51.158.190.99:45670?discport=45678",
44+
"enode://9b1bf9613d859ac2071d88509ab40a111b75c1cfc51f4ad78a1fdbb429ff2405de0dc5ea8ae75e6ac88e03e51a465f0b27b517e78517f7220ae163a2e0692991@51.158.190.99:30420?discport=30426"
4545
).map(new java.net.URI(_))
4646

4747
val sampleNodes = Set(
48-
"enode://111bd28d5b2c1378d748383fd83ff59572967c317c3063a9f475a26ad3f1517642a164338fb5268d4e32ea1cc48e663bd627dec572f1d201c7198518e5a506b1@88.99.216.30:45834?discport=45834",
49-
"enode://2b69a3926f36a7748c9021c34050be5e0b64346225e477fe7377070f6289bd363b2be73a06010fd516e6ea3ee90778dd0399bc007bb1281923a79374f842675a@51.15.116.226:30303?discport=30303"
48+
"enode://111bd28d5b2c1378d748383fd83ff59572967c317c3063a9f475a26ad3f1517642a164338fb5268d4e32ea1cc48e663bd627dec572f1d201c7198518e5a506b1@88.99.216.30:45830?discport=45834",
49+
"enode://2b69a3926f36a7748c9021c34050be5e0b64346225e477fe7377070f6289bd363b2be73a06010fd516e6ea3ee90778dd0399bc007bb1281923a79374f842675a@51.15.116.226:30300?discport=30303"
5050
).map(new java.net.URI(_)).map(Node.fromUri)
5151

5252
trait Fixture {

0 commit comments

Comments
 (0)