Skip to content

Commit 23159f5

Browse files
committed
modify disconnect
1 parent 4b892b8 commit 23159f5

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,28 @@
2020
import static org.tron.common.overlay.message.ReasonCode.DUPLICATE_PEER;
2121
import static org.tron.common.overlay.message.ReasonCode.TOO_MANY_PEERS;
2222

23-
import java.io.IOException;
2423
import java.net.InetAddress;
2524
import java.net.InetSocketAddress;
26-
import java.util.*;
25+
import java.util.ArrayList;
26+
import java.util.Collection;
27+
import java.util.Collections;
28+
import java.util.Comparator;
29+
import java.util.Date;
30+
import java.util.HashSet;
31+
import java.util.List;
32+
import java.util.Map;
33+
import java.util.Set;
2734
import java.util.concurrent.ConcurrentHashMap;
2835
import java.util.concurrent.CopyOnWriteArrayList;
2936
import java.util.concurrent.Executors;
3037
import java.util.concurrent.ScheduledExecutorService;
3138
import java.util.concurrent.TimeUnit;
32-
33-
import io.netty.channel.ChannelHandlerContext;
34-
import io.netty.handler.timeout.ReadTimeoutException;
3539
import org.apache.commons.collections4.map.LRUMap;
3640
import org.slf4j.Logger;
3741
import org.slf4j.LoggerFactory;
3842
import org.springframework.beans.factory.annotation.Autowired;
3943
import org.springframework.stereotype.Component;
4044
import org.tron.common.overlay.client.PeerClient;
41-
import org.tron.common.overlay.message.DisconnectMessage;
4245
import org.tron.common.overlay.message.ReasonCode;
4346
import org.tron.core.config.args.Args;
4447
import org.tron.core.db.ByteArrayWrapper;
@@ -143,6 +146,13 @@ public void notifyDisconnect(Channel channel) {
143146
syncPool.onDisconnect(channel);
144147
activePeers.values().remove(channel);
145148
newPeers.remove(channel);
149+
if (channel == null || channel.getChannelHandlerContext() == null
150+
|| channel.getChannelHandlerContext().channel() == null) {
151+
return;
152+
}
153+
InetSocketAddress socketAddress = (InetSocketAddress) channel.getChannelHandlerContext()
154+
.channel().remoteAddress();
155+
recentlyDisconnected.put(socketAddress.getAddress(), new Date());
146156
}
147157

148158
public boolean isRecentlyDisconnected(InetAddress peerAddr) {

0 commit comments

Comments
 (0)