/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2022 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 {
t.Error(err)
return false
if len(dirFiles(rxPath)) == 0 {
continue
}
- ctx.Toss(ctx.Self.Id, DefaultNiceExec-1, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceExec-1,
+ 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, DefaultNiceExec, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceExec,
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) == 0 {
return false
}
filepath.Join(spool, "mbox"),
),
}
- ctx.Toss(ctx.Self.Id, DefaultNiceExec, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceExec,
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) != 0 {
return false
}
}
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)
MaxFileSize,
1<<15,
MaxFileSize,
+ nil,
); err != nil {
t.Error(err)
return false
}
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, DefaultNiceFile, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFile,
+ 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, DefaultNiceFile, 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
}
MaxFileSize,
1<<15,
MaxFileSize,
+ nil,
); err != nil {
t.Error(err)
return false
rxPath := filepath.Join(spool, ctx.Self.Id.String(), string(TRx))
os.Rename(filepath.Join(spool, ctx.Self.Id.String(), string(TTx)), rxPath)
ctx.Neigh[*nodeOur.Id].Incoming = &incomingPath
- ctx.Toss(ctx.Self.Id, DefaultNiceFile, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFile,
+ false, false, false, false, false, false, false, false)
expected := make(map[string]struct{})
expected["samefile"] = struct{}{}
for i := 0; i < files-1; i++ {
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)
txPath := filepath.Join(spool, ctx.Self.Id.String(), string(TTx))
os.Rename(txPath, rxPath)
os.MkdirAll(txPath, os.FileMode(0700))
- ctx.Toss(ctx.Self.Id, DefaultNiceFreq, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFreq,
+ 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, DefaultNiceFreq, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFreq,
+ false, false, false, false, false, false, false, false)
if len(dirFiles(txPath)) != 0 || len(dirFiles(rxPath)) == 0 {
return false
}
panic(err)
}
}
- ctx.Toss(ctx.Self.Id, DefaultNiceFreq, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, DefaultNiceFreq,
+ false, false, false, false, false, false, false, false)
if len(dirFiles(txPath)) == 0 || len(dirFiles(rxPath)) != 0 {
return false
}
t.Error(err)
return false
}
- _, _, err = PktEncRead(ctx.Self, ctx.Neigh, fd, &buf)
+ _, _, _, err = PktEncRead(ctx.Self, ctx.Neigh, fd, &buf, true, nil)
if err != nil {
t.Error(err)
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 {
panic(err)
}
}
- ctx.Toss(ctx.Self.Id, 123, false, false, false, false, false, false)
+ ctx.Toss(ctx.Self.Id, TRx, 123,
+ false, false, false, false, false, false, false, false)
if len(dirFiles(rxPath)) != 0 {
return false
}