diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index ef007051c3155b73f9a98e727890d3c722886d56..0f5ebf5bee80ac7964d888a73f844e521cdc9412 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -47,7 +47,7 @@ import _ "net/http/pprof"
 
 const (
 	ClientIdentifier = "Geth"
-	Version          = "0.9.14"
+	Version          = "0.9.15"
 )
 
 var (
diff --git a/eth/sync.go b/eth/sync.go
index 16d85d1f14151628e28ccf6d5b4bc800bf82ba3d..9e8b21a7cfaffa4bc8257c1b018f0f3a6ca4343b 100644
--- a/eth/sync.go
+++ b/eth/sync.go
@@ -89,6 +89,13 @@ func (pm *ProtocolManager) synchronise(peer *peer) {
 		return
 	}
 
+	// FIXME if we have the hash in our chain and the TD of the peer is
+	// much higher than ours, something is wrong with us or the peer.
+	// Check if the hash is on our own chain
+	if pm.chainman.HasBlock(peer.recentHash) {
+		return
+	}
+
 	// Get the hashes from the peer (synchronously)
 	err := pm.downloader.Synchronise(peer.id, peer.recentHash)
 	if err != nil && err == downloader.ErrBadPeer {