/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2022 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
xdr "github.com/davecgh/go-xdr/xdr2"
"github.com/dustin/go-humanize"
- "go.cypherpunks.ru/nncp/v7"
+ "go.cypherpunks.ru/nncp/v8"
)
const (
for i := 0; i < flag.NArg(); i++ {
node, err := ctx.FindNode(flag.Arg(i))
if err != nil {
- log.Fatalln("Invalid specified:", err)
+ log.Fatalln("Invalid node specified:", err)
}
nodeIds[*node.Id] = struct{}{}
}
if err = os.Remove(job.Path); err != nil {
log.Fatalln("Error during deletion:", err)
} else if ctx.HdrUsage {
- os.Remove(job.Path + nncp.HdrSuffix)
+ os.Remove(nncp.JobPath2Hdr(job.Path))
}
}
ctx.LogI(
if err == io.EOF {
break
}
- bufStdin.Discard(bufStdin.Buffered() - (len(nncp.NNCPBundlePrefix) - 1)) // #nosec G104
+ bufStdin.Discard(bufStdin.Buffered() - (len(nncp.NNCPBundlePrefix) - 1))
continue
}
if _, err = bufStdin.Discard(prefixIdx); err != nil {
case nncp.MagicNNCPEv4.B:
err = nncp.MagicNNCPEv4.TooOld()
case nncp.MagicNNCPEv5.B:
+ err = nncp.MagicNNCPEv5.TooOld()
+ case nncp.MagicNNCPEv6.B:
default:
err = errors.New("Bad packet magic number")
}
if !*dryRun {
os.Remove(dstPath)
if ctx.HdrUsage {
- os.Remove(dstPath + nncp.HdrSuffix)
+ os.Remove(nncp.JobPath2Hdr(dstPath))
}
}
} else {
})
continue
}
- if _, err = os.Stat(dstPath + nncp.SeenSuffix); err == nil || !os.IsNotExist(err) {
+ if _, err = os.Stat(filepath.Join(
+ dstDirPath, nncp.SeenDir, pktName,
+ )); err == nil || !os.IsNotExist(err) {
ctx.LogD("bundle-rx-seen", les, func(les nncp.LEs) string {
return logMsg(les) + ": packet already seen"
})
if err = bufTmp.Flush(); err != nil {
log.Fatalln("Error during flushing:", err)
}
- if err = tmp.Sync(); err != nil {
- log.Fatalln("Error during syncing:", err)
+ if !nncp.NoSync {
+ if err = tmp.Sync(); err != nil {
+ log.Fatalln("Error during syncing:", err)
+ }
}
if err = tmp.Close(); err != nil {
log.Fatalln("Error during closing:", err)