diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go
index b0d55bc44780ff2e420b872683c9f5d71635a6be..af9b6b2b1ea22f49bc7ffcd6ea773f8da7ba84e7 100644
--- a/eth/downloader/downloader.go
+++ b/eth/downloader/downloader.go
@@ -165,6 +165,10 @@ func (d *Downloader) Synchronise(id string, hash common.Hash) error {
 	}
 	defer atomic.StoreInt32(&d.synchronising, 0)
 
+	// If the head hash is banned, terminate immediately
+	if d.banned.Has(hash) {
+		return ErrInvalidChain
+	}
 	// Post a user notification of the sync (only once per session)
 	if atomic.CompareAndSwapInt32(&d.notified, 0, 1) {
 		glog.V(logger.Info).Infoln("Block synchronisation started")