File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -88,6 +88,7 @@ func (miner *Miner) update() {
88
88
defer events .Unsubscribe ()
89
89
90
90
shouldStart := false
91
+ canStart := true
91
92
for {
92
93
select {
93
94
case ev := <- events .Chan ():
@@ -98,21 +99,27 @@ func (miner *Miner) update() {
98
99
case downloader.StartEvent :
99
100
wasMining := miner .Mining ()
100
101
miner .worker .stop ()
102
+ canStart = false
101
103
if wasMining {
102
104
// Resume mining after sync was finished
103
105
shouldStart = true
104
106
log .Info ("Mining aborted due to sync" )
105
107
}
106
108
case downloader.DoneEvent , downloader.FailedEvent :
109
+ canStart = true
107
110
if shouldStart {
108
111
miner .SetEtherbase (miner .coinbase )
109
112
miner .worker .start ()
110
113
}
111
114
}
112
115
case addr := <- miner .startCh :
113
- miner .SetEtherbase (addr )
114
- miner .worker .start ()
116
+ if canStart {
117
+ miner .SetEtherbase (addr )
118
+ miner .worker .start ()
119
+ }
120
+ shouldStart = true
115
121
case <- miner .stopCh :
122
+ shouldStart = false
116
123
miner .worker .stop ()
117
124
case <- miner .exitCh :
118
125
miner .worker .close ()
Original file line number Diff line number Diff line change @@ -97,6 +97,19 @@ func TestMiner(t *testing.T) {
97
97
waitForMiningState (t , miner , true )
98
98
}
99
99
100
+ func TestStartWhileDownload (t * testing.T ) {
101
+ miner , mux := createMiner (t )
102
+ waitForMiningState (t , miner , false )
103
+ miner .Start (common .HexToAddress ("0x12345" ))
104
+ waitForMiningState (t , miner , true )
105
+ // Stop the downloader and wait for the update loop to run
106
+ mux .Post (downloader.StartEvent {})
107
+ waitForMiningState (t , miner , false )
108
+ // Starting the miner after the downloader should not work
109
+ miner .Start (common .HexToAddress ("0x12345" ))
110
+ waitForMiningState (t , miner , false )
111
+ }
112
+
100
113
func TestStartStopMiner (t * testing.T ) {
101
114
miner , _ := createMiner (t )
102
115
waitForMiningState (t , miner , false )
You can’t perform that action at this time.
0 commit comments