From: Sergey Matveev Date: Fri, 20 Dec 2019 08:07:21 +0000 (+0300) Subject: Prevent possible race and failing of fullsize determining X-Git-Tag: v5.3.0^2~14 X-Git-Url: http://www.git.cypherpunks.ru/?a=commitdiff_plain;h=ed0b98f8bdf76ca074318a01c694851d65c44674;p=nncp.git Prevent possible race and failing of fullsize determining --- diff --git a/src/sp.go b/src/sp.go index 2aebb07..20da356 100644 --- a/src/sp.go +++ b/src/sp.go @@ -907,19 +907,23 @@ func (state *SPState) ProcessSP(payload []byte) ([][]byte, error) { fd.Close() return nil, err } - ourSize := file.Offset + uint64(len(file.Payload)) + ourSize := int64(file.Offset + uint64(len(file.Payload))) + sdsp["size"] = ourSize + fullsize := int64(0) state.RLock() - sdsp["size"] = int64(ourSize) - sdsp["fullsize"] = int64(state.infosTheir[*file.Hash].Size) + infoTheir, ok := state.infosTheir[*file.Hash] + state.RUnlock() + if ok { + fullsize = int64(infoTheir.Size) + } + sdsp["fullsize"] = fullsize if state.Ctx.ShowPrgrs { Progress("Rx", sdsp) } - if state.infosTheir[*file.Hash].Size != ourSize { - state.RUnlock() + if fullsize != ourSize { fd.Close() continue } - state.RUnlock() spWorkersGroup.Wait() spWorkersGroup.Add(1) go func() {