| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| checksums.txt | 2026-06-11 | 269 Bytes | |
| rain_2.3.1_linux.tar.gz | 2026-06-11 | 5.5 MB | |
| rain_2.3.1_macos.tar.gz | 2026-06-11 | 5.5 MB | |
| rain_2.3.1_windows.zip | 2026-06-11 | 5.6 MB | |
| README.md | 2026-06-11 | 4.2 kB | |
| v2.3.1 source code.tar.gz | 2026-06-11 | 1.0 MB | |
| v2.3.1 source code.zip | 2026-06-11 | 1.1 MB | |
| Totals: 7 Items | 18.7 MB | 0 | |
Changelog
- [0b4abe] Bump github.com/sirupsen/logrus from 1.8.1 to 1.8.3
- [cacbaa] Bump golang.org/x/sync from 0.18.0 to 0.19.0 (#223)
- [92cf48] Bump golang.org/x/sync from 0.19.0 to 0.21.0
- [94b315] Bump golang.org/x/sys from 0.39.0 to 0.46.0
- [220c19] Bump goreleaser/goreleaser-action from 6 to 7
- [c9bb2e] Fix lint workflow Go version mismatch
- [2dc8ea] Potential fix for code scanning alert no. 11: Incorrect conversion between integer types
- [337298] Potential fix for code scanning alert no. 8: Workflow does not contain permissions
- [a7a6a2] accept BEP 47 torrents with duplicate pad file paths
- [ba7c72] chore: bump go-prettyjson and boltbrowser to latest
- [1c4b22] ci: avoid duplicate workflow runs on pull requests
- [070946] ci: replace deprecated 'go get -d' with 'go mod download'
- [10137a] clear snubbed state when info downloader receives data
- [5ecb78] discard webseed piece result for already completed piece
- [c6bbff] docs(rainrpc): document GetTorrentFiles and GetTorrentFileStats
- [17039a] docs(torrent): start AnnounceError.Error doc comment with the method name
- [2216a9] fix HTTP tracker external-IP filter dropping wrong peers
- [e3f355] fix UDP tracker backoff using XOR instead of exponentiation
- [a1ee64] fix connectedPeerIPs leak on duplicate peer id
- [58fcb3] fix data race in StartAll/StopAll
- [addd69] fix data race on torrentsByInfoHash in removeTorrentFromClient
- [1fca14] fix duplicate piece assignment to peers during webseed download
- [575460] fix filesection.Write not skipping padding bytes in buffer
- [40df65] fix goroutine and context leak in resolveAndAddPeer
- [8e7be8] fix negative metadata_size bypassing validation (remote DoS)
- [1bbc02] fix per-source peer count on eviction in addrlist
- [97d2b9] fix piece picker leaking choked peers on cancel/disconnect
- [0a9f8c] fix webseed URLs escaping path separators as %2F
- [ec4929] fix webseed requesting padding files from server
- [d5c488] fix webseedActiveDownloads counter leak on webseed downloader close
- [c1d2fb] fix(peerprotocol): report correct wire ID for AllowedFastMessage
- [e3805a] fix(piececache): stop expiry timers on Close to release cached pieces
- [bd7184] fix(torrent): close move-torrent response body on non-200 status
- [65546a] fix(torrent): close tar-entry file on error paths in readData
- [209358] fix(torrent): don't panic on unknown peer source in ListPeers handler
- [9f71b7] fix(torrent): log instead of Fatal when RPC server stops serving
- [ff78e0] fix(torrent): wrap errors with %w in stop() so Stats.Error is inspectable
- [6a5fb5] fix: correct version ldflag path for /v2 module
- [38dad5] harden piece request bounds check against uint32 overflow
- [a298ef] increase drain time in HTTP tracker test teardown to fix flaky race
- [adc677] refactor(bitfield): use NumBytes in NewBytes instead of recomputing the ceil
- [c8f1d4] refactor(console): use strconv.Itoa for ints; drop no-op errstr var
- [838629] refactor(handshaker): share handshake error logging via btconn.LogHandshakeError
- [6163f3] refactor(sliceset): use slices.Index in Remove
- [706653] refactor(torrent): decode DHT compact peers via tracker.CompactPeer
- [6fe006] refactor(torrent): move raw-HTTP move-torrent handler to its own file
- [1b24e4] refactor(torrent): rename newTorrent2 to newTorrent; DTO converter to torrentToRPC
- [b8cde1] refactor(webseedsource): remove write-only DisabledAt field
- [e335ed] refactor: migrate to math/rand/v2
- [f22728] refactor: modernize sorting with slices.SortFunc and builtin min
- [979053] refactor: move printJSON helper to helpers.go and reuse in torrent show
- [089dc0] refactor: split CLI into internal/command package, one file per command
- [9e73fc] refactor: use atomic.Int32 for atomic counters
- [080989] reject oversized peer messages before allocating
- [edf37a] reject tar entries that escape destination dir in move-torrent
- [008dfd] reset webseedActiveDownloads when tearing down webseed downloads
- [9b0d48] snapshot torrents before Start/Stop to avoid holding lock on blocking calls
- [9d0745] update changelog
- [d18403] use canonical prefix guard for tar-slip check so CodeQL recognizes it