Browse Source

handle empty keys which apparently happen in v2 torrents

main
John-Mark Gurney 10 months ago
parent
commit
f523886240
1 changed files with 6 additions and 2 deletions
  1. +6
    -2
      ui/medashare/btv/bencode.py

+ 6
- 2
ui/medashare/btv/bencode.py View File

@@ -70,11 +70,11 @@ def decode_list(x, f):

def decode_dict(x, f):
r, f = {}, f+1
lastkey = ''
lastkey = None
while x[f] != b'e'[0]:
k, f = decode_string(x, f)
k = k.decode('us-ascii')
if lastkey >= k:
if lastkey is not None and lastkey >= k:
raise ValueError
lastkey = k
r[k], f = decode_func[x[f]](x, f)
@@ -339,9 +339,13 @@ class _TestCases(unittest.TestCase):
def test_bencode(self):
test_bencode()

self.assertEqual(bencode({'': 5}), b'd0:i5ee')

def test_bdecode(self):
test_bdecode()

self.assertEqual(bdecode(b'd0:i5ee'), { '': 5 })

try: #pragma: no cover
import psyco
psyco.bind(bdecode)


Loading…
Cancel
Save