"testing"
"testing/iotest"
+ "github.com/anacrolix/log"
+
"github.com/anacrolix/torrent/internal/testutil"
qt "github.com/frankban/quicktest"
"github.com/stretchr/testify/assert"
cfg.MaxAllocPeerRequestDataPerConn = 4
cfg.DataDir = greetingTempDir
cfg.DisablePEX = true
- //cfg.Debug = true
+ cfg.Debug = true
cfg.AcceptPeerConnections = false
+ //cfg.DisableUTP = true
seeder, err := NewClient(cfg)
require.NoError(t, err)
defer seeder.Close()
cfg.DataDir = t.TempDir()
cfg.MaxAllocPeerRequestDataPerConn = 4
cfg.Debug = true
+ cfg.NominalDialTimeout = time.Second
//cfg.DisableUTP = true
leecherLeecher, _ := NewClient(cfg)
require.NoError(t, err)
waitForConns(seederTorrent)
go llg.AddClientPeer(leecher)
waitForConns(llg)
+ time.Sleep(time.Second)
llg.cl.lock()
- llg.initiateConn(PeerInfo{
- Addr: seeder.ListenAddrs()[0],
- }, true, false)
+ targetAddr := seeder.ListenAddrs()[0]
+ log.Printf("trying to initiate to %v", targetAddr)
+ initiateConn(outgoingConnOpts{
+ peerInfo: PeerInfo{
+ Addr: targetAddr,
+ },
+ t: llg,
+ requireRendezvous: true,
+ skipHolepunchRendezvous: false,
+ HeaderObfuscationPolicy: llg.cl.config.HeaderObfuscationPolicy,
+ }, true)
llg.cl.unlock()
wg.Wait()
+
+ llClientStats := leecherLeecher.Stats()
+ c.Check(llClientStats.NumPeersDialableOnlyAfterHolepunch, qt.Not(qt.Equals), 0)
+ c.Check(
+ llClientStats.NumPeersDialableOnlyAfterHolepunch,
+ qt.Equals,
+ llClientStats.NumPeersUndialableWithoutHolepunchDialedAfterHolepunchConnect,
+ )
}
func waitForConns(t *Torrent) {
t.cl.event.Wait()
}
}
+
+func TestDialTcpNotAccepting(t *testing.T) {
+ l, err := net.Listen("tcp", "localhost:0")
+ c := qt.New(t)
+ c.Check(err, qt.IsNil)
+ defer l.Close()
+ _, err = net.Dial("tcp", l.Addr().String())
+ c.Assert(err, qt.IsNotNil)
+}