diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 7b5915a05d03..de379f84f3da 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -800,7 +800,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), 0); genesis != nil { + genesis := core.GetBlock(db, core.GetCanonicalHash(db, 0), 0) + if genesis != nil { storedConfig, err := core.GetChainConfig(db, genesis.Hash()) switch err { case nil: @@ -834,6 +835,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 60a642130b7a..66ff2680931b 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)