Repository navigation
Releases
Releases · cenkalti/rain
v2.5.1
v2.5.0
Changelog
- 2c7f8e6 allocator: close files when closed during allocation
- 2d4bb2e storage: add ErrNotWritten for ranges that were never written
- f8c4295 storage: add Preparer for whole-torrent setup
- 6e991ef storage: add Remover so storage deletes its own data
- 64afec9 storage: make storage interfaces public
- 79442c4 update changelog
v2.4.5
v2.4.4
Changelog
- 1d7702a build(deps): bump golang.org/x/sync from 0.23.0 to 0.24.0
- 3679a16 build(deps): bump golang.org/x/sys from 0.48.0 to 0.49.0
- ca76d1d udptracker: bound announces and isolate cancellation
- d5ff613 udptracker: reduce to announce deadline and expiry check
- 10f574d udptracker: renew expired connection ids during retries
- 88ef638 update changelog
v2.4.3
v2.4.2
Changelog
- 40b7ca7 build(deps): bump github.com/stretchr/testify from 1.12.0 to 1.12.1 (#245)
- 6adce5a build(deps): bump golang.org/x/sync from 0.22.0 to 0.23.0 (#247)
- 3f67632 build(deps): bump golang.org/x/sys from 0.47.0 to 0.48.0 (#246)
- cb6759b build: fix goreleaser deprecations
- beaaca0 build: release a universal macOS binary for arm64 and amd64 (#250)
- 1e10ca1 ci: build with go 1.26
- fd85e49 ci: bump golangci-lint to v2.12.2
- aa5992b ci: bump golangci-lint to v2.14.0
- e856eb1 ci: read go version from .go-version
- 5bbdadd ci: read go version from go.mod
- 957d3c3 ci: track latest go 1.26 patch
- 0cb0950 console: fix columnsNeedStats predicate
- c6ad423 console: split console.go by responsibility
- 635f32a infodownloader: print indexes with %d
- fd9826f lint: stop shadowing builtins, fix gofmt and else-flow
- a6ce782 readme: drop go report card badge
- 86a96b6 torrent: add tests for command channel paths
- 80e3399 torrent: guard the two unlocked bitfield writes
- 812d787 torrent: send commands to the run loop as closures
- b4e8e43 torrent: use errors.AsType for InputError
- 49b83a5 update changelog
- 33efae4 update changelog
v2.4.1
Changelog
- 4f12617 Do not cancel the stopped event announce while closing a torrent (#248)
- de19a63 Update backoff pkg to v7
- 28ad179 blocklist: use backoff.Retry for reload
- 9a42639 boltdbresumer: extract update helper
- 093a6f3 build(deps): bump actions/checkout from 6 to 7
- 35583f8 build(deps): bump actions/setup-go from 6 to 7
- 9326b0b build(deps): bump actions/stale from 10 to 11
- 697380f build(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.0
- be89944 build(deps): bump go.etcd.io/bbolt from 1.4.3 to 1.5.0
- 6278afa build(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0
- 647fbf0 build(deps): bump golang.org/x/sys from 0.46.0 to 0.47.0
- 48de555 ctxutil: unify channel-close to context cancel
- aacd4f6 deps: bump x/crypto to v0.52.0
- 3b25c49 deps: update backoff to v6
- 85d17cf magnet: handle hybrid links with both xt topics
- e1e8878 piecepicker: add sequential download option
- b1ae35d piecepicker: pick both ends of every file first
- aea3e55 piecepicker: pick first and last piece first
- 8318eb0 piecepicker: prefer file edges over allowed-fast
- 26c799b piecepicker: widen file ends to 1% of file size
- 29aee4d torrent: extract sendCommand and recvResponse
- 2c25993 torrent: use httptest.NewServer in webseed test
- 4c1af43 torrent: wait for stopped announces on close
- c0b8ae2 update changelog
- 8b8b4a1 update changelog
v2.4.0
Changelog
- de19a63 Update backoff pkg to v7
- 28ad179 blocklist: use backoff.Retry for reload
- 9a42639 boltdbresumer: extract update helper
- 093a6f3 build(deps): bump actions/checkout from 6 to 7
- 35583f8 build(deps): bump actions/setup-go from 6 to 7
- be89944 build(deps): bump go.etcd.io/bbolt from 1.4.3 to 1.5.0
- 6278afa build(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0
- 647fbf0 build(deps): bump golang.org/x/sys from 0.46.0 to 0.47.0
- 48de555 ctxutil: unify channel-close to context cancel
- aacd4f6 deps: bump x/crypto to v0.52.0
- 3b25c49 deps: update backoff to v6
- 85d17cf magnet: handle hybrid links with both xt topics
- e1e8878 piecepicker: add sequential download option
- b1ae35d piecepicker: pick both ends of every file first
- aea3e55 piecepicker: pick first and last piece first
- 8318eb0 piecepicker: prefer file edges over allowed-fast
- 26c799b piecepicker: widen file ends to 1% of file size
- 29aee4d torrent: extract sendCommand and recvResponse
- 5c9cca1 update changelog
v2.3.1
Changelog
- 0b4abe4 Bump github.com/sirupsen/logrus from 1.8.1 to 1.8.3
- cacbaab Bump golang.org/x/sync from 0.18.0 to 0.19.0 (#223)
- 92cf48b Bump golang.org/x/sync from 0.19.0 to 0.21.0
- 94b3156 Bump golang.org/x/sys from 0.39.0 to 0.46.0
- 220c19d Bump goreleaser/goreleaser-action from 6 to 7
- c9bb2ed Fix lint workflow Go version mismatch
- 2dc8ea7 Potential fix for code scanning alert no. 11: Incorrect conversion between integer types
- 3372984 Potential fix for code scanning alert no. 8: Workflow does not contain permissions
- a7a6a2c accept BEP 47 torrents with duplicate pad file paths
- ba7c725 chore: bump go-prettyjson and boltbrowser to latest
- 1c4b223 ci: avoid duplicate workflow runs on pull requests
- 070946c ci: replace deprecated 'go get -d' with 'go mod download'
- 10137a2 clear snubbed state when info downloader receives data
- 5ecb782 discard webseed piece result for already completed piece
- c6bbff9 docs(rainrpc): document GetTorrentFiles and GetTorrentFileStats
- 17039ac docs(torrent): start AnnounceError.Error doc comment with the method name
- 2216a9d fix HTTP tracker external-IP filter dropping wrong peers
- e3f3555 fix UDP tracker backoff using XOR instead of exponentiation
- a1ee648 fix connectedPeerIPs leak on duplicate peer id
- 58fcb3c fix data race in StartAll/StopAll
- addd69a fix data race on torrentsByInfoHash in removeTorrentFromClient
- 1fca14f fix duplicate piece assignment to peers during webseed download
- 5754603 fix filesection.Write not skipping padding bytes in buffer
- 40df65f fix goroutine and context leak in resolveAndAddPeer
- 8e7be84 fix negative metadata_size bypassing validation (remote DoS)
- 1bbc02e fix per-source peer count on eviction in addrlist
- 97d2b9d fix piece picker leaking choked peers on cancel/disconnect
- 0a9f8cf fix webseed URLs escaping path separators as %2F
- ec49299 fix webseed requesting padding files from server
- d5c4881 fix webseedActiveDownloads counter leak on webseed downloader close
- c1d2fb5 fix(peerprotocol): report correct wire ID for AllowedFastMessage
- e3805ad fix(piececache): stop expiry timers on Close to release cached pieces
- bd71845 fix(torrent): close move-torrent response body on non-200 status
- 65546a1 fix(torrent): close tar-entry file on error paths in readData
- 209358b fix(torrent): don't panic on unknown peer source in ListPeers handler
- 9f71b77 fix(torrent): log instead of Fatal when RPC server stops serving
- ff78e0f fix(torrent): wrap errors with %w in stop() so Stats.Error is inspectable
- 6a5fb5e fix: correct version ldflag path for /v2 module
- 38dad5b harden piece request bounds check against uint32 overflow
- a298ef8 increase drain time in HTTP tracker test teardown to fix flaky race
- adc677b refactor(bitfield): use NumBytes in NewBytes instead of recomputing the ceil
- c8f1d47 refactor(console): use strconv.Itoa for ints; drop no-op errstr var
- 838629e refactor(handshaker): share handshake error logging via btconn.LogHandshakeError
- 6163f3f refactor(sliceset): use slices.Index in Remove
- 7066534 refactor(torrent): decode DHT compact peers via tracker.CompactPeer
- 6fe0060 refactor(torrent): move raw-HTTP move-torrent handler to its own file
- 1b24e47 refactor(torrent): rename newTorrent2 to newTorrent; DTO converter to torrentToRPC
- b8cde1c refactor(webseedsource): remove write-only DisabledAt field
- e335ed9 refactor: migrate to math/rand/v2
- f227280 refactor: modernize sorting with slices.SortFunc and builtin min
- 979053c refactor: move printJSON helper to helpers.go and reuse in torrent show
- 089dc02 refactor: split CLI into internal/command package, one file per command
- 9e73fcb refactor: use atomic.Int32 for atomic counters
- 0809892 reject oversized peer messages before allocating
- edf37ac reject tar entries that escape destination dir in move-torrent
- 008dfde reset webseedActiveDownloads when tearing down webseed downloads
- 9b0d485 snapshot torrents before Start/Stop to avoid holding lock on blocking calls
- 9d07450 update changelog
- d18403f use canonical prefix guard for tar-slip check so CodeQL recognizes it