diff --git a/src/neo/Network/P2P/TaskManager.cs b/src/neo/Network/P2P/TaskManager.cs index 4f4397aedb..fb1ade45bd 100644 --- a/src/neo/Network/P2P/TaskManager.cs +++ b/src/neo/Network/P2P/TaskManager.cs @@ -120,6 +120,7 @@ private void OnNewTasks(InvPayload payload) private void OnPersistCompleted(Block block) { receivedBlockIndex.Remove(block.Index); + RequestTasks(false); } protected override void OnReceive(object message) @@ -293,7 +294,7 @@ private void RequestTasks(bool sendPing) var highestBlockIndex = sessions.Values.Max(p => p.LastBlockIndex); for (; taskCounts < MaxSyncTasksCount; taskCounts++) { - if (lastTaskIndex >= highestBlockIndex) break; + if (lastTaskIndex >= highestBlockIndex || lastTaskIndex >= Blockchain.Singleton.Height + InvPayload.MaxHashesCount) break; if (!AssignSyncTask(++lastTaskIndex)) break; } }