IF Count(Req blocks not yet completed) > 4 AND Max(Transferred) < 540, THEN ban
The more ideal fix if ever implemented. Be sure to see this post to understand the context.
There is a problem in eMule where it allows an infinite repetition of:
remote client decided to stop/complete the transfer (got OP_OutOfPartReqs)
After uploading about only 200KB. The file hashing is circumvented and so is any banning or anything like:
Increased set m_fFailedFileIdReqs to 1
These short uploads need to be tracked and limited and the clients banned if they exceed a certain point. In testing this, I had clients upload over 60MB of data that was later found corrupt. They never got banned. I'm thinking the equivalent of a chunk or a certain number of the "decided to stop"s with "Req blocks not yet completed" to institute first a temporary ban and then a session ban if it continues after the first ban.
It goes in cycles like this
date time: Download session started. User: ip 'user name' (eMule v0.49c,OnQueue/None/None) in SetDownloadState(). New State: 0 date time: Download session ended: The remote client decided to stop/complete the transfer (got OP_OutOfPartReqs). User: ip 'user name' (eMule v0.49c,Downloading/None/None) in SetDownloadState(). New State: 1, Length: 51 secs, Payload: 212.29 KB, Transferred: 212.29 KB, Req blocks not yet completed: 2.
The client does this roughly every 3 minutes and eMule just keeps on swallowing. The amount transferred increases, the completed portion of the file jumps around but never enough to be displayed under Shared Files (so at least something in the Shared Files program loop is identifying there's something wrong). Note the 61.66 MB below and I have a verbose log for anyone who would like to see much more of the same repeated:
date time: Download session ended: The remote client decided to stop/complete the transfer (got OP_OutOfPartReqs). User: ip 'user name' (eMule v0.49c,Downloading/None/None) in SetDownloadState(). New State: 1, Length: 30 secs, Payload: 61.66 MB, Transferred: 152.88 KB, Req blocks not yet completed: 2.
I've seen these stops work on both files that are entirely fake and good files where the amount transferred ends up being over 2 times and a few hundred MB more than the file size. Since testing had to involve copyrighted material, because someone apparently trying to discourage its sharing was generating the corrupt data, I can't post details here, but I'd be happy to send specific hashes and logs privately.
This post has been edited by James R. Bath: 20 October 2009 - 04:46 PM

Sign In
Register
Help



MultiQuote






