]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Log failure to complete metadata
authorMatt Joiner <anacrolix@gmail.com>
Wed, 26 May 2021 12:49:52 +0000 (22:49 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 7 Jun 2021 02:57:42 +0000 (12:57 +1000)
client.go

index 9506cfd2adfa11febd46fec1913d8a64b6270578..cab4c234307436a18223b4fa29df2eef5728a5df 100644 (file)
--- a/client.go
+++ b/client.go
@@ -1058,7 +1058,15 @@ func (cl *Client) gotMetadataExtensionMsg(payload []byte, t *Torrent, c *PeerCon
                }
                t.saveMetadataPiece(piece, payload[begin:])
                c.lastUsefulChunkReceived = time.Now()
-               return t.maybeCompleteMetadata()
+               err = t.maybeCompleteMetadata()
+               if err != nil {
+                       // Log this at the Torrent-level, as we don't partition metadata by Peer yet, so we
+                       // don't know who to blame. TODO: Also errors can be returned here that aren't related
+                       // to verifying metadata, which should be fixed. This should be tagged with metadata, so
+                       // log consumers can filter for this message.
+                       t.logger.WithDefaultLevel(log.Warning).Printf("error completing metadata: %v", err)
+               }
+               return err
        case pp.RequestMetadataExtensionMsgType:
                if !t.haveMetadataPiece(piece) {
                        c.post(t.newMetadataExtensionMessage(c, pp.RejectMetadataExtensionMsgType, d["piece"], nil))