}
}
-func reducedDialTimeout(minDialTimeout, max time.Duration, halfOpenLimit int, pendingPeers int) (ret time.Duration) {
+func reducedDialTimeout(minDialTimeout, max time.Duration, halfOpenLimit, pendingPeers int) (ret time.Duration) {
ret = max / time.Duration((pendingPeers+halfOpenLimit)/halfOpenLimit)
if ret < minDialTimeout {
ret = minDialTimeout
// Creates a file containing its own name as data. Make a metainfo from that, adds it to the given
// client, and returns a magnet link.
-func makeMagnet(t *testing.T, cl *Client, dir string, name string) string {
+func makeMagnet(t *testing.T, cl *Client, dir, name string) string {
os.MkdirAll(dir, 0o770)
file, err := os.Create(filepath.Join(dir, name))
require.NoError(t, err)
// Test that the leecher can download a torrent in its entirety from the seeder. Note that the
// seeder config is done first.
-func testSeederLeecherPair(t *testing.T, seeder func(*ClientConfig), leecher func(*ClientConfig)) {
+func testSeederLeecherPair(t *testing.T, seeder, leecher func(*ClientConfig)) {
cfg := TestingConfig(t)
cfg.Seed = true
cfg.DataDir = filepath.Join(cfg.DataDir, "server")
}
// The size in bytes of a metadata extension piece.
-func metadataPieceSize(totalSize int, piece int) int {
+func metadataPieceSize(totalSize, piece int) int {
ret := totalSize - piece*(1<<14)
if ret > 1<<14 {
ret = 1 << 14
return nil
}
-func chunkIndexSpec(index pp.Integer, pieceLength, chunkSize pp.Integer) ChunkSpec {
+func chunkIndexSpec(index, pieceLength, chunkSize pp.Integer) ChunkSpec {
ret := ChunkSpec{pp.Integer(index) * chunkSize, chunkSize}
if ret.Begin+ret.Length > pieceLength {
ret.Length = pieceLength - ret.Begin
return h.Sum(nil)
}
-func newEncrypt(initer bool, s []byte, skey []byte) (c *rc4.Cipher) {
+func newEncrypt(initer bool, s, skey []byte) (c *rc4.Cipher) {
c, err := rc4.NewCipher(hash([]byte(func() string {
if initer {
return "keyA"
}
func InitiateHandshake(
- rw io.ReadWriter, skey []byte, initialPayload []byte, cryptoProvides CryptoMethod,
+ rw io.ReadWriter, skey, initialPayload []byte, cryptoProvides CryptoMethod,
) (
ret io.ReadWriter, method CryptoMethod, err error,
) {
}
}
-func readAndWrite(rw io.ReadWriter, r []byte, w []byte) error {
+func readAndWrite(rw io.ReadWriter, r, w []byte) error {
var wg sync.WaitGroup
wg.Add(1)
var wErr error
return res, errors.New("unexpected protocol string")
}
- copyExact := func(dst []byte, src []byte) {
+ copyExact := func(dst, src []byte) {
if dstLen, srcLen := uint64(len(dst)), uint64(len(src)); dstLen != srcLen {
panic("dst len " + strconv.FormatUint(dstLen, 10) + " != src len " + strconv.FormatUint(srcLen, 10))
}
return ret
}
-func (cn *PeerConn) peerHasAllPieces() (all bool, known bool) {
+func (cn *PeerConn) peerHasAllPieces() (all, known bool) {
if cn.peerSentHaveAll {
return true, true
}
import (
"fmt"
+ "net/url"
+ "sync"
+
"github.com/anacrolix/log"
"github.com/anacrolix/torrent/tracker/http"
"github.com/gorilla/websocket"
- "net/url"
- "sync"
"github.com/anacrolix/torrent/tracker"
"github.com/anacrolix/torrent/webtorrent"