This is an automated email from the ASF dual-hosted git repository.
toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git
The following commit(s) were added to refs/heads/master by this push:
new 8fae725 Fix for issue #50 - support relative path
8fae725 is described below
commit 8fae725094b3e66c7e5954e4d47311b6da26d936
Author: Antoine Toulme <[email protected]>
AuthorDate: Sun Mar 1 22:33:52 2020 -0800
Fix for issue #50 - support relative path
---
.../kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt | 2 +-
.../kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt | 4 ++--
.../tuweni/devp2p/v5/internal/DefaultUdpConnector.kt | 2 +-
.../devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt | 6 ++++++
.../org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt | 3 +++
.../org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt | 15 +++++++++------
.../org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt | 8 +++-----
.../tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt | 2 +-
.../apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt | 11 +++++++++++
.../org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt | 11 -----------
.../tuweni/net/tls/FileBackedFingerprintRepository.java | 2 +-
.../net/tls/FileBackedFingerprintRepositoryTest.java | 11 +++++++++++
12 files changed, 49 insertions(+), 28 deletions(-)
diff --git
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
index 134c681..cc48c86 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
@@ -21,7 +21,7 @@ import org.apache.tuweni.devp2p.v5.packet.UdpMessage
import java.net.InetSocketAddress
/**
- * Udp message handler, aimed to process it's parameters and sending result
+ * Udp message handler, aimed to process its parameters and sending result
*/
interface MessageHandler<T : UdpMessage> {
diff --git a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
index f731476..7c4b2f6 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
@@ -36,7 +36,7 @@ import org.apache.tuweni.devp2p.v5.packet.UdpMessage
interface PacketCodec {
/**
- * Encodes message, encrypting it's body
+ * Encodes message, encrypting its body
*
* @param message message for encoding
* @param destNodeId receiver node identifier for tag creation
@@ -47,7 +47,7 @@ interface PacketCodec {
fun encode(message: UdpMessage, destNodeId: Bytes, handshakeParams:
HandshakeInitParameters? = null): EncodeResult
/**
- * Decodes message, decrypting it's body
+ * Decodes message, decrypting its body
*
* @param message message for decoding
*
diff --git
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
index 8e072f8..4b209d6 100644
---
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
+++
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
@@ -169,7 +169,7 @@ public class DefaultUdpConnector(
) {
val encodeResult = packetCodec.encode(message, destNodeId, handshakeParams)
pendingMessages.put(encodeResult.authTag.toHexString(),
TrackingMessage(message, destNodeId))
- receiveChannel.send(ByteBuffer.wrap(encodeResult.content.toArray()),
address)
+ receiveChannel.send(ByteBuffer.wrap(encodeResult.content.toArrayUnsafe()),
address)
}
override suspend fun terminate() {
diff --git
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
index b68c997..b585eb5 100644
---
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
+++
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
@@ -25,6 +25,11 @@ import org.apache.tuweni.devp2p.v5.packet.RandomMessage
import org.apache.tuweni.devp2p.v5.packet.WhoAreYouMessage
import java.net.InetSocketAddress
+/**
+ * Handles WHOAREYOU messages.
+ *
+ * WHOAREYOU is sent by the other node after the first message is sent, asking
to initiate the connection.
+ */
class WhoAreYouMessageHandler : MessageHandler<WhoAreYouMessage> {
override suspend fun handle(
@@ -35,6 +40,7 @@ class WhoAreYouMessageHandler :
MessageHandler<WhoAreYouMessage> {
) {
// Retrieve enr
val trackingMessage = connector.getPendingMessage(message.authTag)
+ // If no message was sent to the node, ignore the WHOAREYOU request.
trackingMessage?.let {
val rlpEnr = connector.getNodeRecords().find(trackingMessage.nodeId)
rlpEnr?.let {
diff --git
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
index 5a482ea..b5a870b 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
@@ -18,6 +18,9 @@ package org.apache.tuweni.devp2p.v5.misc
import org.apache.tuweni.bytes.Bytes
+/**
+ * The result of encoding a message: its authentication tag, used to track
responses, and its content as bytes.
+ */
class EncodeResult(
val authTag: Bytes,
val content: Bytes
diff --git
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
index 41d556b..526fa06 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
@@ -22,6 +22,15 @@ class RandomMessage(
val authTag: Bytes = authTag(),
val data: Bytes = randomData()
) : UdpMessage() {
+
+ companion object {
+ fun randomData(): Bytes = Bytes.random(RANDOM_DATA_LENGTH)
+
+ fun create(authTag: Bytes, content: Bytes = randomData()): RandomMessage {
+ return RandomMessage(authTag, content)
+ }
+ }
+
override fun getMessageType(): Bytes {
throw UnsupportedOperationException("Message type unsupported for random
messages")
}
@@ -29,10 +38,4 @@ class RandomMessage(
override fun encode(): Bytes {
return data
}
-
- companion object {
- fun create(authTag: Bytes, content: Bytes = randomData()): RandomMessage {
- return RandomMessage(authTag, content)
- }
- }
}
diff --git
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
index 9eb511e..e441e4c 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
@@ -19,7 +19,7 @@ package org.apache.tuweni.devp2p.v5.packet
import org.apache.tuweni.bytes.Bytes
import org.apache.tuweni.crypto.Hash
-abstract class UdpMessage {
+interface UdpMessage {
companion object {
@@ -51,12 +51,10 @@ abstract class UdpMessage {
fun authTag(): Bytes = Bytes.random(AUTH_TAG_LENGTH)
- fun randomData(): Bytes = Bytes.random(RANDOM_DATA_LENGTH)
-
fun idNonce(): Bytes = Bytes.random(ID_NONCE_LENGTH)
}
- abstract fun encode(): Bytes
+ fun encode(): Bytes
- abstract fun getMessageType(): Bytes
+ fun getMessageType(): Bytes
}
diff --git
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
index d291836..afcf1f3 100644
---
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
+++
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
@@ -101,7 +101,7 @@ class DefaultUdpConnectorTest {
val socketChannel = CoroutineDatagramChannel.open()
socketChannel.bind(receiverAddress)
- val data = UdpMessage.randomData()
+ val data = RandomMessage.randomData()
val randomMessage = RandomMessage(UdpMessage.authTag(), data)
connector!!.send(receiverAddress, randomMessage, destNodeId)
val buffer = ByteBuffer.allocate(UdpMessage.MAX_UDP_MESSAGE_SIZE)
diff --git
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
index c3c6c20..1ac50d9 100644
---
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
+++
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
@@ -36,4 +36,15 @@ class RandomMessageTest {
assert(decodingResult.data == data)
}
+
+ @Test
+ fun randomDataGivesRandom44Bytes() {
+ val firstResult = RandomMessage.randomData()
+
+ assert(UdpMessage.RANDOM_DATA_LENGTH == firstResult.size())
+
+ val secondResult = RandomMessage.randomData()
+
+ assert(secondResult != firstResult)
+ }
}
diff --git
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
index f6881cb..07960ae 100644
---
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
+++
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
@@ -66,17 +66,6 @@ class UdpMessageTest {
}
@Test
- fun randomDataGivesRandom44Bytes() {
- val firstResult = UdpMessage.randomData()
-
- assert(UdpMessage.RANDOM_DATA_LENGTH == firstResult.size())
-
- val secondResult = UdpMessage.randomData()
-
- assert(secondResult != firstResult)
- }
-
- @Test
fun idNonceGivesRandom32Bytes() {
val firstResult = UdpMessage.idNonce()
diff --git
a/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
b/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
index 3f39bf4..391edba 100644
---
a/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
+++
b/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
@@ -36,7 +36,7 @@ final class FileBackedFingerprintRepository implements
FingerprintRepository {
FileBackedFingerprintRepository(Path fingerprintFile) {
try {
- createDirectories(fingerprintFile.getParent());
+ createDirectories(fingerprintFile.toAbsolutePath().getParent());
createFileIfMissing(fingerprintFile);
} catch (IOException e) {
throw new TLSEnvironmentException("Cannot create fingerprint file " +
fingerprintFile, e);
diff --git
a/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
b/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
index b9731d5..a581a2e 100644
---
a/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
+++
b/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
@@ -13,6 +13,7 @@
package org.apache.tuweni.net.tls;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.tuweni.io.file.Files.deleteRecursively;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -24,6 +25,7 @@ import org.apache.tuweni.junit.TempDirectoryExtension;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.security.SecureRandom;
import org.junit.jupiter.api.Test;
@@ -41,6 +43,15 @@ class FileBackedFingerprintRepositoryTest {
}
@Test
+ void testRelativePath() throws IOException {
+ try {
+ FileBackedFingerprintRepository repo = new
FileBackedFingerprintRepository(Paths.get("tmp", "foo"));
+ } finally {
+ deleteRecursively(Paths.get("tmp"));
+ }
+ }
+
+ @Test
FileBackedFingerprintRepository testAddingNewFingerprint(@TempDirectory Path
tempFolder) throws IOException {
FileBackedFingerprintRepository repo = new
FileBackedFingerprintRepository(tempFolder.resolve("repo"));
Bytes fingerprint = generateFingerprint();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]