kaspad/infrastructure/network/rpcclient/rpc_submit_block.go
Svarog 4988817da1
Reject SubmitBlock if the node is in IBD (#1409)
* Reject SubmitBlock if the node is in IBD

* Add comments

* Don't use iota for RejectReason constants, since in .proto those are hard-coded
2021-01-13 15:04:55 +02:00

25 lines
946 B
Go

package rpcclient
import (
"github.com/kaspanet/kaspad/app/appmessage"
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
)
// SubmitBlock sends an RPC request respective to the function's name and returns the RPC server's response
func (c *RPCClient) SubmitBlock(block *externalapi.DomainBlock) (appmessage.RejectReason, error) {
err := c.rpcRouter.outgoingRoute().Enqueue(
appmessage.NewSubmitBlockRequestMessage(appmessage.DomainBlockToMsgBlock(block)))
if err != nil {
return appmessage.RejectReasonNone, err
}
response, err := c.route(appmessage.CmdSubmitBlockResponseMessage).DequeueWithTimeout(c.timeout)
if err != nil {
return appmessage.RejectReasonNone, err
}
submitBlockResponse := response.(*appmessage.SubmitBlockResponseMessage)
if submitBlockResponse.Error != nil {
return submitBlockResponse.RejectReason, c.convertRPCError(submitBlockResponse.Error)
}
return appmessage.RejectReasonNone, nil
}