]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add a test for bad have messages
authorMatt Joiner <anacrolix@gmail.com>
Tue, 22 Mar 2016 02:09:02 +0000 (13:09 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 22 Mar 2016 02:09:02 +0000 (13:09 +1100)
The reason for the cleanup to peer have-related messages in the first place.

client_test.go

index 38e41dc094cab1dd8c422cbb074cabb0b08f0651..ccb60b5d64d2e19a7094a4b72192c0b94cd49464 100644 (file)
@@ -864,3 +864,27 @@ func TestTorrentDownloadAllThenCancel(t *testing.T) {
                Cancel: true,
        })
 }
+
+// Ensure that it's an error for a peer to send an invalid have message.
+func TestPeerInvalidHave(t *testing.T) {
+       cl, err := NewClient(&TestingConfig)
+       require.NoError(t, err)
+       defer cl.Close()
+       tt, _new, err := cl.AddTorrentSpec(&TorrentSpec{
+               Info: &metainfo.InfoEx{
+                       Info: metainfo.Info{
+                               PieceLength: 1,
+                               Pieces:      make([]byte, 20),
+                               Files:       []metainfo.FileInfo{{Length: 1}},
+                       },
+               },
+       })
+       require.NoError(t, err)
+       assert.True(t, _new)
+       defer tt.Drop()
+       cn := &connection{
+               t: tt.torrent,
+       }
+       assert.NoError(t, cn.peerSentHave(0))
+       assert.Error(t, cn.peerSentHave(1))
+}