]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/tx.go
Fix tossing of self/rx when nncp-toss -cycle
[nncp.git] / src / tx.go
index 337bcfd879576d9bcc1cb653c9080db8c110da70..95801d50b542000759b1a6ee787a388fd3ddc575 100644 (file)
--- a/src/tx.go
+++ b/src/tx.go
@@ -60,7 +60,7 @@ func (ctx *Ctx) Tx(
        if areaId != nil {
                area = ctx.AreaId2Area[*areaId]
                if area.Prv == nil {
-                       return nil, errors.New("unknown area id")
+                       return nil, errors.New("area has no encryption keys")
                }
        }
        hops := make([]*Node, 0, 1+len(node.Via))
@@ -257,9 +257,15 @@ func (ctx *Ctx) Tx(
                                msgHash,
                        )
                }
-               if err = os.MkdirAll(seenDir, os.FileMode(0777)); err != nil {
-                       ctx.LogE("tx-mkdir", les, err, logMsg)
-                       return lastNode, err
+               if _, err = os.Stat(seenDir); err != nil {
+                       if !os.IsNotExist(err) {
+                               ctx.LogE("tx-mkdir", les, err, logMsg)
+                               return lastNode, err
+                       }
+                       if err = os.MkdirAll(seenDir, os.FileMode(0777)); err != nil {
+                               ctx.LogE("tx-mkdir", les, err, logMsg)
+                               return lastNode, err
+                       }
                }
                if fd, err := os.Create(seenPath); err == nil {
                        fd.Close()