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 <anto...@lunar-ocean.com> 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: commits-unsubscr...@tuweni.apache.org For additional commands, e-mail: commits-h...@tuweni.apache.org