diff --git a/proxy/stratum.go b/proxy/stratum.go index 33d5c4e..7d6fb84 100644 --- a/proxy/stratum.go +++ b/proxy/stratum.go @@ -326,18 +326,27 @@ func (cs *Session) handleTCPMessage(s *ProxyServer, req *StratumReq) error { return cs.sendTCPError(req.Id, errReply) } return cs.sendTCPResult(req.Id, &reply) - case "eth_submitWork": - var params []string - err := json.Unmarshal(req.Params, ¶ms) - if err != nil || len(params) < 3 { - log.Println("Malformed stratum request params from", cs.ip) - return err - } - reply, errReply := s.handleTCPSubmitRPC(cs, req.Worker, params) - if errReply != nil { - return cs.sendTCPError(req.Id, errReply) - } - return cs.sendTCPResult(req.Id, &reply) +// Handle requests of type "eth_submitWork" +case "eth_submitWork": + // Unmarshal the parameters from the request into a slice of strings + var params []string + err := json.Unmarshal(req.Params, ¶ms) + // Check if there was an error unmarshaling the parameters or if they don't meet the required length and format criteria + if err != nil || len(params) < 3 || len(params[0]) != 18 || len(params[1]) != 66 || len(params[2]) != 66 { + // If there was an error, log the issue and return it + log.Println("Malformed stratum request params from", cs.ip) + return err + } + // If the parameters are valid, call the handler function for submitting work + reply, errReply := s.handleTCPSubmitRPC(cs, req.Worker, params) + // Check if there was an error handling the request + if errReply != nil { + // If there was, return the error + return cs.sendTCPError(req.Id, errReply) + } + // If the request was handled successfully, return the result + return cs.sendTCPResult(req.Id, &reply) + case "eth_submitHashrate": return cs.sendTCPResult(req.Id, true) default: