X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fnncp%2Ftoss.go;h=a1fa8f38c8cee8b78e4fed104334a581e0e0947a;hb=8e400e0530b58e1ac84d9a4db3175d396a39abf0;hp=bdd7da40d70a26bc8b0dee824077d54e56db7cac;hpb=6d771479c630cc44a3873ded16ce24f75aadf0fe;p=nncp.git diff --git a/src/cypherpunks.ru/nncp/toss.go b/src/cypherpunks.ru/nncp/toss.go index bdd7da4..a1fa8f3 100644 --- a/src/cypherpunks.ru/nncp/toss.go +++ b/src/cypherpunks.ru/nncp/toss.go @@ -38,6 +38,10 @@ import ( "golang.org/x/crypto/blake2b" ) +const ( + SeenPostfix = ".seen" +) + func newNotification(fromTo *FromToYAML, subject string) io.Reader { return strings.NewReader(fmt.Sprintf( "From: %s\nTo: %s\nSubject: %s\n", @@ -47,7 +51,7 @@ func newNotification(fromTo *FromToYAML, subject string) io.Reader { )) } -func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) bool { +func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun, doSeen bool) bool { isBad := false for job := range ctx.Jobs(nodeId, TRx) { pktName := filepath.Base(job.Fd.Name()) @@ -123,6 +127,11 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) bool { } ctx.LogI("rx", sds, "") if !dryRun { + if doSeen { + if fd, err := os.Create(job.Fd.Name() + SeenPostfix); err == nil { + fd.Close() + } + } if err = os.Remove(job.Fd.Name()); err != nil { ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove") isBad = true @@ -189,6 +198,11 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) bool { } ctx.LogI("rx", sds, "") if !dryRun { + if doSeen { + if fd, err := os.Create(job.Fd.Name() + SeenPostfix); err == nil { + fd.Close() + } + } if err = os.Remove(job.Fd.Name()); err != nil { ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove") isBad = true @@ -258,6 +272,11 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) bool { } ctx.LogI("rx", sds, "") if !dryRun { + if doSeen { + if fd, err := os.Create(job.Fd.Name() + SeenPostfix); err == nil { + fd.Close() + } + } if err = os.Remove(job.Fd.Name()); err != nil { ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove") isBad = true @@ -297,6 +316,11 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) bool { } ctx.LogI("rx", sds, "") if !dryRun { + if doSeen { + if fd, err := os.Create(job.Fd.Name() + SeenPostfix); err == nil { + fd.Close() + } + } if err = os.Remove(job.Fd.Name()); err != nil { ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove") isBad = true