rTorrent sometimes creates invalid torrents which has empty path components. the bitorrent spec allows for "" strings, but they make no sense in paths. so instead of always adding a / in between, skip them. ugh. for example: dict { 'info' => dict { 'name' => str = "some dir" (len = 8) 'files' => list [ dict { 'length' => int = 12345567 'path' => list [ str = "" (len = 0) str = "foo.bin" (len = 7) ] } ... ] ... } ... } ctorrent will then try to fetch the file "/some dir/foo.bin" instead of "some dir/foo.bin" (relative to $PWD). --- a/bencode.cpp +++ b/bencode.cpp @@ -258,7 +258,8 @@ n -= r; if( 'e' == *pb ) break; if( pathname >= endmax ) return 0; - *pathname++ = PATH_SP; + if (q) + *pathname++ = PATH_SP; } *pathname = '\0'; return (pb - b + 1);