]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/toss.go
Ignore many errors
[nncp.git] / src / toss.go
index 67a7311569b41fc7f8f827dba140dddffb127821..a7cb4570da5238586ec94647b076eb5d0f3e84dc 100644 (file)
@@ -1,6 +1,6 @@
 /*
 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2019 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2020 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -68,6 +68,12 @@ func (ctx *Ctx) Toss(
        nice uint8,
        dryRun, doSeen, noFile, noFreq, noExec, noTrns bool,
 ) bool {
+       dirLock, err := ctx.LockDir(nodeId, "toss")
+       if err != nil {
+               ctx.LogE("rx", SDS{}, err, "lock")
+               return false
+       }
+       defer ctx.UnlockDir(dirLock)
        isBad := false
        sendmail := ctx.Neigh[*ctx.SelfId].Exec["sendmail"]
        decompressor, err := zstd.NewReader(nil)
@@ -182,7 +188,7 @@ func (ctx *Ctx) Toss(
                        if !dryRun {
                                if doSeen {
                                        if fd, err := os.Create(job.Fd.Name() + SeenSuffix); err == nil {
-                                               fd.Close()
+                                               fd.Close() // #nosec G104
                                        }
                                }
                                if err = os.Remove(job.Fd.Name()); err != nil {
@@ -233,13 +239,13 @@ func (ctx *Ctx) Toss(
                                        goto Closing
                                }
                                if err = bufW.Flush(); err != nil {
-                                       tmp.Close()
+                                       tmp.Close() // #nosec G104
                                        ctx.LogE("rx", sds, err, "copy")
                                        isBad = true
                                        goto Closing
                                }
                                if err = tmp.Sync(); err != nil {
-                                       tmp.Close()
+                                       tmp.Close() // #nosec G104
                                        ctx.LogE("rx", sds, err, "copy")
                                        isBad = true
                                        goto Closing
@@ -274,7 +280,7 @@ func (ctx *Ctx) Toss(
                        if !dryRun {
                                if doSeen {
                                        if fd, err := os.Create(job.Fd.Name() + SeenSuffix); err == nil {
-                                               fd.Close()
+                                               fd.Close() // #nosec G104
                                        }
                                }
                                if err = os.Remove(job.Fd.Name()); err != nil {
@@ -341,7 +347,7 @@ func (ctx *Ctx) Toss(
                        if !dryRun {
                                if doSeen {
                                        if fd, err := os.Create(job.Fd.Name() + SeenSuffix); err == nil {
-                                               fd.Close()
+                                               fd.Close() // #nosec G104
                                        }
                                }
                                if err = os.Remove(job.Fd.Name()); err != nil {
@@ -385,7 +391,7 @@ func (ctx *Ctx) Toss(
                        if !dryRun {
                                if doSeen {
                                        if fd, err := os.Create(job.Fd.Name() + SeenSuffix); err == nil {
-                                               fd.Close()
+                                               fd.Close() // #nosec G104
                                        }
                                }
                                if err = os.Remove(job.Fd.Name()); err != nil {
@@ -398,7 +404,7 @@ func (ctx *Ctx) Toss(
                        isBad = true
                }
        Closing:
-               pipeR.Close()
+               pipeR.Close() // #nosec G104
        }
        return isBad
 }