]> Cypherpunks.ru repositories - nncp.git/commitdiff
Merge branch 'develop' v8.5.0
authorSergey Matveev <stargrave@stargrave.org>
Wed, 26 Jan 2022 10:30:45 +0000 (13:30 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 26 Jan 2022 10:30:45 +0000 (13:30 +0300)
12 files changed:
doc/download.texi
doc/news.ru.texi
doc/news.texi
doc/sp.texi
src/cmd/nncp-bundle/main.go
src/cmd/nncp-call/main.go
src/cmd/nncp-xfer/main.go
src/df.go
src/df_netbsd.go
src/df_openbsd.go [new file with mode: 0644]
src/nncp.go
src/sp.go

index dd72c061a27b3b472c90d4987c2529804d2abfc0..7e61492d91511054903b3a8466b6365203533c30 100644 (file)
@@ -45,6 +45,13 @@ And additional ones for Yggdrasil support:
 @multitable {XXXXX} {XXXX-XX-XX} {XXXX KiB} {meta4 link sig} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
 @headitem Version @tab Date @tab Size @tab Tarball @tab SHA256 checksum
 
+@item @ref{Release 8_4_0, 8.4.0} @tab 2022-01-25 @tab 1683 KiB
+@tab
+    @url{download/nncp-8.4.0.tar.xz.meta4, meta4}
+    @url{download/nncp-8.4.0.tar.xz, link}
+    @url{download/nncp-8.4.0.tar.xz.sig, sig}
+@tab @code{CCC410CF 677359CA B14DA645 7985C1B9 7A69FEC9 41402DA3 59E414E6 08E8121B}
+
 @item @ref{Release 8_3_0, 8.3.0} @tab 2022-01-23 @tab 1682 KiB
 @tab
     @url{download/nncp-8.3.0.tar.xz.meta4, meta4}
index 61db7628a9b46e264c1dd3e3236788e4cd7835c9..161708e66a7d5cc1d950edcfb0014656dd2b24f5 100644 (file)
@@ -1,6 +1,27 @@
 @node Новости
 @section Новости
 
+@node Релиз 8.5.0
+@subsection Релиз 8.5.0
+@itemize
+
+@item
+Исправлена работоспособность @command{nncp-bundle}.
+
+@item
+По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
+по умолчанию.
+
+@item
+Возможность переопределять внутренний timeout по умолчанию для протокола
+синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
+полезно для каналов с очень большими задержками.
+
+@item
+NNCP собирается на OpenBSD.
+
+@end itemize
+
 @node Релиз 8.4.0
 @subsection Релиз 8.4.0
 @itemize
index fbb1d463bace4ba89fd22b1867f3949395b4cd4e..09b21bc676bdb9ef4a3542e101533596916cd10c 100644 (file)
@@ -3,6 +3,27 @@
 
 See also this page @ref{Новости, on russian}.
 
+@node Release 8_5_0
+@section Release 8.5.0
+@itemize
+
+@item
+Fixed @command{nncp-bundle} workability.
+
+@item
+Mistakenly @option{-mcd-wait} option was enabled by default in
+@command{nncp-call}.
+
+@item
+Ability to override internal default timeout for online protocol through
+@env{$NNCPDEADLINE} environment variable. Can be useful for very high
+delay links.
+
+@item
+NNCP builds on OpenBSD.
+
+@end itemize
+
 @node Release 8_4_0
 @section Release 8.4.0
 @itemize
index 3944a752f630d5c53d1dd6bc9ef08f22e1994fb2..e7f4895c67f43c539915046887c1252d2de573b2 100644 (file)
@@ -12,6 +12,11 @@ high-delay links, so acknowledging of each received packet, like
 @url{https://en.wikipedia.org/wiki/XMODEM, XMODEM} does, causes
 unacceptable performance degradation.
 
+Internally it uses various timeouts and deadlines. One of them used
+extensively is 10 seconds default deadline timeout. You can override it
+with @env{$NNCPDEADLINE} environment variable, that could be useful with
+very high delay links.
+
 SP works on top of
 @url{http://noiseprotocol.org/noise.html#interactive-patterns,
 @code{Noise_IK_25519_ChaChaPoly_BLAKE2b}} protocol. Each Noise packet
index 42a9417be18d53f94c2e24d8605ef264763d3ede..d5603a99b1ab8cc2082cc219f46a3fb065321c14 100644 (file)
@@ -316,6 +316,8 @@ func main() {
                        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")
                        }
index 8a5b8670de7a379d5e6f9afdff1e6f2f6f64fe1b..82cec19987583b888932f6a25bed2259906a5b1c 100644 (file)
@@ -49,7 +49,7 @@ func main() {
                listOnly    = flag.Bool("list", false, "Only list remote packets")
                noCK        = flag.Bool("nock", false, "Do no checksum checking")
                onlyPktsRaw = flag.String("pkts", "", "Recieve only that packets, comma separated")
-               mcdWait     = flag.Uint("mcd-wait", 60, "Wait for MCD for specified number of seconds")
+               mcdWait     = flag.Uint("mcd-wait", 0, "Wait for MCD for specified number of seconds")
                rxRate      = flag.Int("rxrate", 0, "Maximal receive rate, pkts/sec")
                txRate      = flag.Int("txrate", 0, "Maximal transmit rate, pkts/sec")
                spoolPath   = flag.String("spool", "", "Override path to spool")
index c9be0de0cb74527f9876d982442813e96f03327a..41e8c61c8e157f087d9fa5096990d92231bf316d 100644 (file)
@@ -218,7 +218,7 @@ func main() {
                                continue
                        }
                        pktEnc, pktEncRaw, err := ctx.HdrRead(fd)
-                       if err != nil {
+                       if err == nil {
                                switch pktEnc.Magic {
                                case nncp.MagicNNCPEv1.B:
                                        err = nncp.MagicNNCPEv1.TooOld()
@@ -229,6 +229,8 @@ func main() {
                                case nncp.MagicNNCPEv4.B:
                                        err = nncp.MagicNNCPEv4.TooOld()
                                case nncp.MagicNNCPEv5.B:
+                                       err = nncp.MagicNNCPEv5.TooOld()
+                               case nncp.MagicNNCPEv6.B:
                                default:
                                        err = errors.New("is not an encrypted packet")
                                }
index 43d14a96b88d078f5d748c137878e6f866591525..ead8fe37982a58f7ab3356e8b8e0abdb2543bbdc 100644 (file)
--- a/src/df.go
+++ b/src/df.go
@@ -1,8 +1,5 @@
-//go:build !netbsd
-// +build !netbsd
-
-// NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-// Copyright (C) 2016-2022 Sergey Matveev <stargrave@stargrave.org>
+//go:build !netbsd && !openbsd
+// +build !netbsd,!openbsd
 
 package nncp
 
index 349c9c8cda6019b38df80f60df8fa4694569ec5b..7037a713b0b6cde115aba197ad8fe9886280518a 100644 (file)
@@ -1,9 +1,6 @@
 //go:build netbsd
 // +build netbsd
 
-// NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-// Copyright (C) 2016-2022 Sergey Matveev <stargrave@stargrave.org>
-
 package nncp
 
 import (
diff --git a/src/df_openbsd.go b/src/df_openbsd.go
new file mode 100644 (file)
index 0000000..b57c431
--- /dev/null
@@ -0,0 +1,18 @@
+//go:build openbsd
+// +build openbsd
+
+package nncp
+
+import (
+       "log"
+
+       "golang.org/x/sys/unix"
+)
+
+func (ctx *Ctx) IsEnoughSpace(want int64) bool {
+       var s unix.Statfs_t
+       if err := unix.Statfs(ctx.Spool, &s); err != nil {
+               log.Fatalln("Can not stat spool:", err)
+       }
+       return int64(s.F_bavail)*int64(s.F_bsize) > want
+}
index b9457d378b686e13dfbf7a47fbc95fcf0da711e5..b2303c0d7aa55424a481421ab6e1367ac6e55496 100644 (file)
@@ -40,7 +40,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.`
 const Base32Encoded32Len = 52
 
 var (
-       Version string = "8.4.0"
+       Version string = "8.5.0"
 
        Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding)
 )
index 4db358742a17b1f584aa102ac853a1c6386c6d13..e8e477cff9da8b5aa83b5ef75697142bd5c28cb8 100644 (file)
--- a/src/sp.go
+++ b/src/sp.go
@@ -27,6 +27,7 @@ import (
        "os"
        "path/filepath"
        "sort"
+       "strconv"
        "sync"
        "time"
 
@@ -39,6 +40,7 @@ const (
        MaxSPSize      = 1<<16 - 256
        PartSuffix     = ".part"
        SPHeadOverhead = 4
+       CfgDeadline    = "NNCPDEADLINE"
 )
 
 type MTHAndOffset struct {
@@ -132,6 +134,14 @@ type ConnDeadlined interface {
 }
 
 func init() {
+       if v := os.Getenv(CfgDeadline); v != "" {
+               i, err := strconv.Atoi(v)
+               if err != nil {
+                       log.Fatalln("Can not convert", CfgDeadline, "to integer:", err)
+               }
+               DefaultDeadline = time.Duration(i) * time.Second
+       }
+
        var buf bytes.Buffer
        spHead := SPHead{Type: SPTypeHalt}
        if _, err := xdr.Marshal(&buf, spHead); err != nil {