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

Reply via email to