Cache system bug fixes and performance improvement
Changed
- Improved the performance of directory listing generation while there are
on-going file transfers - Wrapped mutex locking and unlocking functions in error checking functions.
Fixed
- Fixed issue #40 - Crashes with "API function called from within callback".
- Cache system: now keep track of the number of times a cache file has been
opened.- The on-disk cache file no longer gets opened multiple times, if
a file is opened multiple times. This used to cause inconsistencies
between two opened cache files.
- The on-disk cache file no longer gets opened multiple times, if
- Cache system: Fixed buffer over-read at the boundary.
- Say we are using a lock size of 1024k, we send a request for 128k at
1008k. It won't trigger the download, because we have already downloaded the
first 1024k at byte 0. So it would read off from the empty disk space! - This problem only occurred during the first time you download a file.
During subsequent accesses, when you are only reading from the cache, this
problem did not occur.
- Say we are using a lock size of 1024k, we send a request for 128k at
- Cache system: Previously it was possible for Cache_bgdl()'s download offset
to be modified by the parent thread after the child thread had been
launched. This used to cause permanent cache file corruption. - Cache system: Cache_bgdl() no longer prefetches beyond EOF.
- Cache system: Data_read() no longer gives warning messages when reaching the
end of the cache file.
What's Changed
- Directory listing performance improvement while file transfers are going on by @fangfufu in #41
- Cache system bug fix by @fangfufu in #42
Full Changelog: 1.1.8...1.1.9