diff --git a/bencoder.pyx b/bencoder.pyx index ce67968..9f1ed26 100644 --- a/bencoder.pyx +++ b/bencoder.pyx @@ -88,16 +88,19 @@ for func, keys in [ decode_func[ord(key)] = func -def bdecode(bytes x): +def bdecode2(bytes x): try: r, l = decode_func[x[0]](x, 0) except (IndexError, KeyError, ValueError): raise BTFailure("not a valid bencoded string") + return r, l + +def bdecode(bytes x): + r, l = bdecode2(x) if l != len(x): raise BTFailure("invalid bencoded value (data after valid prefix)") return r - def encode(v, r): tp = type(v) if tp in encode_func: