Skip to content

Commit bb4eec5

Browse files
author
Nicolas Tallar
committed
Refactoring and changed default supervisor strategy on PeerActor
1 parent d3c68e3 commit bb4eec5

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/main/scala/io/iohk/ethereum/network/PeerActor.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.iohk.ethereum.network
22

33
import java.net.{InetSocketAddress, URI}
44

5+
import akka.actor.SupervisorStrategy.Stop
56
import io.iohk.ethereum.network.PeerManagerActor.PeerConfiguration
67
import akka.actor._
78
import akka.agent.Agent
@@ -42,6 +43,11 @@ class PeerActor[R <: HandshakeResult](
4243
import PeerActor._
4344
import context.{dispatcher, system}
4445

46+
override val supervisorStrategy: OneForOneStrategy =
47+
OneForOneStrategy() {
48+
case _ => Stop
49+
}
50+
4551
def scheduler: Scheduler = externalSchedulerOpt getOrElse system.scheduler
4652

4753
val peerId: PeerId = PeerId(self.path.name)

src/main/scala/io/iohk/ethereum/network/rlpx/RLPxConnectionHandler.scala

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ class RLPxConnectionHandler(
8282
(responsePacket, result, remainingData)
8383
}
8484
lazy val maybePostEIP8Result = Try {
85-
val encryptedPayloadSize = ByteUtils.bigEndianToShort(data.take(2).toArray)
86-
val (packetData, remainingData) = data.splitAt(encryptedPayloadSize + 2)
85+
val (packetData, remainingData) = decodeV4Packet(data)
8786
val (responsePacket, result) = handshaker.handleInitialMessageV4(packetData)
8887
(responsePacket, result, remainingData)
8988
}
@@ -110,8 +109,7 @@ class RLPxConnectionHandler(
110109
(result, remainingData)
111110
}
112111
val maybePostEIP8Result = Try {
113-
val size = ByteUtils.bigEndianToShort(data.take(2).toArray)
114-
val (packetData, remainingData) = data.splitAt(size + 2)
112+
val (packetData, remainingData) = decodeV4Packet(data)
115113
val result = handshaker.handleResponseMessageV4(packetData)
116114
(result, remainingData)
117115
}
@@ -124,6 +122,18 @@ class RLPxConnectionHandler(
124122
}
125123
}
126124

125+
/**
126+
* Decode V4 packet
127+
*
128+
* @param data, includes both the V4 packet with bytes from next messages
129+
* @return data of the packet and the remaining data
130+
*/
131+
private def decodeV4Packet(data: ByteString): (ByteString, ByteString) = {
132+
val encryptedPayloadSize = ByteUtils.bigEndianToShort(data.take(2).toArray)
133+
val (packetData, remainingData) = data.splitAt(encryptedPayloadSize + 2)
134+
packetData -> remainingData
135+
}
136+
127137
def handleTimeout: Receive = {
128138
case AuthHandshakeTimeout =>
129139
log.warning(s"[Stopping Connection] Auth handshake timeout for peer $peerId")

0 commit comments

Comments
 (0)