]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/sp.go
Really close fd at upload completion
[nncp.git] / src / sp.go
index 5840bd15c794b7586a26098d6c4cdc750a9d0f7c..58b9bb2f202ef21261b3775b159714fe5f973d48 100644 (file)
--- a/src/sp.go
+++ b/src/sp.go
@@ -952,22 +952,25 @@ func (state *SPState) StartWorkers(
                                        state.progressBars[pktName] = struct{}{}
                                        Progress("Tx", lesp)
                                }
+                               if ourSize == uint64(fullSize) {
+                                       state.closeFd(pth)
+                                       state.Ctx.LogD("sp-file-finished", lesp, func(les LEs) string {
+                                               return logMsg(les) + ": finished"
+                                       })
+                                       if state.Ctx.ShowPrgrs {
+                                               delete(state.progressBars, pktName)
+                                       }
+                               }
                                state.Lock()
                                for i, q := range state.queueTheir {
                                        if *q.freq.Hash != *freq.Hash {
                                                continue
                                        }
                                        if ourSize == uint64(fullSize) {
-                                               state.Ctx.LogD("sp-file-finished", lesp, func(les LEs) string {
-                                                       return logMsg(les) + ": finished"
-                                               })
                                                state.queueTheir = append(
                                                        state.queueTheir[:i],
                                                        state.queueTheir[i+1:]...,
                                                )
-                                               if state.Ctx.ShowPrgrs {
-                                                       delete(state.progressBars, pktName)
-                                               }
                                        } else {
                                                q.freq.Offset = ourSize
                                        }
@@ -1324,9 +1327,9 @@ func (state *SPState) ProcessSP(payload []byte) ([][]byte, error) {
                        }
                        fullsize := int64(0)
                        state.RLock()
-                       infoTheir, ok := state.infosTheir[*file.Hash]
+                       infoTheir := state.infosTheir[*file.Hash]
                        state.RUnlock()
-                       if !ok {
+                       if infoTheir == nil {
                                state.Ctx.LogE("sp-file-open", lesp, err, func(les LEs) string {
                                        return logMsg(les) + ": unknown file"
                                })