From 1d6b65cd845b1360904dc1edc3285ae29472cf1b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Sat, 16 Jul 2016 12:14:20 +0300
Subject: [release/1.4.10] cmd/utils, eth: display the user's current fork,
 minor text tweak

(cherry picked from commit 993b41216092fa6dc20d3755afe322cd1376b398)
---
 cmd/utils/flags.go  | 20 +++++++++++++++++++-
 eth/handler_test.go |  1 +
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index df1dd1367..808cf7ca1 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -793,7 +793,8 @@ func MustMakeChainConfigFromDb(ctx *cli.Context, db ethdb.Database) *core.ChainC
 	// If the chain is already initialized, use any existing chain configs
 	config := new(core.ChainConfig)
 
-	if genesis := core.GetBlock(db, core.GetCanonicalHash(db, 0)); genesis != nil {
+	genesis := core.GetBlock(db, core.GetCanonicalHash(db, 0))
+	if genesis != nil {
 		storedConfig, err := core.GetChainConfig(db, genesis.Hash())
 		switch err {
 		case nil:
@@ -827,6 +828,23 @@ func MustMakeChainConfigFromDb(ctx *cli.Context, db ethdb.Database) *core.ChainC
 	case ctx.GlobalBool(OpposeDAOFork.Name):
 		config.DAOForkSupport = false
 	}
+	// Temporarilly display a proper message so the user knows which fork its on
+	if !ctx.GlobalBool(TestNetFlag.Name) && (genesis == nil || genesis.Hash() == common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3")) {
+		choice := "SUPPORT"
+		if !config.DAOForkSupport {
+			choice = "OPPOSE"
+		}
+		current := fmt.Sprintf("Geth is currently configured to %s the DAO hard-fork!", choice)
+		howtoswap := fmt.Sprintf("You can change your choice prior to block #%v with --support-dao-fork or --oppose-dao-fork.", config.DAOForkBlock)
+		howtosync := fmt.Sprintf("After the hard-fork block #%v passed, changing chains requires a resync from scratch!", config.DAOForkBlock)
+		separator := strings.Repeat("-", len(howtoswap))
+
+		glog.V(logger.Warn).Info(separator)
+		glog.V(logger.Warn).Info(current)
+		glog.V(logger.Warn).Info(howtoswap)
+		glog.V(logger.Warn).Info(howtosync)
+		glog.V(logger.Warn).Info(separator)
+	}
 	return config
 }
 
diff --git a/eth/handler_test.go b/eth/handler_test.go
index 2d307452d..c208f15c7 100644
--- a/eth/handler_test.go
+++ b/eth/handler_test.go
@@ -638,6 +638,7 @@ func testDAOChallenge(t *testing.T, localForked, remoteForked bool, timeout bool
 		if err := p2p.Send(peer.app, BlockHeadersMsg, []*types.Header{blocks[0].Header()}); err != nil {
 			t.Fatalf("failed to answer challenge: %v", err)
 		}
+		time.Sleep(100 * time.Millisecond) // Sleep to avoid the verification racing with the drops
 	} else {
 		// Otherwise wait until the test timeout passes
 		time.Sleep(daoChallengeTimeout + 500*time.Millisecond)
-- 
cgit v1.2.3