]> Cypherpunks repositories - nncp.git/commitdiff
Add bad return codes
authorSergey Matveev <stargrave@stargrave.org>
Sun, 8 Jan 2017 10:00:35 +0000 (13:00 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 8 Jan 2017 10:00:35 +0000 (13:00 +0300)
src/cypherpunks.ru/nncp/cmd/nncp-call/main.go
src/cypherpunks.ru/nncp/cmd/nncp-check/main.go
src/cypherpunks.ru/nncp/cmd/nncp-toss/main.go
src/cypherpunks.ru/nncp/cmd/nncp-xfer/main.go
src/cypherpunks.ru/nncp/toss.go

index 813f1656e497a68edce84f5b53ba457cdc0b36f3..ad28b7605b6f8b4c45ee51b5cd8d8f289d247a36 100644 (file)
@@ -128,6 +128,8 @@ func main() {
                }, "")
        } else {
                ctx.LogE("call-start", nncp.SDS{"node": state.NodeId, "err": err}, "")
+               conn.Close()
+               os.Exit(1)
        }
        conn.Close()
 }
index 3af4877a89ac2a27677199b2d0902393240b2ddb..32625fdd5b63677372d81af6ef56a81b716b6fb0 100644 (file)
@@ -73,15 +73,14 @@ func main() {
                }
        }
 
-       checkIsBad := false
+       isBad := false
        for nodeId, node := range ctx.Neigh {
                if nodeOnly != nil && nodeId != *nodeOnly.Id {
                        continue
                }
-               checkIsBad = checkIsBad || ctx.Check(node.Id)
+               isBad = isBad || ctx.Check(node.Id)
        }
-
-       if checkIsBad {
+       if isBad {
                os.Exit(1)
        }
 }
index 79262bf6a2c814c9be842f298a9b163c5ceca9ac..1691a8f788027b159ca078d40f4decbf97dcaa41 100644 (file)
@@ -79,10 +79,14 @@ func main() {
                }
        }
 
+       isBad := false
        for nodeId, node := range ctx.Neigh {
                if nodeOnly != nil && nodeId != *nodeOnly.Id {
                        continue
                }
-               ctx.Toss(node.Id, nice, *dryRun)
+               isBad = ctx.Toss(node.Id, nice, *dryRun)
+       }
+       if isBad {
+               os.Exit(1)
        }
 }
index e775ec77fe8d641531238d20adf05093c42f1c8f..434613d495773988fb7cdc0273b5d10a2ca8b776 100644 (file)
@@ -95,7 +95,7 @@ func main() {
        }
 
        selfPath := filepath.Join(flag.Arg(0), ctx.Self.Id.String())
-       badExit := false
+       isBad := false
        var dir *os.File
        var fis []os.FileInfo
        sds := nncp.SDS{}
@@ -111,20 +111,20 @@ func main() {
                        goto Tx
                }
                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "stat")
-               badExit = true
+               isBad = true
                goto Tx
        }
        dir, err = os.Open(selfPath)
        if err != nil {
                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "open")
-               badExit = true
+               isBad = true
                goto Tx
        }
        fis, err = dir.Readdir(0)
        dir.Close()
        if err != nil {
                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "read")
-               badExit = true
+               isBad = true
                goto Tx
        }
        for _, fi := range fis {
@@ -148,14 +148,14 @@ func main() {
                dir, err = os.Open(filepath.Join(selfPath, fi.Name()))
                if err != nil {
                        ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "open")
-                       badExit = true
+                       isBad = true
                        continue
                }
                fisInt, err := dir.Readdir(0)
                dir.Close()
                if err != nil {
                        ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "read")
-                       badExit = true
+                       isBad = true
                        continue
                }
                for _, fiInt := range fisInt {
@@ -167,7 +167,7 @@ func main() {
                        fd, err := os.Open(filename)
                        if err != nil {
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "open")
-                               badExit = true
+                               isBad = true
                                continue
                        }
                        var pktEnc nncp.PktEnc
@@ -190,7 +190,7 @@ func main() {
                        copied, err := io.Copy(tmp.W, bufio.NewReader(fd))
                        if err != nil {
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "copy")
-                               badExit = true
+                               isBad = true
                                fd.Close()
                                tmp.Cancel()
                                continue
@@ -209,7 +209,7 @@ func main() {
                        if !*keep {
                                if err = os.Remove(filename); err != nil {
                                        ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "remove")
-                                       badExit = true
+                                       isBad = true
                                }
                        }
                }
@@ -217,7 +217,7 @@ func main() {
 
 Tx:
        if *rxOnly {
-               if badExit {
+               if isBad {
                        os.Exit(1)
                }
                return
@@ -246,13 +246,13 @@ Tx:
                                if err = os.Mkdir(nodePath, os.FileMode(0700)); err != nil {
                                        ctx.UnlockDir(dirLock)
                                        ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "mkdir")
-                                       badExit = true
+                                       isBad = true
                                        continue
                                }
                        } else {
                                ctx.UnlockDir(dirLock)
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "stat")
-                               badExit = true
+                               isBad = true
                                continue
                        }
                }
@@ -264,13 +264,13 @@ Tx:
                                if err = os.Mkdir(dstPath, os.FileMode(0700)); err != nil {
                                        ctx.UnlockDir(dirLock)
                                        ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "mkdir")
-                                       badExit = true
+                                       isBad = true
                                        continue
                                }
                        } else {
                                ctx.UnlockDir(dirLock)
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "stat")
-                               badExit = true
+                               isBad = true
                                continue
                        }
                }
@@ -287,7 +287,7 @@ Tx:
                        if err != nil {
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "mktemp")
                                job.Fd.Close()
-                               badExit = true
+                               isBad = true
                                break
                        }
                        sds["tmp"] = tmp.Name()
@@ -298,7 +298,7 @@ Tx:
                        if err != nil {
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "copy")
                                tmp.Close()
-                               badExit = true
+                               isBad = true
                                continue
                        }
                        err = bufW.Flush()
@@ -306,12 +306,12 @@ Tx:
                        tmp.Close()
                        if err != nil {
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "copy")
-                               badExit = true
+                               isBad = true
                                continue
                        }
                        if err = os.Rename(tmp.Name(), filepath.Join(dstPath, pktName)); err != nil {
                                ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "rename")
-                               badExit = true
+                               isBad = true
                                continue
                        }
                        delete(sds, "tmp")
@@ -321,13 +321,13 @@ Tx:
                        if !*keep {
                                if err = os.Remove(job.Fd.Name()); err != nil {
                                        ctx.LogE("nncp-xfer", nncp.SdsAdd(sds, nncp.SDS{"err": err}), "remove")
-                                       badExit = true
+                                       isBad = true
                                }
                        }
                }
                ctx.UnlockDir(dirLock)
        }
-       if badExit {
+       if isBad {
                os.Exit(1)
        }
 }
index bf2527a32b7ff5c89bfd6d8ab186b131b4b7d976..66e5812d1151f99f4ec81e560ee7bdfb74d348d5 100644 (file)
@@ -76,12 +76,13 @@ func (ctx *Ctx) UnlockDir(fd *os.File) {
        }
 }
 
-func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
+func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) bool {
        dirLock, err := ctx.LockDir(nodeId, TRx)
        if err != nil {
-               return
+               return false
        }
        defer ctx.UnlockDir(dirLock)
+       isBad := false
        for job := range ctx.Jobs(nodeId, TRx) {
                pktName := filepath.Base(job.Fd.Name())
                sds := SDS{"node": job.PktEnc.Sender, "pkt": pktName}
@@ -114,6 +115,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                var pktSize int64
                if _, err = xdr.Unmarshal(pipeR, &pkt); err != nil {
                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "unmarshal")
+                       isBad = true
                        goto Closing
                }
                pktSize = job.Size - PktEncOverhead - PktOverhead
@@ -142,6 +144,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                                cmd.Stdin = decompressor
                                if err = cmd.Run(); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "sendmail")
+                                       isBad = true
                                        goto Closing
                                }
                        }
@@ -149,6 +152,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        if !dryRun {
                                if err = os.Remove(job.Fd.Name()); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove")
+                                       isBad = true
                                }
                        }
                case PktTypeFile:
@@ -157,11 +161,13 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        incoming := ctx.Neigh[*job.PktEnc.Sender].Incoming
                        if incoming == nil {
                                ctx.LogE("rx", sds, "incoming is not allowed")
+                               isBad = true
                                goto Closing
                        }
                        dir := filepath.Join(*incoming, path.Dir(dst))
                        if err = os.MkdirAll(dir, os.FileMode(0700)); err != nil {
                                ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "mkdir")
+                               isBad = true
                                goto Closing
                        }
                        if !dryRun {
@@ -170,11 +176,13 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                                ctx.LogD("rx", sds, "created")
                                if err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "mktemp")
+                                       isBad = true
                                        goto Closing
                                }
                                bufW := bufio.NewWriter(tmp)
                                if _, err = io.Copy(bufW, pipeR); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "copy")
+                                       isBad = true
                                        goto Closing
                                }
                                bufW.Flush()
@@ -189,6 +197,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                                                        break
                                                }
                                                ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "stat")
+                                               isBad = true
                                                goto Closing
                                        }
                                        dstPath = dstPathOrig + strconv.Itoa(dstPathCtr)
@@ -196,6 +205,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                                }
                                if err = os.Rename(tmp.Name(), dstPath); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "rename")
+                                       isBad = true
                                }
                                delete(sds, "tmp")
                        }
@@ -203,6 +213,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        if !dryRun {
                                if err = os.Remove(job.Fd.Name()); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove")
+                                       isBad = true
                                }
                                sendmail := ctx.Neigh[*ctx.Self.Id].Sendmail
                                if ctx.NotifyFile != nil {
@@ -225,6 +236,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        dstRaw, err := ioutil.ReadAll(pipeR)
                        if err != nil {
                                ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "read")
+                               isBad = true
                                goto Closing
                        }
                        dst := string(dstRaw)
@@ -233,11 +245,13 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        freq := sender.Freq
                        if freq == nil {
                                ctx.LogE("rx", sds, "freqing is not allowed")
+                               isBad = true
                                goto Closing
                        }
                        if !dryRun {
                                if err = ctx.TxFile(sender, job.PktEnc.Nice, filepath.Join(*freq, src), dst); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "tx file")
+                                       isBad = true
                                        goto Closing
                                }
                        }
@@ -245,6 +259,7 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        if !dryRun {
                                if err = os.Remove(job.Fd.Name()); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove")
+                                       isBad = true
                                }
                                if ctx.NotifyFreq != nil {
                                        sendmail := ctx.Neigh[*ctx.Self.Id].Sendmail
@@ -268,12 +283,14 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        sds := SdsAdd(sds, SDS{"type": "trns", "dst": nodeId})
                        if !known {
                                ctx.LogE("rx", sds, "unknown node")
+                               isBad = true
                                goto Closing
                        }
                        ctx.LogD("rx", sds, "taken")
                        if !dryRun {
                                if err = ctx.TxTrns(node, job.PktEnc.Nice, pktSize, pipeR); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "tx trns")
+                                       isBad = true
                                        goto Closing
                                }
                        }
@@ -281,12 +298,15 @@ func (ctx *Ctx) Toss(nodeId *NodeId, nice uint8, dryRun bool) {
                        if !dryRun {
                                if err = os.Remove(job.Fd.Name()); err != nil {
                                        ctx.LogE("rx", SdsAdd(sds, SDS{"err": err}), "remove")
+                                       isBad = true
                                }
                        }
                default:
                        ctx.LogE("rx", sds, "unknown type")
+                       isBad = true
                }
        Closing:
                pipeR.Close()
        }
+       return isBad
 }