public void DecodeCompact()
 {
     byte[] bytes = new byte[peers.Count * 6];
     for (int i = 0; i < peers.Count; i++)
     {
         peers[i].CompactPeer(bytes, i * 6);
     }
     VerifyDecodedPeers(Peer.Decode((BEncodedString)bytes));
 }
        public void CorruptDictionary()
        {
            BEncodedList       l = new BEncodedList();
            BEncodedDictionary d = new BEncodedDictionary();

            l.Add(d);
            IList <Peer> decoded = Peer.Decode(l);

            Assert.AreEqual(0, decoded.Count, "#1");
        }
Example #3
0
        public void CompactPeerTest()
        {
            string peerId = "12345abcde12345abcde";
            Uri    uri    = new Uri("tcp://192.168.0.5:12345");
            Peer   p      = new Peer(peerId, uri);

            byte[] compact = p.CompactPeer();
            Peer   peer    = Peer.Decode((BEncoding.BEncodedString)compact)[0];

            Assert.AreEqual(p.ConnectionUri, peer.ConnectionUri);
        }
        public void DecodeList()
        {
            // List of String
            BEncodedList list = new BEncodedList();

            foreach (Peer p in peers)
            {
                list.Add((BEncodedString)p.CompactPeer());
            }

            VerifyDecodedPeers(Peer.Decode(list));
        }
        public void CorruptString()
        {
            IList <Peer> p = Peer.Decode((BEncodedString)"1234");

            Assert.AreEqual(0, p.Count, "#1");

            byte[] b = new byte[] { 255, 255, 255, 255, 255, 255 };
            p = Peer.Decode((BEncodedString)b);
            Assert.AreEqual(1, p.Count, "#2");

            b = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            p = Peer.Decode((BEncodedString)b);
            Assert.AreEqual(1, p.Count, "#3");
        }
        public void DecodeDictionary()
        {
            BEncodedList list = new BEncodedList();

            foreach (Peer p in peers)
            {
                BEncodedDictionary dict = new BEncodedDictionary();
                dict.Add("ip", (BEncodedString)p.ConnectionUri.Host);
                dict.Add("port", (BEncodedNumber)p.ConnectionUri.Port);
                dict.Add("peer id", (BEncodedString)p.PeerId);
                list.Add(dict);
            }

            VerifyDecodedPeers(Peer.Decode(list));
        }
        public void CorruptList()
        {
            BEncodedList list = new BEncodedList();

            for (int i = 0; i < peers.Count; i++)
            {
                list.Add((BEncodedString)peers[i].CompactPeer());
            }

            list.Insert(2, new BEncodedNumber(5));
            VerifyDecodedPeers(Peer.Decode(list));

            list.Clear();
            list.Add(new BEncodedString(new byte[3]));
            IList <Peer> decoded = Peer.Decode(list);

            Assert.AreEqual(0, decoded.Count, "#1");
        }
Example #8
0
        protected virtual void HandlePeerExchangeMessage(PeerId id, PeerExchangeMessage message)
        {
            // Ignore peer exchange messages on private torrents
            if (id.TorrentManager.Torrent.IsPrivate || !id.TorrentManager.Settings.EnablePeerExchange)
            {
                return;
            }

            // If we already have lots of peers, don't process the messages anymore.
            if ((Manager.Peers.Available + Manager.OpenConnections) >= manager.Settings.MaxConnections)
            {
                return;
            }

            IList <Peer> peers = Peer.Decode((BEncodedString)message.Added);
            int          count = id.TorrentManager.AddPeersCore(peers);

            id.TorrentManager.RaisePeersFound(new PeerExchangePeersAdded(id.TorrentManager, count, peers.Count, id));
        }