1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-23 22:50:41 +00:00
Commit graph

5321 commits

Author SHA1 Message Date
Charles Kerr
6db3fbfe64
perf: tell curl_share to share everything (#2802) 2022-03-23 22:02:18 -05:00
SweetPPro
791f59e8ba
fix for editing magnet link tracker list (#2793)
Co-authored-by: SweetPPro <sweetppro@users.noreply.github.com>
2022-03-23 10:18:06 -05:00
David Beinder
53dc3a41b4
fix: return correct bitfield when fully downloaded (#2799)
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2022-03-22 14:01:07 -05:00
Charles Kerr
04a4f4a10c
refactor: a little more logging (#2800)
Co-authored-by: Mike Gelfand <mikedld@mikedld.com>
2022-03-22 11:45:56 -05:00
SweetPPro
6e1b89d9a7
fixes "no data found..." error on restart for paused torrents (#2797)
Co-authored-by: SweetPPro <sweetppro@users.noreply.github.com>
2022-03-21 16:15:53 -05:00
Charles Kerr
03ee0028d4
refactor: tr_sys_path_dirname returns a std::string (#2792) 2022-03-21 15:22:50 -05:00
Charles Kerr
fcc1510ecb
refactor: use fmt to build the GTK client's user-visible strings (#2788)
Co-authored-by: Mike Gelfand <mikedld@mikedld.com>
2022-03-21 09:15:48 -05:00
Charles Kerr
44e30bf092
perf: avoid excess filesystem checks (#2786) 2022-03-18 16:31:25 -05:00
Charles Kerr
7b837bca1f
fixup! refactor: remove deep logging (#2749) (#2785)
handle new log levels in daemon cli invocation
2022-03-18 14:15:43 -05:00
Charles Kerr
22499c677a
refactor: aggregate bandwidth objects (#2783) 2022-03-18 11:34:29 -05:00
Matan Ziv-Av
c07bac4e19
Limit bandwidth used by a group of torrents (#2761)
* Add support for bandwidth groups. i.e. Bandwidth limit for a (user specified) group of torrents,
2022-03-18 08:11:59 -05:00
Charles Kerr
6cb0498486
fix: log unexpected announce/scrape keys (#2778)
Fixes #2765.
2022-03-17 19:31:24 -05:00
Charles Kerr
fa8aaf7631
refactor: remove remaining vararg log messages (#2776) 2022-03-17 17:39:06 -05:00
Charles Kerr
5df252d1e1
fix: calculate ratio as uploaded / sizeWhenDone (#2770) 2022-03-17 13:41:48 -05:00
Charles Kerr
ce10a5314a
fixup! fix: ensure all bytes read / written to file (#2682) (#2780)
fix: infinite loop when pread returns 0
2022-03-17 10:41:02 -05:00
Charles Kerr
54ef7341a2
refactor: fmt pt 4 (#2774)
Co-authored-by: Mike Gelfand <mikedld@mikedld.com>
2022-03-16 19:23:44 -05:00
Charles Kerr
0be920156b
refactor: fmt part 3 (#2773) 2022-03-15 19:51:36 -05:00
Charles Kerr
72a67054ea
refactor: fmt part 2 (#2771) 2022-03-15 09:52:16 -05:00
Charles Kerr
a942c67199
refactor: use fmt (#2758)
* deps: use fmt (8.1.1 tag) to build log strings

Co-authored-by: Mike Gelfand <mikedld@mikedld.com>
2022-03-13 23:43:35 -05:00
Charles Kerr
91d5388954
fix: memory corruption in RPC when fetching torrent piece info (#2762)
Thanks to MatanZ for finding and tracking down this problem

Fixes #2757.
2022-03-12 10:39:34 -06:00
Charles Kerr
749bb591fb
feat: stop logging repetitive warnings (#2756)
Fixes #295
2022-03-11 16:06:58 -06:00
Charles Kerr
d2f8e1d4e0
refactor: set logging levels (#2755) 2022-03-11 15:09:22 -06:00
Charles Kerr
af339a15ed
refactor: remove deep logging (#2749)
* refactor: remove "deep logging"
2022-03-09 23:51:14 -06:00
Charles Kerr
1bafbd18ac
chore: add more descriptive assertion in bitfield (#2748)
Related to #2727
2022-03-09 17:43:42 -06:00
Charles Kerr
7a227917ff
fix: rpc-server shutdown assertion failure (#2747)
Fixes #2742.
2022-03-09 11:13:51 -06:00
Charles Kerr
0ac8c6079a
refactor: remove redundant MAX_BLOCK_SIZE constant (#2740) 2022-03-04 23:35:22 -08:00
Charles Kerr
cdd819772d
feat: tr_runInEventThread() now takes std::function, typesafe args (#2739) 2022-03-04 20:26:03 -08:00
Charles Kerr
8d8ea2f4df
perf: use condition variables during tr thread startup (#2737)
* perf: use condition variables during tr thread startup
2022-03-04 14:43:56 -08:00
Charles Kerr
0cd3eb26ff
fix: webseed assertion failures (#2735) 2022-03-04 12:00:42 -08:00
LaserEyess
377c335d0f
fix broken ip address string size on windows (#2733)
Make sure the buffer is at least as big as an ipv6 address

Co-authored-by: LaserEyess <LaserEyess@users.noreply.github.com>
2022-03-03 21:17:28 -08:00
Charles Kerr
60ef1abadf
refactor: tr_torrents (#2722)
* refactor: add tr_torrents container
2022-03-01 15:06:29 -08:00
Charles Kerr
d115ee6dfb
refactor: remove utils dep from peer-io (#2719) 2022-02-28 14:26:26 -08:00
LaserEyess
3bc21fe8a6
fixup: unix socket implementation changes (#2707)
* Use std::unique_ptr for bindAddress

* fixup: unix socket implementation changes

Assortment of changes and comments from #2574

- actually assign variables in the tr_rpc_address union for ipv4 and
  ipv6
- use std::size() instead of std::string.length()
- add [[maybe_unused]] to bindUnixSocket() args for Windows
- fix error log for windows to to actually print a string instead of
  an enum int
- use C++ style cast for ecvonnlistener_new_bind()
- refactor rpc URL log line to only substitute a single string
- remove redundant tr_rpc+address_is_valid() check

* change TrUnixSocketPrefix to std::string_view

This allows for removing runtime overhead of strlen() in a few places.

Co-authored-by: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com>
Co-authored-by: LaserEyess <LaserEyess@users.noreply.github.com>
2022-02-27 14:05:08 -08:00
Charles Kerr
2c7e167436
chore: exploratory change for #2571 (#2717)
This _may_ solve the problem by calling tier.useNextTracker(); but if not, it also adds new assertions to try and fail sooner if the announcer gets into a bad state.
2022-02-26 11:53:34 -06:00
Charles Kerr
1598774b8d
refactor: use std::map for handshake tracking (#2715) 2022-02-26 00:03:32 -06:00
Charles Kerr
70cce3abeb
perf: do not block on upnpDiscover() call during startup (#2714)
* perf: upnpDiscover() is a blocking call that can run for *seconds* on
some routers. Move it to a worker thread where it won't block startup.
2022-02-25 19:26:31 -06:00
Charles Kerr
412ebc63c6
fixup: webseed (#2712)
* fixup! refactor: tr_webseed simplification (#2613)

call connection_limiter.taskStarted in the right place

* perf: put web thread to sleep when inactive
2022-02-25 14:45:00 -06:00
Charles Kerr
4450973d94
feat: stop announcing on not-registered tracker error (#2708)
Fixes #2051.
2022-02-25 00:26:19 -06:00
Charles Kerr
e94ddc82fc
refactor: use std::string in tr_net_strerror() (#2706) 2022-02-24 18:53:01 -06:00
SweetPPro
943b57979f
support for resuming magnet links (#2702)
* support for resuming magnet links

magnet links are now saved as a text file the `Torrents` folder as `.magnet` files.
2022-02-24 15:52:29 -06:00
Charles Kerr
abfd47a4a8
refactor: remove unused tr_block_info.n_blocks_in_piece (#2704) 2022-02-24 12:14:46 -06:00
Charles Kerr
9c3acc7e8a
fixup: handle unhandled scrape/announce responses (#2701)
followup to the #2531 benc refactor
2022-02-24 07:59:58 -06:00
Charles Kerr
c1c1f7ac00
fix: allow 0-byte files when creating torrents (#2698)
Fixes #1453.
2022-02-23 21:16:51 -06:00
Charles Kerr
cfb92c47f0
feat: warn when creating torrents with nonportable filenames (#2695)
* feat: check new torrents for nonportable filenames

* fix: parse torrents even if they have nonportable filenames in the info dict's 'file' string
2022-02-23 17:38:07 -06:00
LaserEyess
706735ca88
Support binding the RPC to a Unix socket on *nix platforms (#2574)
* Support binding the RPC to a Unix socket on *nix

This commit adds unix socket support for a RPC. Some refactoring was
required in order to split out the RPC server's address struct from the
normal network address struct used for peers. It would cause
unacceptable overhead to add the unix socket length to the union.

Co-authored-by: Malte Voos <malte@malvo.org>

* add RPC socket mode to control unix socket perms

Unix socket permissions are important to control for security reasons,
and libevent defaults to 0755, which may not be what users want.

Co-authored-by: LaserEyess <LaserEyess@users.noreply.github.com>
Co-authored-by: Malte Voos <malte@malvo.org>
2022-02-23 15:09:54 -06:00
Charles Kerr
13ad2b58dc
refactor: always use a blocksize of 16 KB (#2694)
Fixes #99.
2022-02-23 14:25:06 -06:00
Charles Kerr
a0c25b21af
fixup! refactor: tr_web (#2633) (#2693)
race condition in TR_ASSERT
2022-02-23 11:00:40 -06:00
Charles Kerr
7238724318
refactor: webseed (#2689)
* refactor: reduce nested conditional webseed logic

* refactor: use tr_block_info::Location in webseed

* request larger chunks at a time from webseeds

* fix: CURLOPT_MAXREDIRS to safeguard against loops

Discussion at https://trac.transmissionbt.com/ticket/6110 .
Reported by @x190 and @cfpp2p a few years back.
2022-02-23 07:38:18 -06:00
Charles Kerr
46c7a7c47c
fix: unsupported peer socket type 0 assertion failure (#2687)
* refactor: downgrade unsupported socket type from assertion to log warning

Fixes #833.
2022-02-22 16:10:49 -06:00
Charles Kerr
e6e1e1d220
fix: ensure all bytes read / written to file (#2682) 2022-02-22 11:21:24 -06:00
Charles Kerr
95e30768c4
refactor: rename mediator classes (#2681) 2022-02-22 09:09:24 -06:00
Charles Kerr
5842e8bc74 Merge branch 'main' into fix/bd68d3a-final-info-hash-in-makemeta 2022-02-21 18:02:02 -06:00
Charles Kerr
cbe5a204a8 fixup! refactor: use tr_sha1_digest_t everywhere (#2330)
fix: unreleased regression in makemeta hashes
2022-02-21 18:01:36 -06:00
Charles Kerr
81441706c1 fixup! fix: bitfield assertion failure on zero-byte file
chore: code style
2022-02-21 14:39:00 -06:00
Charles Kerr
4bf613804c fix: bitfield assertion failure on zero-byte file
Fixes #2667.
2022-02-21 14:20:35 -06:00
Charles Kerr
105ac7f104
Merge pull request #2673 from transmission/docs/absorb-the-wiki
docs: move the wiki into `transmission/transmission`
2022-02-21 14:17:42 -06:00
Charles Kerr
aa657bb0ca Merge branch 'main' into docs/absorb-the-wiki 2022-02-21 11:43:28 -06:00
Charles Kerr
d27a6afc29 fixup! refactor: trevent use std:: tools intead of pipes (#2520)
fix event leaked in trevent thread
2022-02-21 11:41:04 -06:00
Charles Kerr
4a20fff2ec fixup! feat: support webseeds in transmission-create (#2611)
fix: small makemeta leak introduced from webseed support
2022-02-21 11:36:55 -06:00
Charles Kerr
e7d3e205d2 chore: update links to rpc-spec.md 2022-02-21 10:39:58 -06:00
Charles Kerr
3780f90ef5 perf: skip some excess announce list rebuilds 2022-02-21 08:34:59 -06:00
Charles Kerr
8d5c900ee0 refactor: Qt, GTK, web client UI consistency 2022-02-21 08:34:59 -06:00
Charles Kerr
581c3f9854 refactor: do not mix torrent, default trackers 2022-02-21 08:34:59 -06:00
Stefan Talpalaru
7b377511a9 feat: default public trackers 2022-02-21 08:34:57 -06:00
LaserEyess
a660485c4a
fix implicit conversion (#2661)
Co-authored-by: LaserEyess <LaserEyess@users.noreply.github.com>
2022-02-19 20:03:57 -06:00
Charles Kerr
06065af5eb
refactor: move tr_netClosePeerSocket() impl to net.cc (#2659) 2022-02-19 12:10:43 -06:00
Charles Kerr
78ad90a4c5
refactor: use tr_block_info::Location in inout.cc (#2658) 2022-02-19 10:07:08 -06:00
SweetPPro
023fbd69f6
magnet links always pause after they get metainfo (#2654)
fix for https://github.com/transmission/transmission/issues/2239

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2022-02-19 09:26:59 -06:00
Charles Kerr
87d9f9b00a
refactor: use tr_block_info::Location in cache.cc (#2652) 2022-02-19 07:45:19 -06:00
Charles Kerr
9688e3ca1e
refactor/remove-unused-utp-includes (#2650) 2022-02-18 18:56:53 -06:00
Charles Kerr
f88f3c4b03
Feat: add tr_block_info::Location (#2649) 2022-02-18 17:17:19 -06:00
Charles Kerr
02b6cc76d1
feat: add tr_torrentSetTrackerList(), tr_torrentGetTrackerList() (#2642)
Add a getter/setter for torrent announce URLs as text that can be copied
and pasted: one URL per line, with a blank line between tiers.

C API: tr_torrentGetTrackerList() and tr_torrentSetTrackerList()
RPC APi: `trackerList` in `torrent-get` and `torrent-set`.

This deprecates `trackerAdd`, `trackerRemove`, and `trackerEdit`
from the RPC API.
2022-02-18 11:52:01 -06:00
Charles Kerr
17cb155451
fix: do not hammer dns servers re-requesting udp trackernames (#2641)
Fixes #1815.
2022-02-17 18:38:11 -06:00
Charles Kerr
29af76d977
refactor: tr_web (#2640)
* fixup! refactor: tr_web (#2633)

fix: race condition in web threadfunc during bootstrap

fixes #2639
2022-02-17 17:35:57 -06:00
Charles Kerr
3042ae5b76
fix: set torrent.doneDate when adding a new seed (#2634) 2022-02-16 17:04:06 -06:00
Charles Kerr
f1a53840f9
refactor: tr_web (#2633)
* refactor: fix tr_web rate limiting and dns caching
2022-02-16 12:33:50 -06:00
Charles Kerr
8805d7c67b
refactor: remove tr_webGetTaskResponseCode() (#2628)
It's not really needed anymore, and removing it is aligned with the
goal of simplifying the tr_web and tr_webseed codebase.
2022-02-14 16:39:52 -06:00
Charles Kerr
0adc6b95de
fix: crash when evdns_base_new() fails (#2627)
Fixes #1437 by checking for nullptr before calling evdns_base_free().
2022-02-14 15:42:30 -06:00
Charles Kerr
f87d737e0f
feat: newly-added seeds skip the full verify step (#2626)
* feat: newly-added seeds skip the full verify step

This has been a much-requested feature but has also been contentious
because I want to ensure that Transmission never transmits unverified
data. See the GH pull request for context on how this works.
2022-02-14 13:17:51 -06:00
Charles Kerr
f78727a4c1
fix: define UTF_CPP_CPLUSPLUS for #include utf8.h (#2625)
Fixes #2256. This ensures that utfcpp's c++17 code is enabled.
2022-02-14 11:54:32 -06:00
Charles Kerr
d772824553
fix: sonarcloud code smells (#2623)
* fix: make variable a pointer-to-const

* fix: use init-statement to reduce variable scope

* fix: implicit conversion from long to int

* fix: refactor to not nest more than 3 if|for|do|while|switch statements

* fix: make tr_session::setSocketTos() const

* fix: use array.prototype.some instead of a for loop

* refactor: use nullptr instead of NULL

* fix: oops
2022-02-13 23:44:38 -06:00
Charles Kerr
94c7208d82
feat: use new envvar TR_CURL_PROXY_SSL_NO_VERIFY (#2622)
Co-authored-by: Andrey Pavlenko <andrey.a.pavlenko@gmail.com>
2022-02-13 22:24:15 -06:00
Charles Kerr
9f9b6cdaa2
feat: run script when done seeding (#2621)
* feat: add seeding-done script to core and rpc

* feat: add seeding-done script to gtk client

* feat: add seeding-done script to qt client

* feat: add seeding-done script to transmission-remote

* refactor: make Qt and GTK client text match

* test: update tests

Co-authored-by: Timothy Nibeaudeau <timothy.nibeaudeau@gmail.com>
2022-02-13 22:07:12 -06:00
Charles Kerr
a822a46e47
refactor: add fetch options object to tr_webRun() (#2620)
* refactor: add fetch options object to tr_webRun()

Fold `tr_webRun()`, `tr_webRunWithCookies()`, and `tr_webRunWebseed()`
into a single API that takes an options argument that callers can
customize to their needs.

Also does a surface cleanup pass to the tr_webseed and tr_web internal
structures, e.g. making fields const where possible, not using raw
pointers, and making some fields private.

This revision is still full of code smells. Refactoring the entire
system is overwhelming, so instead I'm doing it in incremental steps.
2022-02-13 20:09:56 -06:00
Charles Kerr
31cbb3b708
feat: expose downloaded byte count to done script (#2619)
Fixes #1082. The use case is a torrent-done script that needs to know
if a torrent is done because it finished downloading or if it's done
because it's a newly-added seed.
2022-02-13 11:04:34 -06:00
Charles Kerr
83db648b3c
Add support for torrent-get calls with the key percentComplete (#2615)
Co-authored-by: Michael Hadam <michael@hadam.us>
2022-02-13 01:27:47 -06:00
Charles Kerr
96178b1a9f
feat: add support for adding torrents by raw hash values (#2608)
* Add support for adding torrents by raw hash values

Co-authored-by: vjunk <vjunk@mail.ru>
2022-02-12 22:16:55 -06:00
Charles Kerr
dfe79af34c
refactor: tr_webseed simplification (#2613)
* refactor: remove effective-url caching in webseeds

The upcoming CURLSH refactor is a more effective way of doing this and
the current appoach makes tr_web harder to refactor, so remove it.

* refactor: webseed rate limiting

The current code that limits the number of parallel fetches is overly
complicated and is also interwoven into the tr_webseed class. Extract
it into a new private helper class "ConnectionLimiter" with a simpler
public API for tr_webseed to use.
2022-02-12 16:52:40 -06:00
Charles Kerr
cddd400f7e
test: fix race condition in rename-test (#2612) 2022-02-12 13:51:43 -06:00
Charles Kerr
2410ad2fa6
feat: support webseeds in transmission-create (#2611) 2022-02-12 12:50:47 -06:00
Charles Kerr
e14c7f38e5
feat: use libpsl (#2575)
Use libpsl to calculate public and private parts of URL hosts.
2022-02-12 11:30:27 -06:00
Charles Kerr
eeccc3788f
docs: move rpc-spec document from txt to markdown (#2606) 2022-02-11 10:48:21 -06:00
Charles Kerr
6383e2ff5f
feat: support dscp classes in socket iptos (#2594)
* refactor: Replace ToS with DSCP

IP TOS was superseded by DSCP in RFC 2474.

Co-authored-by: dgcampea <dgcampea@outlook.com>
2022-02-10 15:35:28 -06:00
Charles Kerr
7bdb6f777b
refactor: remove callback from tr_torrentVerify() public API (#2592) 2022-02-09 12:02:59 -06:00
Charles Kerr
f105c6ac81
fix: make DNS queries lowercase (#2591)
Fixes #461.
2022-02-08 21:30:45 -06:00
Charles Kerr
318d60b72d
refactor: fix sonarcloud "use enum class" code smells (#2590)
* refactor: prefer constexpr over enum for GUI_PAD values

* refactor: prefer constexpr over enum for PrefsDialog values

* refactor: prefer constexpr over enum for StatsDialog values

* refactor: use enum class for GtrUnicode types

* refactor: prefer constexpr over enum for BT peer msg codes

* refactor: use enum class for TrMakemetaResult

* refactor: prefer constexpr over enum for BT metadata message types

* refactor: use enum class for AwaitingBt

* refactor: use enum class for EncryptionPreference

* refactor: use enum class for TrFormat in rpcimpl

* refactor: prefer constexpr over enum for QApp intervals

* refactor: prefer constexpr over enum for tr_resume bitfields

* refactor: prefer constexpr over enum for Qt/TrFileModel bitfields

* refactor: remove obsolete TODO comment in announce-list
2022-02-08 20:25:19 -06:00
Charles Kerr
a92af9193e
fixup! add labels to torrent-add rpc method (#2539) (#2589)
fix potential memory leak reported by coverity
2022-02-08 19:04:29 -06:00
Charles Kerr
2bf25fbdf5
refactor: fix a pair of win32 msvc warnings in libtransmission (#2588) 2022-02-08 12:50:09 -06:00
Charles Kerr
ba14ffa74c
refactor: sonarcloud "use if init" statements (#2587) 2022-02-07 23:44:31 -06:00
Charles Kerr
ebb2ab6aee
chore: update license spdx abbreviations (#2582)
Use SPDX license list 3.0 terminology: replace deprecated identifiers
GPL-2.0" and "GPL-3.0" with "GPL-3.0-only" and "GPL-3.0-only".
2022-02-07 10:25:02 -06:00
Charles Kerr
ecef0feb0c
refactor: clang-tidy in libtransmission (#2578)
* chore: enable cppcoreguidelines-slicing warning

* chore: enable readability-named-parameter warning

* chore: enable bugprone-reserved-identifier check

* chore: enable bugprone-not-null-terminated-result check

* chore: enable bugprone-sizeof-expression check

* chore: enable bugprone-incorrect-roundings check

* chore: enable misc-misplaced-const check

* chore: enable bugprone-suspicious-include check

* chore: enable bugprone-signed-char-misuse check

* chore: enable modernize-raw-string-literal check

* chore: enable readability-static-accessed-through-instance check

* chore: enable readability-implicit-bool-conversion check

* fixup! Merge branch 'main' into refactor/clang-tidy
2022-02-06 22:28:36 -06:00
bkuhls
a8818148e2
fix cross build (#2576)
Remove redundant include, ${UTP_INCLUDE_DIRS} is included already to fix
cross build error with buildroot:

x86_64-linux-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/libutp'
2022-02-06 01:17:03 -06:00
LaserEyess
5565255d85
add labels to torrent-add rpc method (#2539)
This commit adds labels to the torrent-add method, allowing RPC users to
specify labels when adding a torrent. Labels metadata is commonly known
when adding torrents, so this removes the need to send another
torrent-set call to add labels.

Additionally, transmission-remote is updated to handle labels in
torrent-add.

Co-authored-by: LaserEyess <LaserEyess@users.noreply.github.com>
2022-02-03 00:02:30 -06:00
Charles Kerr
e908193027
fix: some use-init-statement sonarcloud warnings (#2563) 2022-02-01 19:09:11 -06:00
Charles Kerr
878405f862
Revert "fix: sonarcloud (#2558)" (#2562)
This reverts commit 8b9483f7fb.
2022-02-01 11:30:51 -06:00
Charles Kerr
329c4d80e1
fix: edge case file leak if error while making torrent (#2560)
found by Coverity
2022-02-01 01:11:13 -06:00
Charles Kerr
fdff2893b6
refactor: static allocation of formatter units (#2559) 2022-01-31 23:59:43 -06:00
Charles Kerr
8b9483f7fb
fix: sonarcloud (#2558)
* fix: add const modifier for functions

* fix: many sonarcloud use-init-statement warnings
2022-01-31 22:46:27 -06:00
Charles Kerr
cf2c32e1ce
refactor: remove raw ptr variant of tr_peerMgrCompactToPex() (#2556) 2022-01-31 21:11:47 -06:00
Charles Kerr
b645c4cfc5
refactor: use std::chrono not OS-specific syscalls (#2554) 2022-01-31 19:02:59 -06:00
Charles Kerr
5db993d348
chore: iwyu (#2553) 2022-01-31 17:05:35 -06:00
Charles Kerr
7bc668680e
chore: remove unused function tr_strcasestr() (#2552) 2022-01-31 15:59:14 -06:00
Charles Kerr
253f4fe009
chore: remove /upload endpoint from rpc-server (#2550)
It's never been documented or supported and is unused by the web client.

In the unlikely case that a 3rd party app is using it, use 'torrent-add'
instead; it's documented + supported.
2022-01-31 14:54:21 -06:00
Charles Kerr
87dfabb9d2
refactor: replace tr_thread with std::thread (#2548) 2022-01-31 13:34:04 -06:00
Charles Kerr
6f9cba4088
fixup! refactor: SAX-like benc parser pt. 1 (#2490) (#2544) 2022-01-30 21:12:57 -06:00
Charles Kerr
314aa6925d
fix: sonarcloud use-init-statement warnings in new code (#2536) 2022-01-29 16:26:09 -06:00
Charles Kerr
52f6e80a61
test: add tr_torrent_metainfo.infoDictSize() tests (#2535) 2022-01-29 15:37:42 -06:00
Charles Kerr
374c24dde1
refactor: trevent use std:: tools intead of pipes (#2520) 2022-01-28 17:56:46 -06:00
Charles Kerr
9e264250d1
refactor: add benc::Handler::Context (#2531)
Prerequisite for using the new benc parser in tr_torrent_metainfo:
That code needs to know the span of the bencoded info dict.
2022-01-28 16:46:14 -06:00
Charles Kerr
7f60738cce
refactor: use the new benc parser in announcer-http (#2529) 2022-01-28 12:39:45 -06:00
Charles Kerr
b998032305
fix: paused torrents not scraped even if scrape-paused-torrents-enabled setting is true (#2528) 2022-01-27 22:17:11 -06:00
Charles Kerr
3c5442dd7b
test: add tests for parsing http tracker scrape responses (#2527) 2022-01-27 17:18:50 -06:00
Ilkka
020a9e45ae
Add more decimals for low ratios (#2508) 2022-01-25 10:52:22 -06:00
Charles Kerr
02e9fd6b59
fix: use libdeflate_gzip_compress in rpc-server.cc (#2507) 2022-01-24 23:40:01 -06:00
Charles Kerr
064ad6a436
refactor: saxlike benc pt. 2: add announce response parsing tests (#2505) 2022-01-24 22:25:55 -06:00
Charles Kerr
81066aae25
fixup! refactor: use C++ objects in announcer (#2474) (#2502)
fix Jan 22 regression in parsing port numbers from pex
2022-01-24 20:21:35 -06:00
Charles Kerr
ac823f3cc4
fix: sonarcloud warnings in new code (#2500) 2022-01-24 19:05:24 -06:00
Charles Kerr
e83a57efa3
refactor: re-enable some clang-tidy rules (#2498) 2022-01-24 13:07:55 -06:00
Charles Kerr
5efec26a3b
refactor: SAX-like benc parser pt. 1 (#2490)
* refactor: add SAX-like benc parser

This is the first part of a series of PRs whose end goal is to avoid
the overhead of tr_variant when parsing bencoded data, e.g. when
parsing .torrent files on startup or when parsing announce/scrape
tracker responses.

This PR introduces a SAX-like benc parser, reimplements variant-benc
to use the SAX benc parser (so that we don't have two benc parsers),
and updates the benc + variant tests.
2022-01-24 00:30:00 -06:00
Charles Kerr
2329f7541f
refactor: quark's static_assert formatting (#2489)
Slight refactor to libt/quark's static asserts so that the codebase
formats the same between clang-format 12, 13, and 14.
2022-01-23 23:26:14 -06:00
Charles Kerr
43bd736eb4
fixup! [android] Use android logger (#585) (#2488)
clang-format
2022-01-23 21:53:49 -06:00
Andrey
d8dfbbe2d2
[android] Use android logger (#585) 2022-01-23 20:44:43 -06:00
Charles Kerr
b5cbbb7f8f
refactor: clang-tidy 14 (#2487)
get transmission building cleanly with clang-tidy 14
2022-01-23 20:44:14 -06:00
Charles Kerr
26bb9f3440
fix: sonarcloud code smells (#2486) 2022-01-23 18:53:35 -06:00
FX Coudert
a2e30235c4
Make macOS crash reports provide more information (#2471)
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2022-01-23 18:10:06 -06:00
Charles Kerr
e51527203e
refactor: re-enable clang-tidy warnings (#2485) 2022-01-23 16:47:41 -06:00
Peter Bailey
96d9ab5abb
allow stopping torrents in verification states (#715) 2022-01-23 14:46:56 -06:00
Charles Kerr
c5bc3091cc
fixup! NAT-PMP private/public port and lifetime fix (#1602) (#2482)
ensure the value passed to tr_timerAdd() is non-negative
2022-01-23 11:31:20 -06:00
Charles Kerr
fa3cbc3e27
fix: memory leak in upnp (#2481)
Fixes #2480
2022-01-23 11:16:36 -06:00
Esa Varemo
032e01c9d8
Add the option of automatically picking up URLs from the clipboard on window focus (#1633) 2022-01-23 09:57:21 -06:00
Charles Kerr
b45c831bcb
refactor: use C++ objects in announcer (#2474) 2022-01-22 23:41:01 -06:00
Charles Kerr
e0c3a7f3e6
docs: add CONTRIBUTING.md (#2452) 2022-01-21 21:34:23 -06:00
mickaelifs
6c582469fa
NAT-PMP private/public port and lifetime fix (#1602) 2022-01-21 18:07:24 -06:00
Charles Kerr
da4ad59290
fix: in check input before calling tr_sha1_from_string() (#2468)
Fixes #2467
2022-01-21 17:17:49 -06:00
Charles Kerr
4833723651
fixup! fix: don't follow symlinks when removing junk files (#1638) (#1638) (#2470)
code style
2022-01-21 12:39:01 -06:00
Vincent Vinel
ddca909699
fix: don't follow symlinks when removing junk files (#1638) (#1638)
This prevents accidentally following a symlink that points outside of
the torrent's folder and crawling the rest of the drive for junk files
to remove.

This also prevents symlinks that point to a folder from being treated as
real directories, which would cause them to be removed even if the folder
they point to is not actually empty.
2022-01-21 11:53:00 -06:00
LaserEyess
9e5e27adb6
Add bind-address-ipv4 to upnp (#845)
Pass the bind-address-ipv4 to upnpDiscover to allow for upnp to only
use the interface specified. Prevents upnp packet leaks.

Authored-by: LaserEyess <lasereyess@lasereyess.net>
2022-01-21 09:44:45 -06:00
Charles Kerr
2d916ab9a8
fixup! Fixed wrong ipv6 addr used in announces. (#265) (#2464)
fix unused variable warning
2022-01-20 16:34:43 -06:00
vuori
a89b98f9e5
Fixed wrong ipv6 addr used in announces. (#265) 2022-01-20 15:28:04 -06:00
Charles Kerr
df1cca9b57
chore: update copyright years, make notices consistent (#2463) 2022-01-20 12:27:56 -06:00
Charles Kerr
0166b6e688
fix: explicitly use unsigned char when checking isprint() (#2444) 2022-01-18 15:20:49 -06:00
Charles Kerr
8189c68190
fix: remove assert() that shouldn't always be true (#2442)
Fixes #2441.
2022-01-18 12:35:08 -06:00
Charles Kerr
0e3a695af2
fix: string leak regression when udp announces fail (#2440) 2022-01-18 11:20:14 -06:00
Charles Kerr
8d75736ad1
fix: empty torrent filename (#2435)
fix torrents readded due to unremoved cfg files.
2022-01-17 23:14:00 -06:00
Charles Kerr
aa2183c9c5
fix: torrents readded due to unremoved cfg files (#2433)
Fixes #2430.

When removing a torrent, try to remove config filenames under both old
and new filename formats. This prevents torrents from being incorrectly
re-added when old-format files aren't removed.
2022-01-17 20:36:41 -06:00
Charles Kerr
bcf5e4636a
fix: calculate seed ratio by torrent size. (#2424)
Previously was calculated by number of bytes downloaded, which caused
edge cases when those two numbers were not the same, e.g. if the user
already had part of the torrent from another source and only downloaded
a small part. When this happened, the ratio could be very large and use
of seedratio would behave in a way that most people would not expect.

Note, the old behavior has been around for a VERY LONG TIME. Even though
this is a bugfix, it does change semantics. I don't think there is any
third-party code that depends on the old behavior but this is arguably
a breaking change.
2022-01-17 17:16:37 -06:00
Charles Kerr
f415de0626
explicitly use unsigned chars (#2423)
Fixes #2106
2022-01-17 15:13:22 -06:00
Charles Kerr
3036a76beb
fix: sonarcloud code smells (#2421) 2022-01-17 12:39:50 -06:00
Charles Kerr
19ede2b8cd
fixup! refactor: replace tr_info with tr_torrent_metainfo (#2397) (#2415) 2022-01-17 11:44:53 -06:00
Charles Kerr
d8d765c595
refactor: use libdeflate instead of zlib's deflate() (#2405)
Co-authored-by: Mike Gelfand <mikedld@mikedld.com>
2022-01-17 10:20:12 -06:00
Charles Kerr
6b440af32f
fix: potential out-of-range error in io's readOrWritePiece() (#2413) 2022-01-16 12:02:47 -06:00
Charles Kerr
2c09e99515
fix: parse utorrent peer-id version components as hex (#2411) 2022-01-16 10:27:23 -06:00
Charles Kerr
be1e46383d
fix: allow malformed magnet links to be added (#2410) 2022-01-16 09:28:18 -06:00
Charles Kerr
db23ca4c6b
refactor: replace tr_info with tr_torrent_metainfo (#2397)
* refactor: replace tr_info with tr_torrent_metafo
2022-01-15 13:33:57 -06:00
Frank Aurich
41b2a802cf
Fix another integer overflow bug on 32-bit platforms with torrents > 4GB (#2391) 2022-01-12 22:52:36 -06:00
Charles Kerr
b0ee4007ff
refactor: include cleanups (#2392)
* refactor: include <memory> when using shared_ptr or unique_ptr

* refactor: include <cstdio> iff we use it

* refactor: include <cstring> iff we use it

* refactor: include <cstdlib> iff we use it

* refactor: include <string_view> or <string> iff we use it

* refactor: include <array> iff we use it

* refactor: include <ctime> iff we use it

* refactor: include <cctype> iff we use it

* refactor: misc #include cleanups in libtransmission
2022-01-12 20:13:58 -06:00
Charles Kerr
a9284c0a6b
fix: magnet link regression (#2390) 2022-01-11 08:28:14 -06:00
Charles Kerr
43b9d5c147
fix: potential infinite loop when parsing benc (#2389) 2022-01-10 14:27:05 -06:00
Charles Kerr
d2e840c64c
refactor: unstack nested code in tr_torrentSetMetadataPiece() (#2387) 2022-01-09 13:17:53 -06:00
Charles Kerr
dfc06fe918
refactor: use std::vector in tr_info (#2386) 2022-01-09 10:55:09 -06:00
Charles Kerr
7068eb66c1
refactor: migrate makeFilename() to tr_magnet_metainfo (#2385) 2022-01-08 21:03:21 -06:00
Charles Kerr
49f2823d6f
refactor: use std::string in tr_info (#2384) 2022-01-08 17:41:05 -06:00
Charles Kerr
79d244db82
refactor: rename tr_torrent.infoDictSize() (#2383) 2022-01-08 14:05:38 -06:00
Charles Kerr
8b65b660c8
refactor: use std::string in tr_file (#2382) 2022-01-08 12:53:35 -06:00
Charles Kerr
0c16c454ba
refactor: base64 utils (#2381)
base64 encode/decode now take std::string_views and return std::strings
2022-01-08 06:46:25 -06:00
Charles Kerr
385a119fb1
refactor: make tr_torrent aggregates tr_block_info instead of subclassing (#2376) 2022-01-07 13:13:37 -06:00
Frank Aurich
319312596a
fix: integer overflow when calculating sizeWhenDone (#2378)
While the function correctly returns a `uint64_t`, internally a `size_t` variable is used to calculate the accumulated size.
On 32-bit systems (e.g. Raspbian) `size_t` is only 32-bit wide, causing overflow for torrents > 4GB.
2022-01-07 10:48:08 -06:00
Charles Kerr
a5c6168805
refactor: make tr_buildPath() private (#2374) 2022-01-02 11:51:59 -06:00
Charles Kerr
eafbf59832
refactor: avoid referencing tr_file struct directly (#2373) 2022-01-01 19:25:25 -06:00
Mike Gelfand
e56997185e
Fixup construction of temp dir path in deleteLocalData (#2370) 2022-01-01 11:27:03 +03:00
Mike Gelfand
d8d361e491
Make some utility functions return std::string to simplify code (#2368)
* tr_formatter_speed_KBps returns std::string

* tr_formatter_mem_B returns std::string

* tr_formatter_size_B returns std::string

* tr_strpercent/tr_strratio returns std::string
2021-12-31 03:30:21 +03:00
Charles Kerr
26110d5c8e
fix: out-of-bound memory acess sonarcloud warning (#2364) 2021-12-29 21:48:50 -06:00
Charles Kerr
23b7f02100
fix: clear verify_thread before releasing verify mutex lock (#2360)
* fix: clear verify_thread before releasing verify mutex lock

* refactor: increase the verify buffer size

* fix: uniqueness comparison for verify torrents
2021-12-29 13:20:09 -06:00
Charles Kerr
46f9582e36
refactor: prefer std::from_chars over strtoul (#2359) 2021-12-29 02:28:12 -06:00
Charles Kerr
884135d853
fix: sonarcloud (#2356)
* refactor: replace #define with constexpr in some utils

* fix: use-std-string-instead-of-c-array sonarcloud warning

* fix: use init-statement sonarcloud warning

* fix: explain-empty-function sonarcloud warning

* fix: move #include directive to top sonarcloud warning

* fix: replace-void-ptr-arg-with-more-meaningful-type sonarcloud warning

* fix: replace-redundant-type-with-auto warning

* fix: use-init-statement sonarcloud warning

* fix: make type a pointer-to-const sonarcloud warning

* fix: cli tyop

* fix: replace-redundant-type-with-auto warning

* fix: use-init-statement sonarcloud warning

* fix: replace-redundant-type-with-auto warning

* fix: use-init-statement sonarcloud warning

* fix: replace-redundant-type-with-auto warning

* fix: make type a pointer-to-const sonarcloud warning

* fix: make type a pointer-to-const sonarcloud warning

* fix: replace-redundant-type-with-auto warning

* refactor: replace #define with constexpr in rpcimpl
2021-12-28 11:23:47 -06:00
Charles Kerr
88f9704eed
refactor: remove varargs code in tr_sys_file (#2354) 2021-12-28 09:08:04 -06:00
Charles Kerr
c832f3c18c
fix: sonarcloud warnings (#2353)
* fix: remove-redundant-cast sonarcloud warning

* fix: make type a pointer-to-const sonarcloud warning

* fix: use-init-statement sonarcloud warning

* fix: use-init-statement sonarcloud warning

* fix: extract-assignment-from-expression sonarcloud warning

* fix: remove-redundant-cast sonarcloud warning

* fix: extract-nested-block-into-method sonarcloud warning
2021-12-28 01:14:52 -06:00
Charles Kerr
02aa2f46d4
refactor: don't use varargs in tr_error (#2352) 2021-12-27 20:32:22 -06:00
Charles Kerr
fa35b8ad39
refactor: use std::string in tr_variantToStr() (#2351)
* refactor: use std::string in tr_variantToStr()
2021-12-27 16:47:25 -06:00
Charles Kerr
0b095dc258
fix: sonarcloud warnings (#2350)
* fix: use-init-statement sonarcloud warning

* fix: use-init-statement sonarcloud warning

* fix: conversion-loses-precision sonarcloud warning

* fix: use std::string_view::npos sonarcoud warning

* fix: refactor code to not nest more than 3x sonarcloud warning

* fix: conversion-loses-precision sonarcloud warning

* fix: use init-statement sonarcloud warning

* fix: global variables should be const sonarcloud warning

* fix: conversion-loses-precision sonarcloud warning

* refactor: reduce complexity in doScrape()
2021-12-26 18:32:36 -06:00
Charles Kerr
6149870540
refactor: remove tr_file.priv (#2349) 2021-12-26 16:04:20 -06:00
Charles Kerr
fd96a9270b
refactor: remove tr_file.offset (#2347) 2021-12-26 12:43:27 -06:00
Charles Kerr
af183b1423
chore: remove tr_pieceOffset() (#2346) 2021-12-26 11:25:51 -06:00
Charles Kerr
a515c1d94b
refactor: use tr_torrent_metainfo in tr ctor (#2345) 2021-12-26 10:25:07 -06:00
Charles Kerr
3f8cf63e59
refactor: use tr_torrent_metainfo in mac client (#2343) 2021-12-25 21:12:32 -06:00
Charles Kerr
bc4f513191
refactor: use tr_torrent_metainfo in transmission-show (#2341) 2021-12-25 16:41:18 -06:00
Charles Kerr
7c87cb36eb
refactor: tr_torrent_metainfo (#2340)
* refactor: add tr_torrent_metainfo class

Can be used for parsing bencoded .torrent data without instantiating
a tr_torrent. This will be used in all the places where client code
needs to test a .torrent file for validity / to add a preview window
before adding the torrent.
2021-12-25 15:21:13 -06:00
Charles Kerr
0e321c2d21
fix: clang warnings (#2339)
* fix: comparison-is-always-false warning

* fix: C/C++ mixing (memset() to clear a C++ object)
2021-12-25 11:22:12 -06:00
Charles Kerr
b62b8f28bf
fix: exit time dtor warnings (#2338) 2021-12-24 20:07:33 -06:00
Charles Kerr
b058daff4b
refactor: change tr_torrentNew() args (#2337) 2021-12-24 16:05:17 -06:00