Registered Member
|
Creating a torrent with two files in folder island_fever3_HD
../island_fever3_HD/IslandFever3.nfo 2.4KB -> 2.4 KB ../island_fever3_HD/IslandFever3.wmv 4.4GB-> 109.6MB Filesystem: ext3 Chucksize: 1024 Start seeding: no Private: yes For testing i tried the rufus client for making this torrent, and it made a proper torrent of the directory. So i guess it's a KTorrent or a KDE library bug. (nice and small huh... ) PS.I have uploaded the torrent on a tracker at the moment, so if you wanna have it for testing just pm me and i'll point you to the right direction. (note: 4.4GB though) |
Moderator
|
|
Registered Member
|
|
Moderator
|
|
Registered Member
|
|
Moderator
|
|
Registered Member
|
|
Moderator
|
|
Registered Member
|
|
Registered Member
|
|
Moderator
|
|
Registered Member
|
This problem is still present in Fedora Core's ktorrent-2.0.3-4.fc6.x86_64.rpm package about half a year latter. Wasn't the fix propagated to maintained baseline ? Also, it appears in lattest beta binaries (for SuSE) and is trivially easy to test for. Create a file with size of 4.0 GB + some, and observe the "new torrent" to be created with size "some". $ touch test.file $ perl -e 'truncate("test.file", 4*1024*1024*1024+100);' /Matti Aarnio PS: Lattest code refuses to compile on Fedora Core 6 platform with most confusing error message. I definitely have kdelibs installed, but the thing is looking for something else ? |
Registered Member
|
I think it's only fixed on latest svn..
http://sotapeli.fi/ktorrent-2.1svn610701-1.fc6.src.rpm Try to build that. |
Moderator
|
|
Registered Member
|
I traced the issue and found the cause: libktorrent/torrent/torrentcreator.cpp @@ -193,8 +199,8 @@ } else { - enc.write("length"); enc.write((Uint64)fi.size()); - + enc.write("length"); enc.write((Uint64)bt::FileSize(fi.absFilePath())); + } enc.write("name"); enc.write(name); enc.write("piece length"); enc.write((Uint64)chunk_size); Also I don't undertsand this piece of code a bit early: ... else { tot_size = bt::FileSize(target); num_chunks = tot_size / chunk_size; if (tot_size % chunk_size > 0) num_chunks++; last_size = tot_size % chunk_size; Out() << "Tot Size : " << tot_size << endl; tot_size = fi.size(); At first you got correct file size with bt::FileSize(target) and after that in the end just replaced it with wrong one. QFileInfo::size is uint 32 so just impossible to get size > 4Gb. Looks like a bad merge for me. -- Alexey |
Registered users: Bing [Bot], Google [Bot]