fix(proxy): gate submit algo forwarding
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
0ab02e9e4b
commit
75de9000f0
2 changed files with 53 additions and 2 deletions
|
|
@ -294,6 +294,11 @@ func (m *Miner) handleSubmit(request minerRequest) {
|
|||
return
|
||||
}
|
||||
|
||||
submitAlgo := ""
|
||||
if m.algoExtension && m.extAlgo {
|
||||
submitAlgo = params.Algo
|
||||
}
|
||||
|
||||
m.Touch()
|
||||
if m.events != nil {
|
||||
m.events.Dispatch(Event{
|
||||
|
|
@ -302,7 +307,7 @@ func (m *Miner) handleSubmit(request minerRequest) {
|
|||
JobID: params.JobID,
|
||||
Nonce: params.Nonce,
|
||||
Result: params.Result,
|
||||
Algo: params.Algo,
|
||||
Algo: submitAlgo,
|
||||
RequestID: request.ID,
|
||||
})
|
||||
return
|
||||
|
|
@ -314,7 +319,7 @@ func (m *Miner) handleSubmit(request minerRequest) {
|
|||
JobID: params.JobID,
|
||||
Nonce: params.Nonce,
|
||||
Result: params.Result,
|
||||
Algo: params.Algo,
|
||||
Algo: submitAlgo,
|
||||
RequestID: request.ID,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -240,6 +240,8 @@ func TestMiner_Submit_Good(t *testing.T) {
|
|||
|
||||
miner := NewMiner(serverConn, 3333, nil)
|
||||
miner.events = NewEventBus()
|
||||
miner.algoExtension = true
|
||||
miner.extAlgo = true
|
||||
miner.SetRPCID("session")
|
||||
miner.SetState(MinerStateReady)
|
||||
|
||||
|
|
@ -292,3 +294,47 @@ func TestMiner_Submit_Good(t *testing.T) {
|
|||
t.Fatalf("unexpected submit response: %#v", response)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMiner_Submit_AlgoExtension_Bad(t *testing.T) {
|
||||
serverConn, clientConn := net.Pipe()
|
||||
defer clientConn.Close()
|
||||
|
||||
miner := NewMiner(serverConn, 3333, nil)
|
||||
miner.events = NewEventBus()
|
||||
miner.SetRPCID("session")
|
||||
miner.SetState(MinerStateReady)
|
||||
|
||||
submitSeen := make(chan Event, 1)
|
||||
miner.events.Subscribe(EventSubmit, func(event Event) {
|
||||
submitSeen <- event
|
||||
miner.Success(event.RequestID, "OK")
|
||||
})
|
||||
|
||||
miner.Start()
|
||||
defer miner.Close()
|
||||
|
||||
encoder := json.NewEncoder(clientConn)
|
||||
if err := encoder.Encode(map[string]interface{}{
|
||||
"id": 7,
|
||||
"jsonrpc": "2.0",
|
||||
"method": "submit",
|
||||
"params": map[string]interface{}{
|
||||
"id": "session",
|
||||
"job_id": "job-1",
|
||||
"nonce": "deadbeef",
|
||||
"result": "abc",
|
||||
"algo": "cn/r",
|
||||
},
|
||||
}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
select {
|
||||
case event := <-submitSeen:
|
||||
if event.Algo != "" {
|
||||
t.Fatalf("expected algo to be suppressed when extension is disabled, got %+v", event)
|
||||
}
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("expected submit event to be dispatched")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue