diff --git a/framework/src/main/java/org/tron/core/net/P2pEventHandlerImpl.java b/framework/src/main/java/org/tron/core/net/P2pEventHandlerImpl.java index 10615b70ce3..7518b1347a7 100644 --- a/framework/src/main/java/org/tron/core/net/P2pEventHandlerImpl.java +++ b/framework/src/main/java/org/tron/core/net/P2pEventHandlerImpl.java @@ -38,6 +38,7 @@ import org.tron.p2p.P2pEventHandler; import org.tron.p2p.connection.Channel; import org.tron.protos.Protocol; +import org.tron.protos.Protocol.ReasonCode; @Slf4j(topic = "net") @Component @@ -232,7 +233,8 @@ private void processException(PeerConnection peer, TronMessage msg, Exception ex code = Protocol.ReasonCode.BAD_BLOCK; break; case NO_SUCH_MESSAGE: - case MESSAGE_WITH_WRONG_LENGTH: + code = Protocol.ReasonCode.NO_SUCH_MESSAGE; + break; case BAD_MESSAGE: code = Protocol.ReasonCode.BAD_PROTOCOL; break; diff --git a/framework/src/main/java/org/tron/core/net/message/sync/ChainInventoryMessage.java b/framework/src/main/java/org/tron/core/net/message/sync/ChainInventoryMessage.java index 4179544ebf7..610a5ff2f11 100644 --- a/framework/src/main/java/org/tron/core/net/message/sync/ChainInventoryMessage.java +++ b/framework/src/main/java/org/tron/core/net/message/sync/ChainInventoryMessage.java @@ -73,6 +73,7 @@ public String toString() { sb.append(", end blockId: ").append(blockIdWeGet.peekLast().getString()); } } + sb.append(", remain_num: ").append(chainInventory.getRemainNum()); return sb.toString(); } } diff --git a/framework/src/main/java/org/tron/core/net/peer/PeerManager.java b/framework/src/main/java/org/tron/core/net/peer/PeerManager.java index a80101d4f3a..537f2083691 100644 --- a/framework/src/main/java/org/tron/core/net/peer/PeerManager.java +++ b/framework/src/main/java/org/tron/core/net/peer/PeerManager.java @@ -16,6 +16,7 @@ import org.tron.common.prometheus.MetricLabels; import org.tron.common.prometheus.Metrics; import org.tron.p2p.connection.Channel; +import org.tron.protos.Protocol.ReasonCode; @Slf4j(topic = "net") public class PeerManager { @@ -48,6 +49,7 @@ public static void close() { try { for (PeerConnection p : new ArrayList<>(peers)) { if (!p.isDisconnect()) { + p.disconnect(ReasonCode.PEER_QUITING); p.getChannel().close(); } } diff --git a/framework/src/main/java/org/tron/core/net/service/relay/RelayService.java b/framework/src/main/java/org/tron/core/net/service/relay/RelayService.java index 9f1b2ef3c37..dfc5f2e89da 100644 --- a/framework/src/main/java/org/tron/core/net/service/relay/RelayService.java +++ b/framework/src/main/java/org/tron/core/net/service/relay/RelayService.java @@ -34,6 +34,7 @@ import org.tron.core.store.WitnessScheduleStore; import org.tron.p2p.connection.Channel; import org.tron.protos.Protocol; +import org.tron.protos.Protocol.ReasonCode; @Slf4j(topic = "net") @Component @@ -184,6 +185,7 @@ private void disconnect() { TronNetService.getP2pConfig().getActiveNodes().remove(address); TronNetService.getPeers().forEach(peer -> { if (peer.getInetAddress().equals(address.getAddress())) { + peer.disconnect(ReasonCode.NOT_WITNESS); peer.getChannel().close(); } }); diff --git a/protocol/src/main/protos/core/Tron.proto b/protocol/src/main/protos/core/Tron.proto index aa6a96ba1b3..2fc08901e93 100644 --- a/protocol/src/main/protos/core/Tron.proto +++ b/protocol/src/main/protos/core/Tron.proto @@ -601,6 +601,8 @@ enum ReasonCode { TOO_MANY_PEERS_WITH_SAME_IP = 0x22; LIGHT_NODE_SYNC_FAIL = 0x23; BELOW_THAN_ME = 0X24; + NOT_WITNESS = 0x25; + NO_SUCH_MESSAGE = 0x26; UNKNOWN = 0xFF; }