This commit is contained in:
gary rong 2018-06-12 11:01:55 +00:00 committed by GitHub
commit 307d557928
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -71,6 +71,7 @@ type sentReq struct {
reqQueued bool // a request has been queued but not sent reqQueued bool // a request has been queued but not sent
reqSent bool // a request has been sent but not timed out reqSent bool // a request has been sent but not timed out
delivered bool // requested data has passed the validation and cached
reqSrtoCount int // number of requests that reached soft (but not hard) timeout reqSrtoCount int // number of requests that reached soft (but not hard) timeout
} }
@ -363,7 +364,15 @@ func (r *sentReq) deliver(peer distPeer, msg *Msg) error {
if !ok || s.delivered { if !ok || s.delivered {
return errResp(ErrUnexpectedResponse, "reqID = %v", msg.ReqID) return errResp(ErrUnexpectedResponse, "reqID = %v", msg.ReqID)
} }
valid := r.validate(peer, msg) == nil valid := false
if r.delivered {
valid = true
} else {
valid = r.validate(peer, msg) == nil
if valid {
r.delivered = true
}
}
r.sentTo[peer] = sentReqToPeer{true, s.valid} r.sentTo[peer] = sentReqToPeer{true, s.valid}
s.valid <- valid s.valid <- valid
if !valid { if !valid {