]> Sergey Matveev's repositories - btrtrc.git/blobdiff - torrent.go
Rename tracker/http package
[btrtrc.git] / torrent.go
index f18fc25231ac476c2c5e40124b8782e9c060c812..1b2fc978f45c0bc50168fdb3a96775504cb98b14 100644 (file)
@@ -30,8 +30,6 @@ import (
        "github.com/anacrolix/missinggo/v2/pubsub"
        "github.com/anacrolix/multiless"
        "github.com/anacrolix/sync"
-       request_strategy "github.com/anacrolix/torrent/request-strategy"
-       typedRoaring "github.com/anacrolix/torrent/typed-roaring"
        "github.com/davecgh/go-spew/spew"
        "github.com/pion/datachannel"
 
@@ -39,9 +37,11 @@ import (
        "github.com/anacrolix/torrent/common"
        "github.com/anacrolix/torrent/metainfo"
        pp "github.com/anacrolix/torrent/peer_protocol"
+       request_strategy "github.com/anacrolix/torrent/request-strategy"
        "github.com/anacrolix/torrent/segments"
        "github.com/anacrolix/torrent/storage"
        "github.com/anacrolix/torrent/tracker"
+       typedRoaring "github.com/anacrolix/torrent/typed-roaring"
        "github.com/anacrolix/torrent/webseed"
        "github.com/anacrolix/torrent/webtorrent"
 )
@@ -535,7 +535,7 @@ func (t *Torrent) setMetadataSize(size int) (err error) {
                return
        }
        if uint32(size) > maxMetadataSize {
-               return errors.New("bad size")
+               return log.WithLevel(log.Warning, errors.New("bad size"))
        }
        if len(t.metadataBytes) == size {
                return
@@ -1575,18 +1575,23 @@ func (t *Torrent) onWebRtcConn(
                DataChannelContext: dcc,
        }
        peerRemoteAddr := netConn.RemoteAddr()
+       //t.logger.Levelf(log.Critical, "onWebRtcConn remote addr: %v", peerRemoteAddr)
        if t.cl.badPeerAddr(peerRemoteAddr) {
                return
        }
+       localAddrIpPort := missinggo.IpPortFromNetAddr(netConn.LocalAddr())
        pc, err := t.cl.initiateProtocolHandshakes(
                context.Background(),
                netConn,
                t,
-               dcc.LocalOffered,
                false,
-               netConn.RemoteAddr(),
-               webrtcNetwork,
-               fmt.Sprintf("webrtc offer_id %x: %v", dcc.OfferId, regularNetConnPeerConnConnString(netConn)),
+               newConnectionOpts{
+                       outgoing:        dcc.LocalOffered,
+                       remoteAddr:      peerRemoteAddr,
+                       localPublicAddr: localAddrIpPort,
+                       network:         webrtcNetwork,
+                       connString:      fmt.Sprintf("webrtc offer_id %x: %v", dcc.OfferId, regularNetConnPeerConnConnString(netConn)),
+               },
        )
        if err != nil {
                t.logger.WithDefaultLevel(log.Error).Printf("error in handshaking webrtc connection: %v", err)
@@ -1609,7 +1614,7 @@ func (t *Torrent) onWebRtcConn(
 func (t *Torrent) logRunHandshookConn(pc *PeerConn, logAll bool, level log.Level) {
        err := t.cl.runHandshookConn(pc, t)
        if err != nil || logAll {
-               t.logger.WithDefaultLevel(level).Printf("error running handshook conn: %v", err)
+               t.logger.WithDefaultLevel(level).Levelf(log.ErrorLevel(err), "error running handshook conn: %v", err)
        }
 }
 
@@ -1714,7 +1719,7 @@ func (t *Torrent) announceRequest(event tracker.AnnounceEvent) tracker.AnnounceR
                Event: event,
                NumWant: func() int32 {
                        if t.wantPeers() && len(t.cl.dialers) > 0 {
-                               return -1
+                               return 200 // Win has UDP packet limit. See: https://github.com/anacrolix/torrent/issues/764
                        } else {
                                return 0
                        }