From c2b17fd0fc439e420710f53602604e8823c2fb1d Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 4 Sep 2022 16:48:25 +0300 Subject: [PATCH] Use explicitly larger bufio's buffer Default is 4KiB, but internally NNCP mostly uses 128KiB. --- src/cmd/nncp-ack/main.go | 7 ++++++- src/cmd/nncp-bundle/main.go | 12 ++++-------- src/cmd/nncp-exec/main.go | 2 +- src/cmd/nncp-reass/main.go | 4 ++-- src/cmd/nncp-xfer/main.go | 6 ++++-- src/toss.go | 2 +- src/tx.go | 8 +++++--- 7 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/cmd/nncp-ack/main.go b/src/cmd/nncp-ack/main.go index d7e8f01..098218a 100644 --- a/src/cmd/nncp-ack/main.go +++ b/src/cmd/nncp-ack/main.go @@ -206,7 +206,12 @@ func main() { continue } pipeR, pipeW := io.Pipe() - go nncp.PktEncRead(ctx.Self, ctx.Neigh, bufio.NewReader(fd), pipeW, true, nil) + go nncp.PktEncRead( + ctx.Self, + ctx.Neigh, + bufio.NewReaderSize(fd, nncp.MTHBlockSize), + pipeW, true, nil, + ) var pkt nncp.Pkt _, err = xdr.Unmarshal(pipeR, &pkt) fd.Close() diff --git a/src/cmd/nncp-bundle/main.go b/src/cmd/nncp-bundle/main.go index 071ecea..28423b4 100644 --- a/src/cmd/nncp-bundle/main.go +++ b/src/cmd/nncp-bundle/main.go @@ -37,10 +37,6 @@ import ( "go.cypherpunks.ru/nncp/v8" ) -const ( - CopyBufSize = 1 << 17 -) - func usage() { fmt.Fprintf(os.Stderr, nncp.UsageHeader()) fmt.Fprintf(os.Stderr, "nncp-bundle -- Create/digest stream of NNCP encrypted packets\n\n") @@ -165,7 +161,7 @@ func main() { log.Fatalln("Error writing tar header:", err) } if _, err = nncp.CopyProgressed( - tarWr, bufio.NewReader(fd), "Tx", + tarWr, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "Tx", append(les, nncp.LEs{ {K: "Pkt", V: nncp.Base32Codec.EncodeToString(job.HshValue[:])}, {K: "FullSize", V: job.Size}, @@ -208,11 +204,11 @@ func main() { log.Fatalln("Error during tar closing:", err) } } else { - bufStdin := bufio.NewReaderSize(os.Stdin, CopyBufSize*2) + bufStdin := bufio.NewReaderSize(os.Stdin, nncp.MTHBlockSize*2) pktEncBuf := make([]byte, nncp.PktEncOverhead) var pktEnc *nncp.PktEnc for { - peeked, err := bufStdin.Peek(CopyBufSize) + peeked, err := bufStdin.Peek(nncp.MTHBlockSize) if err != nil && err != io.EOF { log.Fatalln("Error during reading:", err) } @@ -473,7 +469,7 @@ func main() { if err != nil { log.Fatalln("Error during temporary file creation:", err) } - bufTmp := bufio.NewWriterSize(tmp, CopyBufSize) + bufTmp := bufio.NewWriterSize(tmp, nncp.MTHBlockSize) if _, err = bufTmp.Write(pktEncBuf); err != nil { log.Fatalln("Error during writing:", err) } diff --git a/src/cmd/nncp-exec/main.go b/src/cmd/nncp-exec/main.go index 5883c1e..aa2ab74 100644 --- a/src/cmd/nncp-exec/main.go +++ b/src/cmd/nncp-exec/main.go @@ -125,7 +125,7 @@ func main() { replyNice, flag.Args()[1], flag.Args()[2:], - bufio.NewReader(os.Stdin), + bufio.NewReaderSize(os.Stdin, nncp.MTHBlockSize), int64(*minSize)*1024, maxSize, *noCompress, diff --git a/src/cmd/nncp-reass/main.go b/src/cmd/nncp-reass/main.go index d095f95..77d1c7e 100644 --- a/src/cmd/nncp-reass/main.go +++ b/src/cmd/nncp-reass/main.go @@ -157,7 +157,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo } hsh = nncp.MTHNew(fi.Size(), 0) if _, err = nncp.CopyProgressed( - hsh, bufio.NewReader(fd), "check", + hsh, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "check", nncp.LEs{{K: "Pkt", V: chunkPath}, {K: "FullSize", V: fi.Size()}}, ctx.ShowPrgrs, ); err != nil { @@ -213,7 +213,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo log.Fatalln("Can not stat file:", err) } if _, err = nncp.CopyProgressed( - dstW, bufio.NewReader(fd), "reass", + dstW, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "reass", nncp.LEs{{K: "Pkt", V: chunkPath}, {K: "FullSize", V: fi.Size()}}, ctx.ShowPrgrs, ); err != nil { diff --git a/src/cmd/nncp-xfer/main.go b/src/cmd/nncp-xfer/main.go index 9c29b02..dc522a8 100644 --- a/src/cmd/nncp-xfer/main.go +++ b/src/cmd/nncp-xfer/main.go @@ -293,7 +293,9 @@ func main() { } r, w := io.Pipe() go func() { - _, err := io.CopyN(w, bufio.NewReader(fd), fiInt.Size()) + _, err := io.CopyN( + w, bufio.NewReaderSize(fd, nncp.MTHBlockSize), fiInt.Size(), + ) if err == nil { err = w.Close() } @@ -477,7 +479,7 @@ Tx: } bufW := bufio.NewWriter(tmp) copied, err := nncp.CopyProgressed( - bufW, bufio.NewReader(fd), "Tx", + bufW, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "Tx", append(les, nncp.LE{K: "FullSize", V: job.Size}), ctx.ShowPrgrs, ) diff --git a/src/toss.go b/src/toss.go index 79cc50f..d6c74c4 100644 --- a/src/toss.go +++ b/src/toss.go @@ -1063,7 +1063,7 @@ func (ctx *Ctx) Toss( sharedKey, _, _, err = PktEncRead( ctx.Self, ctx.Neigh, - bufio.NewReader(fd), + bufio.NewReaderSize(fd, MTHBlockSize), pipeWB, sharedKey == nil, sharedKey, diff --git a/src/tx.go b/src/tx.go index e38084e..f7f099b 100644 --- a/src/tx.go +++ b/src/tx.go @@ -388,7 +388,9 @@ func prepareTxFile(srcPath string) ( fd.Close() return w.CloseWithError(err) } - if _, err = io.Copy(tarWr, bufio.NewReader(fd)); err != nil { + if _, err = io.Copy( + tarWr, bufio.NewReaderSize(fd, MTHBlockSize), + ); err != nil { fd.Close() return w.CloseWithError(err) } @@ -441,7 +443,7 @@ func (ctx *Ctx) TxFile( _, finalSize, pktName, err := ctx.Tx( node, pkt, nice, srcSize, minSize, maxSize, - bufio.NewReader(reader), dstPath, areaId, + bufio.NewReaderSize(reader, MTHBlockSize), dstPath, areaId, ) les := LEs{ {"Type", "file"}, @@ -469,7 +471,7 @@ func (ctx *Ctx) TxFile( return err } - br := bufio.NewReader(reader) + br := bufio.NewReaderSize(reader, MTHBlockSize) var sizeFull int64 var chunkNum int checksums := [][MTHSize]byte{} -- 2.44.0