This is an automated email from the ASF dual-hosted git repository.
toulmean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git
The following commit(s) were added to refs/heads/main by this push:
new f4ee852 Fix discovery endpoint showing a zero port
new b1331bd Merge pull request #320 from atoulme/fix_disc_port_zero_throw
f4ee852 is described below
commit f4ee8523e48aebdd2b962d8981a27ce416703d06
Author: Antoine Toulme <[email protected]>
AuthorDate: Sun Jul 25 08:11:31 2021 -0700
Fix discovery endpoint showing a zero port
---
devp2p/src/main/kotlin/org/apache/tuweni/devp2p/Endpoint.kt | 6 ++++--
.../test/kotlin/org/apache/tuweni/devp2p/EndpointTest.kt | 13 +++++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/Endpoint.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/Endpoint.kt
index 5bfb495..1cf82b5 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/Endpoint.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/Endpoint.kt
@@ -77,8 +77,10 @@ data class Endpoint(
throw RLPException(e)
}
- val udpPort = reader.readInt()
-
+ var udpPort = reader.readInt()
+ if (udpPort == 0) { // this is an invalid port number we see in the
wild. Use DEFAULT_PORT instead.
+ udpPort = DEFAULT_PORT
+ }
// Some implementations seem to send packets that either do not have the
TCP port field, or to have an
// RLP NULL value for it.
var tcpPort: Int? = null
diff --git a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/EndpointTest.kt
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/EndpointTest.kt
index 174c608..49e5a5b 100644
--- a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/EndpointTest.kt
+++ b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/EndpointTest.kt
@@ -21,6 +21,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotEquals
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
+import java.net.InetAddress
internal class EndpointTest {
@@ -96,4 +97,16 @@ internal class EndpointTest {
val endpoint4: Endpoint = RLP.decode(encoding2) { reader ->
Endpoint.readFrom(reader) }
assertEquals(endpoint3, endpoint4)
}
+
+ @Test
+ fun shouldChangePortZeroToDefaultPort() {
+ val encoding1 = RLP.encode { writer ->
+ writer.writeByteArray(InetAddress.getByName("127.0.0.1").address)
+ writer.writeInt(0)
+ writer.writeInt(0)
+ }
+
+ val endpoint: Endpoint = RLP.decode(encoding1) { reader ->
Endpoint.readFrom(reader) }
+ assertEquals(30303, endpoint.udpPort)
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]