Merge remote-tracking branch 'origin/v0.4.1-dev' into v0.5.0-dev

This commit is contained in:
Mike Zak 2020-06-04 15:11:40 +03:00
commit e09ce32146
2 changed files with 25 additions and 2 deletions

View File

@ -13,6 +13,7 @@ import (
"runtime/debug"
"runtime/pprof"
"strings"
"time"
"github.com/kaspanet/kaspad/dbaccess"
@ -145,7 +146,20 @@ func kaspadMain(serverChan chan<- *server.Server) error {
defer func() {
kasdLog.Infof("Gracefully shutting down the server...")
server.Stop()
server.WaitForShutdown()
shutdownDone := make(chan struct{})
go func() {
server.WaitForShutdown()
shutdownDone <- struct{}{}
}()
const shutdownTimeout = 2 * time.Minute
select {
case <-shutdownDone:
case <-time.After(shutdownTimeout):
kasdLog.Criticalf("Graceful shutdown timed out %s. Terminating...", shutdownTimeout)
}
srvrLog.Infof("Server shutdown complete")
}()
server.Start()

View File

@ -529,8 +529,17 @@ func (sm *SyncManager) handleBlockMsg(bmsg *blockMsg) {
return
}
// Request the parents for the orphan block from the peer that sent it.
if isOrphan {
// If we received an orphan block from the sync peer, it is
// misbehaving and must be disconnected from.
if peer == sm.syncPeer {
log.Errorf("Received an orphan block %s from sync peer %s. Disconnecting...",
blockHash, peer)
peer.Disconnect()
return
}
// Request the parents for the orphan block from the peer that sent it.
missingAncestors, err := sm.dag.GetOrphanMissingAncestorHashes(blockHash)
if err != nil {
log.Errorf("Failed to find missing ancestors for block %s: %s",