Skip to content

Commit 9f8435a

Browse files
committed
fix the send hello
1 parent c46fbb5 commit 9f8435a

File tree

4 files changed

+27
-22
lines changed

4 files changed

+27
-22
lines changed

src/main/java/org/tron/common/overlay/server/Channel.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public void init(ChannelPipeline pipeline, String remoteId, boolean discoveryMod
128128

129129
}
130130

131-
public boolean publicHandshakeFinished(ChannelHandlerContext ctx, HelloMessage msg) {
131+
public void publicHandshakeFinished(ChannelHandlerContext ctx, HelloMessage msg) {
132132
ctx.pipeline().remove(handshakeHandler);
133133
msgQueue.activate(ctx);
134134
ctx.pipeline().addLast("messageCodec", messageCodec);
@@ -138,7 +138,6 @@ public boolean publicHandshakeFinished(ChannelHandlerContext ctx, HelloMessage m
138138
setTronState(TronState.HANDSHAKE_FINISHED);
139139
getNodeStatistics().p2pHandShake.add();
140140
logger.info("Finish handshake with {}.", ctx.channel().remoteAddress());
141-
return channelManager.addPeer(this);
142141
}
143142

144143
/**

src/main/java/org/tron/common/overlay/server/ChannelManager.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -116,36 +116,30 @@ public boolean isRecentlyDisconnected(InetAddress peerAddr) {
116116
}
117117
}
118118

119-
public boolean addPeer(Channel peer) {
120-
boolean result = procPeer(peer);
121-
if (result) {
122-
activePeers.put(peer.getNodeIdWrapper(), peer);
123-
syncPool.onConnect(peer);
124-
logger.info("Add active peer {}, total active peers: {}", peer, activePeers.size());
125-
}
126-
return result;
127-
}
128-
129-
private boolean procPeer(Channel peer) {
119+
public synchronized boolean procPeer(Channel peer) {
130120
if (peer.getNodeStatistics().isPenalized()) {
131121
disconnect(peer, peer.getNodeStatistics().getDisconnectReason());
132122
return false;
133-
} else if (!peer.isActive() && activePeers.size() >= maxActivePeers) {
123+
}
124+
125+
if (!peer.isActive() && activePeers.size() >= maxActivePeers) {
134126
disconnect(peer, TOO_MANY_PEERS);
135127
return false;
136-
} else if (activePeers.containsKey(peer.getNodeIdWrapper())) {
128+
}
129+
130+
if (activePeers.containsKey(peer.getNodeIdWrapper())) {
137131
Channel channel = activePeers.get(peer.getNodeIdWrapper());
138132
if (channel.getStartTime() > peer.getStartTime()) {
139133
logger.info("Disconnect connection established later, {}", channel.getNode());
140134
disconnect(channel, DUPLICATE_PEER);
141-
return true;
142135
} else {
143136
disconnect(peer, DUPLICATE_PEER);
144137
return false;
145138
}
146-
} else {
147-
return true;
148139
}
140+
logger.info("Add active peer {}, total active peers: {}", peer, activePeers.size());
141+
activePeers.put(peer.getNodeIdWrapper(), peer);
142+
return true;
149143
}
150144

151145
public Collection<Channel> getActivePeers() {

src/main/java/org/tron/common/overlay/server/HandshakeHandler.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public class HandshakeHandler extends ByteToMessageDecoder {
5252

5353
private final NodeManager nodeManager;
5454

55+
private final ChannelManager channelManager;
56+
5557
private Manager manager;
5658

5759
private P2pMessageFactory messageFactory = new P2pMessageFactory();
@@ -60,8 +62,13 @@ public class HandshakeHandler extends ByteToMessageDecoder {
6062
private NodeImpl node;
6163

6264
@Autowired
63-
public HandshakeHandler(final NodeManager nodeManager, final Manager manager) {
65+
private SyncPool syncPool;
66+
67+
@Autowired
68+
public HandshakeHandler(final NodeManager nodeManager, final ChannelManager channelManager,
69+
final Manager manager) {
6470
this.nodeManager = nodeManager;
71+
this.channelManager = channelManager;
6572
this.manager = manager;
6673
}
6774

@@ -148,11 +155,15 @@ private void handleHelloMsg(ChannelHandlerContext ctx, HelloMessage msg) {
148155

149156
channel.getNodeStatistics().p2pInHello.add();
150157

151-
boolean result = channel.publicHandshakeFinished(ctx, msg);
158+
channel.publicHandshakeFinished(ctx, msg);
159+
if (!channelManager.procPeer(channel)) {
160+
return;
161+
}
152162

153-
if (result && remoteId.length != 64) {
163+
if (remoteId.length != 64) {
154164
sendHelloMsg(ctx, msg.getTimestamp());
155-
node.onConnectPeer((PeerConnection) channel);
156165
}
166+
167+
syncPool.onConnect(channel);
157168
}
158169
}

src/main/java/org/tron/common/overlay/server/SyncPool.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ public void onConnect(Channel peer) {
155155
if (!activePeers.contains(peer)) {
156156
activePeers.add((PeerConnection) peer);
157157
activePeers.sort(Comparator.comparingDouble(c -> c.getPeerStats().getAvgLatency()));
158+
peerDel.onConnectPeer((PeerConnection) peer);
158159
}
159160
}
160161

0 commit comments

Comments
 (0)