Now, after 12 years, however I look at it, my original choice of how to fix this still looks valid so finally I now applied it. A confirmation or an advice from the project leaders would have been useful over the years.
Actually this has been one of the ugliest among the long time spanning bugs in the dcpp library. Some DC clients are actually implemented a specific defense against this particular bad behavior... ** Changed in: dcplusplus Status: Confirmed => Fix Committed -- You received this bug notification because you are a member of Dcplusplus-team, which is subscribed to DC++. https://bugs.launchpad.net/bugs/1194085 Title: Infinite download loop for a single tree Status in DC++: Fix Committed Bug description: It goes as follows: 1. DC++ tries to save a downloaded tree in hash data but the data file isn't writable. 2. The client searches for other downloads from the same user and finds the same file again. 3. The client can't find the tree for that file and downloads it again (back to step 1.) While the problem happens relatively rarely on Windows, it's much more common with Linux clients. Even though there's a log message when the writing fails, it seems that users don't generally notice it, which is why some users have even requested a feature for banning IP addresses from the client (and I've also seen users downloading the same tree from me for several hours). I've fixed this issue in AirDC++ 2.50 by catching the database exceptions in DownloadManager::endData, forwarding the error to the connecting item and changing the item to a state where it will connect only when the user manually forces the connection. To manage notifications about this bug go to: https://bugs.launchpad.net/dcplusplus/+bug/1194085/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~linuxdcpp-team Post to : linuxdcpp-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~linuxdcpp-team More help : https://help.launchpad.net/ListHelp