Summary
This release includes various bugfixes and minor improvements as part of a stable series of releases.
Reverted to Legacy UTF-8 Name/Path Handling
Partially reverted UTF-8 handling to old behavior, and name.utf-8 and path.utf-8 values (if present) will be used to ensure compatibility with older torrents.
Can be turned off with system.file_name.allow_legacy_utf8.set=false.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Bug Fixes / Cleanup / Improvements
- Reject loopback, link-local and private addresses from remote peer lists by @xirvik
- Reject torrents with more chunks than the chunk index can address by @xirvik
- Use a large state engine for UDP tracker transaction ids by @xirvik
- Seed udns query ids from the system entropy source and require the QR flag by @xirvik
- Fix the signal mask and the reported cause on a chunk write bus error by @xirvik
- TrackerHttp: don't clobber m_current_family when there is no next family to try by @axolotty
- Fix size_pex accounting leaks that abort ~DownloadMain on erase by @xirvik
- Clear the requesting flag on a scrape failure by @noctuum
- Keep an unprocessed extension message for a retry by @noctuum
- Cap the number of info hashes the DHT keeps peer lists for by @xirvik
- Re-read memory usage after try_free_memory by @noctuum
- Bound the id_hex log reads to the array's 40 characters by @xirvik
- Do not arm a plaintext retry the stream forbids by @noctuum
- Log event_read storage errors as storage errors by @noctuum
- configure: Enable large-file support by @zippy2
- Accept magnet links that also carry a v2 hash by @noctuum
- Do not credit a chunk to the file that follows it by @noctuum
- Restore the part number in split file names by @noctuum
- Re-queue an interested peer when it is unsnubbed by @noctuum
- Log the first family's announce failure before the second family is tried by @silasmariusz
- Added legacy UTF-8 torrent name and path handling. by @rakshasa
- Range-check global throttle rates before narrowing them to kB. by @xirvik
- Bound JSON-RPC input by size and nesting depth by @xirvik
- rpc: require methodName as a multicall struct's first member by @xirvik
- Write session files with O_NOFOLLOW and mode 0600 by @xirvik
- Guard download pointers against event handlers that erase the download by @xirvik
- Make SessionManager::m_active atomic by @xirvik
- Sync the session directory after committing the renames by @xirvik
- Stop at max_active in scheduler.simple.removed by @noctuum
- Guard control in the main catch handlers by @noctuum
- Limit tab completion to text before the cursor by @noctuum
- Reject an empty argument list in execute_lua by @noctuum
- Check pthread_sigmask by its return value by @noctuum
- Sort the transfer chunks by index by @noctuum
- Check first against last in parse_object by @noctuum
- Reset the freed pointers in XmlRpc::cleanup by @noctuum
- Remove code that has no remaining user by @noctuum
- Read the unpacked object in the raw string case by @noctuum
- Check m_entry against size() in set_entry by @noctuum
- Do not switch an active download to initial_seed by @noctuum
- Mark the system.file.allocate getter untrusted-safe, because d.open reads it by @silasmariusz
- Reject out-of-range RPC values instead of narrowing them silently by @xirvik by @rakshasa
- execute: room for a couple of hundred trackers' URLs in one event handler's arguments by @silasmariusz
- Added legacy UTF-8 torrent name and path handling. by @rakshasa
- Align the XML-RPC command stack so torrent::Object is not built on a 4-byte boundary by @silasmariusz