Skip to content

Commit 20078a4

Browse files
authored
Merge pull request #78 from ss3344520/handshake_opt
optimize the duplicate peer scenario logic in handshake
2 parents c05b995 + aa306b7 commit 20078a4

6 files changed

Lines changed: 15 additions & 13 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ repositories {
4343
Then add the required packages as dependencies. Please add dependencies locally.
4444
```bash
4545
dependencies {
46-
implementation group: 'io.github.tronprotocol', name: 'libp2p', version: '2.2.0'
46+
implementation group: 'io.github.tronprotocol', name: 'libp2p', version: '2.2.1'
4747
}
4848
```
4949
Or if you are using the jar files as your dependencies:
@@ -66,7 +66,7 @@ dependencies {
6666
<dependency>
6767
<groupId>io.github.tronprotocol</groupId>
6868
<artifactId>libp2p</artifactId>
69-
<version>2.2.0</version>
69+
<version>2.2.1</version>
7070
</dependency>
7171
```
7272

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group 'io.github.tronprotocol'
2-
version '2.2.0'
2+
version '2.2.1'
33

44
buildscript {
55
repositories {

src/main/java/org/tron/p2p/connection/business/handshake/HandshakeService.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class HandshakeService implements MessageProcess {
1919
private final int networkId = Parameter.p2pConfig.getNetworkId();
2020

2121
public void startHandshake(Channel channel) {
22-
sendHelloMsg(channel, DisconnectCode.NORMAL);
22+
sendHelloMsg(channel, DisconnectCode.NORMAL, channel.getStartTime());
2323
}
2424

2525
@Override
@@ -37,7 +37,9 @@ public void processMessage(Channel channel, Message message) {
3737

3838
DisconnectCode code = ChannelManager.processPeer(channel);
3939
if (code != DisconnectCode.NORMAL) {
40-
sendHelloMsg(channel, code);
40+
if (!channel.isActive()) {
41+
sendHelloMsg(channel, code, msg.getTimestamp());
42+
}
4143
logDisconnectReason(channel, getDisconnectReason(code));
4244
channel.close();
4345
return;
@@ -68,20 +70,20 @@ public void processMessage(Channel channel, Message message) {
6870
if (msg.getNetworkId() != networkId) {
6971
log.info("Peer {} different network id, peer->{}, me->{}",
7072
channel.getInetSocketAddress(), msg.getNetworkId(), networkId);
71-
sendHelloMsg(channel, DisconnectCode.DIFFERENT_VERSION);
73+
sendHelloMsg(channel, DisconnectCode.DIFFERENT_VERSION, msg.getTimestamp());
7274
logDisconnectReason(channel, DisconnectReason.DIFFERENT_VERSION);
7375
channel.close();
7476
return;
7577
}
76-
sendHelloMsg(channel, DisconnectCode.NORMAL);
78+
sendHelloMsg(channel, DisconnectCode.NORMAL, msg.getTimestamp());
7779
}
7880
channel.setFinishHandshake(true);
7981
channel.updateAvgLatency(System.currentTimeMillis() - channel.getStartTime());
8082
Parameter.handlerList.forEach(h -> h.onConnect(channel));
8183
}
8284

83-
private void sendHelloMsg(Channel channel, DisconnectCode code) {
84-
HelloMessage helloMessage = new HelloMessage(code);
85+
private void sendHelloMsg(Channel channel, DisconnectCode code, long time) {
86+
HelloMessage helloMessage = new HelloMessage(code, time);
8587
channel.send(helloMessage);
8688
}
8789

src/main/java/org/tron/p2p/connection/message/handshake/HelloMessage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ public HelloMessage(byte[] data) throws Exception {
1818
this.helloMessage = Connect.HelloMessage.parseFrom(data);
1919
}
2020

21-
public HelloMessage(DisconnectCode code) {
21+
public HelloMessage(DisconnectCode code, long time) {
2222
super(MessageType.HANDSHAKE_HELLO, null);
2323
Discover.Endpoint endpoint = Parameter.getHomeNode();
2424
this.helloMessage = Connect.HelloMessage.newBuilder()
2525
.setFrom(endpoint)
2626
.setNetworkId(Parameter.p2pConfig.getNetworkId())
2727
.setCode(code.getValue())
2828
.setVersion(Parameter.version)
29-
.setTimestamp(System.currentTimeMillis()).build();
29+
.setTimestamp(time).build();
3030
this.data = helloMessage.toByteArray();
3131
}
3232

src/test/java/org/tron/p2p/connection/MessageTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void testPong() {
5252

5353
@Test
5454
public void testHandShakeHello() {
55-
HelloMessage helloMessage = new HelloMessage(DisconnectCode.NORMAL);
55+
HelloMessage helloMessage = new HelloMessage(DisconnectCode.NORMAL, 0);
5656
byte[] messageData = helloMessage.getSendData();
5757
try {
5858
Message message = Message.parse(messageData);

src/test/java/org/tron/p2p/connection/message/handshake/HelloMessageTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class HelloMessageTest {
1414
@Test
1515
public void testHelloMessage() throws Exception {
1616
p2pConfig = new P2pConfig();
17-
HelloMessage m1 = new HelloMessage(DisconnectCode.NORMAL);
17+
HelloMessage m1 = new HelloMessage(DisconnectCode.NORMAL, 0);
1818
Assert.assertEquals(0, m1.getCode());
1919

2020
Assert.assertTrue(Arrays.equals(p2pConfig.getNodeID(), m1.getFrom().getId()));

0 commit comments

Comments
 (0)