]> Sergey Matveev's repositories - btrtrc.git/blobdiff - peerconn.go
Add explicit metadata extension types
[btrtrc.git] / peerconn.go
index b35564ac83aa47d817904327c9bdb763136ff530..ac2b0ddfb721cd1426ee64ea4e7d1f8412f9631f 100644 (file)
@@ -443,27 +443,14 @@ func (cn *PeerConn) write(msg pp.Message) bool {
 
 func (cn *PeerConn) requestMetadataPiece(index int) {
        eID := cn.PeerExtensionIDs[pp.ExtensionNameMetadata]
-       if eID == 0 {
+       if eID == pp.ExtensionDeleteNumber {
                return
        }
        if index < len(cn.metadataRequests) && cn.metadataRequests[index] {
                return
        }
        cn.logger.WithDefaultLevel(log.Debug).Printf("requesting metadata piece %d", index)
-       cn.write(pp.Message{
-               Type:       pp.Extended,
-               ExtendedID: eID,
-               ExtendedPayload: func() []byte {
-                       b, err := bencode.Marshal(map[string]int{
-                               "msg_type": pp.RequestMetadataExtensionMsgType,
-                               "piece":    index,
-                       })
-                       if err != nil {
-                               panic(err)
-                       }
-                       return b
-               }(),
-       })
+       cn.write(pp.MetadataExtensionRequestMsg(eID, index))
        for index >= len(cn.metadataRequests) {
                cn.metadataRequests = append(cn.metadataRequests, false)
        }