From: Sergey Matveev Date: Wed, 26 Jan 2022 10:30:45 +0000 (+0300) Subject: Merge branch 'develop' X-Git-Tag: v8.5.0^0 X-Git-Url: http://www.git.cypherpunks.ru/?p=nncp.git;a=commitdiff_plain;h=7f7ef49b53a6b6c54e4a94fcf59f47b04b908f02;hp=42e1e7c0aa2d75052c8e0b7a18bb7f0dfaa4c756 Merge branch 'develop' --- diff --git a/doc/download.texi b/doc/download.texi index dd72c06..7e61492 100644 --- a/doc/download.texi +++ b/doc/download.texi @@ -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} diff --git a/doc/news.ru.texi b/doc/news.ru.texi index 61db762..161708e 100644 --- a/doc/news.ru.texi +++ b/doc/news.ru.texi @@ -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 diff --git a/doc/news.texi b/doc/news.texi index fbb1d46..09b21bc 100644 --- a/doc/news.texi +++ b/doc/news.texi @@ -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 diff --git a/doc/sp.texi b/doc/sp.texi index 3944a75..e7f4895 100644 --- a/doc/sp.texi +++ b/doc/sp.texi @@ -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 diff --git a/src/cmd/nncp-bundle/main.go b/src/cmd/nncp-bundle/main.go index 42a9417..d5603a9 100644 --- a/src/cmd/nncp-bundle/main.go +++ b/src/cmd/nncp-bundle/main.go @@ -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") } diff --git a/src/cmd/nncp-call/main.go b/src/cmd/nncp-call/main.go index 8a5b867..82cec19 100644 --- a/src/cmd/nncp-call/main.go +++ b/src/cmd/nncp-call/main.go @@ -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") diff --git a/src/cmd/nncp-xfer/main.go b/src/cmd/nncp-xfer/main.go index c9be0de..41e8c61 100644 --- a/src/cmd/nncp-xfer/main.go +++ b/src/cmd/nncp-xfer/main.go @@ -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") } diff --git a/src/df.go b/src/df.go index 43d14a9..ead8fe3 100644 --- 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 +//go:build !netbsd && !openbsd +// +build !netbsd,!openbsd package nncp diff --git a/src/df_netbsd.go b/src/df_netbsd.go index 349c9c8..7037a71 100644 --- a/src/df_netbsd.go +++ b/src/df_netbsd.go @@ -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 - package nncp import ( diff --git a/src/df_openbsd.go b/src/df_openbsd.go new file mode 100644 index 0000000..b57c431 --- /dev/null +++ b/src/df_openbsd.go @@ -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 +} diff --git a/src/nncp.go b/src/nncp.go index b9457d3..b2303c0 100644 --- a/src/nncp.go +++ b/src/nncp.go @@ -40,7 +40,7 @@ along with this program. If not, see .` const Base32Encoded32Len = 52 var ( - Version string = "8.4.0" + Version string = "8.5.0" Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding) ) diff --git a/src/sp.go b/src/sp.go index 4db3587..e8e477c 100644 --- 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 {