X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fjobs.go;h=ae18b74cfdaf3fad39883d85a9b938825dc1f8d0;hb=b47dbfe6687569650fa544a4ecf3e4ea388390cb;hp=6f18f51452d1294839c784d6b1418c8d29756685;hpb=2758c63b64cf12e5f457daeb78e830959d26faae;p=nncp.git diff --git a/src/jobs.go b/src/jobs.go index 6f18f51..ae18b74 100644 --- a/src/jobs.go +++ b/src/jobs.go @@ -35,7 +35,7 @@ const ( TRx TRxTx = "rx" TTx TRxTx = "tx" - HdrSuffix = ".hdr" + HdrDir = "hdr" ) type Job struct { @@ -45,6 +45,10 @@ type Job struct { HshValue *[MTHSize]byte } +func JobPath2Hdr(jobPath string) string { + return filepath.Join(filepath.Dir(jobPath), HdrDir, filepath.Base(jobPath)) +} + func (ctx *Ctx) HdrRead(r io.Reader) (*PktEnc, []byte, error) { var pktEnc PktEnc _, err := xdr.Unmarshal(r, &pktEnc) @@ -80,7 +84,13 @@ func (ctx *Ctx) HdrWrite(pktEncRaw []byte, tgt string) error { os.Remove(tmpHdr.Name()) return err } - if err = os.Rename(tmpHdr.Name(), tgt+HdrSuffix); err != nil { + if err = ensureDir(filepath.Dir(tgt), HdrDir); err != nil { + ctx.LogE("hdr-write-ensure-mkdir", nil, err, func(les LEs) string { + return "Header writing: ensuring directory" + }) + return err + } + if err = os.Rename(tmpHdr.Name(), JobPath2Hdr(tgt)); err != nil { ctx.LogE("hdr-write-rename", nil, err, func(les LEs) string { return "Header writing: renaming" }) @@ -137,7 +147,7 @@ func (ctx *Ctx) jobsFind(nodeId *NodeId, xx TRxTx, nock, part bool) chan Job { if nock || part { fd, err = os.Open(pth) } else { - fd, err = os.Open(pth + HdrSuffix) + fd, err = os.Open(JobPath2Hdr(pth)) if err != nil && os.IsNotExist(err) { hdrExists = false fd, err = os.Open(pth) @@ -171,6 +181,8 @@ func (ctx *Ctx) jobsFind(nodeId *NodeId, xx TRxTx, nock, part bool) chan Job { case MagicNNCPEv4.B: err = MagicNNCPEv4.TooOld() case MagicNNCPEv5.B: + err = MagicNNCPEv5.TooOld() + case MagicNNCPEv6.B: default: err = BadMagic }