/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
handle,
[]string{"arg0", "arg1"},
strings.NewReader("BODY\n"),
- 1<<15,
- false,
+ 1<<15, MaxFileSize,
false,
nil,
); err != nil {
continue
}
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceExec-1,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) == 0 {
return false
}
ctx.Neigh[*nodeOur.Id].Exec = make(map[string][]string)
ctx.Neigh[*nodeOur.Id].Exec[handle] = []string{"/bin/sh", "-c", "false"}
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceExec,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) == 0 {
return false
}
),
}
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceExec,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) != 0 {
return false
}
)
expected = append(expected, []byte("BODY\n")...)
}
- return bytes.Compare(mbox, expected) == 0
+ return bytes.Equal(mbox, expected)
}
if err := quick.Check(f, nil); err != nil {
t.Error(err)
}
files := make(map[string][]byte)
for i, fileSize := range fileSizes {
+ if fileSize == 0 {
+ // to prevent chunked send
+ fileSize++
+ }
data := make([]byte, fileSize)
if _, err := io.ReadFull(rand.Reader, data); err != nil {
panic(err)
rxPath := filepath.Join(spool, ctx.Self.Id.String(), string(TRx))
os.Rename(filepath.Join(spool, ctx.Self.Id.String(), string(TTx)), rxPath)
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFile,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) == 0 {
return false
}
ctx.Neigh[*nodeOur.Id].Incoming = &incomingPath
- ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFile,
- false, false, false, false, false, false, false)
+ if ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFile,
+ false, false, false, false, false, false, false, false) {
+ return false
+ }
if len(dirFiles(rxPath)) != 0 {
return false
}
if err != nil {
panic(err)
}
- if bytes.Compare(data, fileData) != 0 {
+ if !bytes.Equal(data, fileData) {
return false
}
}
os.Rename(filepath.Join(spool, ctx.Self.Id.String(), string(TTx)), rxPath)
ctx.Neigh[*nodeOur.Id].Incoming = &incomingPath
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFile,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
expected := make(map[string]struct{})
expected["samefile"] = struct{}{}
for i := 0; i < files-1; i++ {
}
delete(expected, filename)
}
- if len(expected) != 0 {
- return false
- }
- return true
+ return len(expected) == 0
}
if err := quick.Check(f, nil); err != nil {
t.Error(err)
ctx.Neigh[*nodeOur.Id] = nodeOur.Their()
files := make(map[string][]byte)
for i, fileSize := range fileSizes {
+ if fileSize == 0 {
+ // to prevent chunked send
+ fileSize++
+ }
fileData := make([]byte, fileSize)
if _, err := io.ReadFull(rand.Reader, fileData); err != nil {
panic(err)
os.Rename(txPath, rxPath)
os.MkdirAll(txPath, os.FileMode(0700))
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFreq,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(txPath)) != 0 || len(dirFiles(rxPath)) == 0 {
return false
}
ctx.Neigh[*nodeOur.Id].FreqPath = &spool
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFreq,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(txPath)) != 0 || len(dirFiles(rxPath)) == 0 {
return false
}
}
}
ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFreq,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(txPath)) == 0 || len(dirFiles(rxPath)) != 0 {
return false
}
if pkt.Nice != replyNice {
return false
}
- dst := string(pkt.Path[:int(pkt.PathLen)])
- if bytes.Compare(buf.Bytes(), files[dst]) != 0 {
+ if !bytes.Equal(buf.Bytes(), files[string(pkt.Path[:int(pkt.PathLen)])]) {
return false
}
}
}
copy(pktTrans.Path[:], nodeOur.Id[:])
var dst bytes.Buffer
- if _, err := PktEncWrite(
+ if _, _, err := PktEncWrite(
ctx.Self,
ctx.Neigh[*nodeOur.Id],
&pktTrans,
123,
- int64(len(data)),
- 0,
+ 0, MaxFileSize, 1,
bytes.NewReader(data),
&dst,
); err != nil {
}
}
ctx.Toss(ctx.Self.Id, TRx, 123,
- false, false, false, false, false, false, false)
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) != 0 {
return false
}
panic(err)
}
for k, data := range datum {
- if bytes.Compare(dataRead, data) == 0 {
+ if bytes.Equal(dataRead, data) {
delete(datum, k)
}
}
}
- if len(datum) > 0 {
- return false
- }
- return true
+ return len(datum) == 0
}
if err := quick.Check(f, nil); err != nil {
t.Error(err)