add proposalMsg to CandidateInfo
(msg *blockProposalMsg)
| 132 | // add proposalMsg to CandidateInfo |
| 133 | // |
| 134 | func (pool *BlockPool) newBlockProposal(msg *blockProposalMsg) error { |
| 135 | pool.lock.Lock() |
| 136 | defer pool.lock.Unlock() |
| 137 | |
| 138 | blkNum := msg.GetBlockNum() |
| 139 | candidate := pool.getCandidateInfoLocked(blkNum) |
| 140 | |
| 141 | // check dup-proposal from same proposer |
| 142 | for _, p := range candidate.Proposals { |
| 143 | if p.Block.getProposer() == msg.Block.getProposer() { |
| 144 | if bytes.Compare(p.Block.Block.Header.SigData[0], msg.Block.Block.Header.SigData[0]) == 0 { |
| 145 | return nil |
| 146 | } |
| 147 | return errDupProposal |
| 148 | } |
| 149 | } |
| 150 | |
| 151 | // add msg to proposals |
| 152 | candidate.Proposals = append(candidate.Proposals, msg) |
| 153 | |
| 154 | // add endorse-sig |
| 155 | proposer := msg.Block.getProposer() |
| 156 | eSig := &CandidateEndorseSigInfo{ |
| 157 | EndorsedProposer: proposer, |
| 158 | Signature: msg.Block.Block.Header.SigData[0], |
| 159 | ForEmpty: false, |
| 160 | } |
| 161 | pool.addBlockEndorsementLocked(msg.GetBlockNum(), proposer, eSig, false) |
| 162 | return nil |
| 163 | } |
| 164 | |
| 165 | func (pool *BlockPool) getBlockProposals(blkNum uint32) []*blockProposalMsg { |
| 166 | pool.lock.RLock() |
no test coverage detected