Due to the rather large amount of new/changed code during past two days I was forced to dedicate today for more thorough testing, while limiting the new code flowing into the codebase. You have to let the things cool down after beating it for a while, otherwise you end up with deeper problems (notice the analogy with blacksmithing).
So, the short changelog of fixes that came up during regress-testing, as well as bunch of tickets being closed (I like to keep the open ticket count at bugtracker at a reasonable size).
- [2270] Better self-checks in FilesList::push() method (adding shared files)
- [2271] Always resets hash job internal buffers after finishing up (used to be done in destructor, but since we had some problems with those objects destructions, this should lower the amount of memory leakage even IF we forget to destroy the job itself, altough it shouldn't happen anymore).
- [2272] Splitting getRange method (in PartData) into four sub-routines, in preparation for further fine-tuning and optimizations for each one of them.
- [2273] Apparently, our DNS resolver doesn't support timeouts (altough it's part of the API), so now we just work around it in BT module manually.
- [2274] Improved error messages for self-checks and fatal logic errors.
- [2275] PartData API change: corruption() and onCorruption() methods now take Range64 argument (instead of two integers).
- [2276] Black magic in BT files wrappers: fixed corruption handling routines.
- [2278, 2279] Handling downloads of size 0 gracefully (sometimes torrents contain those, ticket 151).
- [2280] Fixed crash in HTTP module (ticket 148)
- [2281] Additional checks before dereferncing pointers in ed2k.client subsystem (ticket 122)
- Also closed tickets 138, 146, 52 and 133 for various reasons.
Madcat, ZzZz