]> Sergey Matveev's repositories - btrtrc.git/blobdiff - client.go
Test fixes for Windows
[btrtrc.git] / client.go
index 70b98482820e1bd488c161383c176c02dd3f14d4..f1a7a3c73f117100774b9d2c0239becff1689991 100644 (file)
--- a/client.go
+++ b/client.go
@@ -301,6 +301,7 @@ func NewClient(cfg *ClientConfig) (cl *Client, err error) {
                },
                Proxy:                      cl.config.HTTPProxy,
                WebsocketTrackerHttpHeader: cl.config.WebsocketTrackerHttpHeader,
+               ICEServers:                 cl.config.ICEServers,
                DialContext:                cl.config.TrackerDialContext,
                OnConn: func(dc datachannel.ReadWriteCloser, dcc webtorrent.DataChannelContext) {
                        cl.lock()
@@ -424,9 +425,10 @@ func (cl *Client) eachDhtServer(f func(DhtServer)) {
 }
 
 // Stops the client. All connections to peers are closed and all activity will come to a halt.
-func (cl *Client) Close() (errs []error) {
+func (cl *Client) Close() error {
        var closeGroup sync.WaitGroup // For concurrent cleanup to complete before returning
        cl.lock()
+       var errs []error
        for _, t := range cl.torrents {
                err := t.close(&closeGroup)
                if err != nil {
@@ -440,7 +442,7 @@ func (cl *Client) Close() (errs []error) {
        cl.unlock()
        cl.event.Broadcast()
        closeGroup.Wait() // defer is LIFO. We want to Wait() after cl.unlock()
-       return
+       return errors.Join(errs...)
 }
 
 func (cl *Client) ipBlockRange(ip net.IP) (r iplist.Range, blocked bool) {
@@ -808,6 +810,12 @@ func (cl *Client) dialAndCompleteHandshake(opts outgoingConnOpts) (c *PeerConn,
                torrent.Add("initiated conn with preferred header obfuscation", 1)
                return
        }
+       c.logger.Levelf(
+               log.Debug,
+               "error doing protocol handshake with header obfuscation %v",
+               obfuscatedHeaderFirst,
+       )
+       firstDialResult.Conn.Close()
        // We should have just tried with the preferred header obfuscation. If it was required, there's nothing else to try.
        if headerObfuscationPolicy.RequirePreferred {
                return
@@ -832,6 +840,12 @@ func (cl *Client) dialAndCompleteHandshake(opts outgoingConnOpts) (c *PeerConn,
                torrent.Add("initiated conn with fallback header obfuscation", 1)
                return
        }
+       c.logger.Levelf(
+               log.Debug,
+               "error doing protocol handshake with header obfuscation %v",
+               !obfuscatedHeaderFirst,
+       )
+       secondDialResult.Conn.Close()
        return
 }
 
@@ -1294,7 +1308,7 @@ func (cl *Client) newTorrentOpt(opts AddTorrentOpts) (t *Torrent) {
        t.smartBanCache.Hash = sha1.Sum
        t.smartBanCache.Init()
        t.networkingEnabled.Set()
-       t.logger = cl.logger.WithContextValue(t).WithNames("torrent", t.infoHash.HexString()).WithDefaultLevel(log.Debug)
+       t.logger = cl.logger.WithDefaultLevel(log.Debug)
        t.sourcesLogger = t.logger.WithNames("sources")
        if opts.ChunkSize == 0 {
                opts.ChunkSize = defaultChunkSize
@@ -1601,8 +1615,8 @@ func (cl *Client) newConnection(nc net.Conn, opts newConnectionOpts) (c *PeerCon
        }
        c.logger.Levelf(
                log.Debug,
-               "new PeerConn %p [Client %p remoteAddr %v network %v outgoing %t]",
-               c, cl, opts.remoteAddr, opts.network, opts.outgoing,
+               "inited with remoteAddr %v network %v outgoing %t",
+               opts.remoteAddr, opts.network, opts.outgoing,
        )
        for _, f := range cl.config.Callbacks.NewPeer {
                f(&c.Peer)