Commit Graph

5915 Commits

Author SHA1 Message Date
Charles Kerr c76cb4db51
fix: silence torrent-metainfo warnings for cross_seed_entry, uid (#5365) 2023-04-10 11:07:43 -05:00
tearfur 931beba56f
fix: set log level before constructing tr_session (#5345) 2023-04-03 15:37:28 -05:00
tearfur e68c72daa4
fix: tr_net_hasIPv6() (#5312) 2023-03-28 13:41:07 -05:00
tearfur 85a00625dc
fix: intermediate fix for HTTP announce behaviour affected by `bind-address-ipv*` (#5296) 2023-03-28 12:59:42 -05:00
Mike Gelfand a216bd7cec
Use locale-dependent decimal separators for user-visible numbers (#5288)
This includes percents, ratios, sizes, speeds, etc. coming from shared
formatting helpers. Previously based on sprintf-like functions using
locale, now using libfmt which doesn't use locale by default and needs
to be instructed to do it explicitly.
2023-03-23 19:48:45 -05:00
Cœur 3e97d0b9c2
fix: The right operand of '<' is a garbage value (#5285) 2023-03-23 12:05:11 -05:00
Charles Kerr d63165e8a4
perf: fix wishlist cpu load regression, pt. 2 (#5273) 2023-03-22 10:24:10 -05:00
Charles Kerr 25f38d5ff3
fix: wrong tier value in torrent get tracker stat response (#5274) 2023-03-21 20:23:08 -05:00
Charles Kerr 58ce7bd437
fix: 4.0.2 wishlist CPU perf regression pt. 1 (#5266) 2023-03-20 21:08:16 -05:00
Cœur c60bb5b834
fix: crash when magnet dn isn't utf-8 (#5244) 2023-03-19 10:36:16 -05:00
Charles Kerr 5cc3bf8a97
fix: generate peer-id on launch (#5233) 2023-03-15 20:53:48 -05:00
Charles Kerr 3aeefec203
chore: remove unused header includes (#5227) 2023-03-14 18:36:15 -05:00
Charles Kerr a87d39f3bd
fix: filter out peers with port 1 from DHT peer lists. (#5218) 2023-03-13 19:27:47 -05:00
Charles Kerr 6224b60728
fix: wrong error message when writing to incomplete dir (#5217) 2023-03-13 16:20:39 -05:00
Colin B 59a157ebde
feat: restore support for nonstandard `path.utf-8` (#3454) 2023-03-13 13:58:59 -05:00
Charles Kerr dabd29f2b2
fix: std::clamp() assertion failure in maxAvailableReqs() (#5203) 2023-03-11 22:25:21 -06:00
Charles Kerr 900281eb1c
fix: check tr_ctorSetFoo() return values before adding torrent via RPC (#5202) 2023-03-11 19:44:54 -06:00
Charles Kerr 86fd89fff4
fix: remove interest strategy code that could contribute to oscillating download speeds. (#5176) 2023-03-10 13:21:51 -06:00
Charles Kerr b354337720
ci: check for clang tidy errors in libtransmission (#5188) 2023-03-10 00:23:22 -06:00
reardonia 9c436d87dd
fix: torrentGet.wanted RPC breaking change in [4.0.0..4.0.1] (#5170) 2023-03-07 19:44:25 -06:00
Charles Kerr 033d698306
fix: parsing of ipv6 tracker announce URLs (#5174) 2023-03-07 12:19:12 -06:00
Charles Kerr 39e3e1d87b
fix: increase priority of first and last piece of each file (#5167)
The first and last pieces of a file generally include information needed
by preview generators, so prioritizing those pieces makes life easier
for users or tools that look at files while they're being downloaded.

This worked in 3.00 but isn't present in 4.0.0.
2023-03-06 15:50:19 -06:00
reardonia 56c1bb2a9e
fix: publish 'leechers' iff it was in tracker response (#5164) 2023-03-06 09:22:40 -06:00
Charles Kerr b2b0f0db39
fix: crash in curl_easy_pause() (#5161) 2023-03-05 23:42:52 -06:00
Charles Kerr 47001a394e
fix: 7f9ef4730 use-after-free in peerMsgs::canRead (#5152) 2023-03-05 11:50:11 -06:00
Charles Kerr 7f9ef4730e
fix: assertion failure in readBtPiece() (#5097) 2023-03-03 17:43:51 -06:00
Daniel Kamil Kozar 848212eea1
fix: escaped representation of non-BMP characters when generating JSON (#5096) 2023-03-02 00:55:16 -06:00
Charles Kerr d3273504bd
fix: 5053 old torrent files keep appearing (#5117) 2023-03-01 20:12:19 -06:00
Charles Kerr 211e3fc985
fix: always add `announce` key even when including announce-list (#5106) 2023-03-01 13:10:20 -06:00
Cœur 63653b4831
fix: recheckCompleteness on setDownloadDir (#5060) 2023-02-28 08:51:11 -06:00
Charles Kerr 1a276fb145
fix: 4.0.0 bookkeeping of protocol overhead when receiving peer messages (#5091) 2023-02-27 20:25:15 -06:00
Charles Kerr f53e58c8bd
fix: 4.0.0 regression that broke speed limits for utp peers (#5086) 2023-02-27 15:03:45 -06:00
Charles Kerr ac319321b5
fix: assertion failure in std::clamp() when called from rechokeDownloads() (#5080) 2023-02-27 11:59:00 -06:00
HAkos1 238fd96041
fix: don't log full path, only the filename of source file (#5055)
Co-authored-by: Akos Horvath <koma@koma.sh>
2023-02-27 10:02:58 -06:00
Charles Kerr 47fd150bab
fix: some torrents think they are magnets (#5025) 2023-02-25 07:11:19 -06:00
Mike Gelfand 81f8ceb0f9
Limit in-kernel file copying to 2 GiB blocks at a time (#5039)
This reportedly helps with copying to cifs target where
`copy_file_range()` would sometimes return `EINVAL` for no apparent
reason when copying large files. Extending the limit to `sendfile64()`
to avoid similar issue there, if it exists.

Overall, copying at most 2 GiB at a time will result in more syscalls
but shouldn't affect the performance gain in any noticeable way.
2023-02-25 03:15:17 +00:00
wiz78 450e98fd91
fix: TR_TIME_LOCALTIME value in torrent scripts (#5006) 2023-02-23 07:18:29 -06:00
Charles Kerr 9d1a141482
fix: cannot build with clang on Windows (#4978)
Fixes #4977.
2023-02-21 11:08:28 -06:00
Charles Kerr ed8133520f
fix: blocklists allocate more memory than they need (#4953) 2023-02-19 09:20:23 -06:00
Charles Kerr e29064023f
fix: try utp connection first; fix utp timeout issues. (#4897) 2023-02-18 10:03:59 -06:00
Charles Kerr adf5051d46
fix: revert tr_torrentStat() acquires a session thread lock (#4571)
This reverts commit e4b480ecd4.
2023-02-17 23:11:24 -06:00
Mike Gelfand b3abadf8ba
Bump bundled libutp to rollback anonymous unions fix (#4877) 2023-02-18 02:59:15 +00:00
goldsteinn 1e5546280e
fix: Remove faulty `popcnt` features checks for MSVC [#4872] (#4886)
The `popcnt` feature checks weren't actually checking the ISA feature
or cpuid. This caused an illegal instruction exception on x86 hardware
that doesn't support `popcnt` when compiled with MSVC.

Since MSVC doesn't support any x86 ISA defines, the only way to check
for `popcnt` is with cpuid. Since this is a tiny inline function,
dynamic dispatch is likley not worth it so just removing the MSVC
for `popcnt`. MSVC will now fallback to the generic implementation.
2023-02-18 02:11:56 +00:00
Cœur 9b69c7d5ff
Don't force fetch metainfo at startup and new torrents. (#4895) 2023-02-14 22:19:47 -06:00
Charles Kerr 4461aa68d9
fix: handle block fragments that arrive from peers out-of-order (#4890) 2023-02-14 13:50:28 -06:00
Charles Kerr 9d91d1e969
fix: checksum of pieces that don't align on block boundaries (#4880) 2023-02-13 20:57:20 -06:00
Charles Kerr a982c96518
fix: assertion failed leftUntilDone <= sizeWhenDone (#4879) 2023-02-13 19:51:23 -06:00
Charles Kerr f551b4adbf
fix: magnet links are always paused when added (#4856) 2023-02-13 12:33:33 -06:00
Thomas Klausner 62a60b4ea4
fix: link libquota on NetBSD to fix FTBFS (#4863) 2023-02-13 12:04:14 -06:00
Charles Kerr a2faaabe69
chore: remove invalid assertion test (#4860)
Fixes #4078.
2023-02-12 18:38:18 -06:00
Cœur 649fd4d0d2
fix: do not lose magnet links when upgrading from tr3 to 4 (#4840) 2023-02-12 18:10:54 -06:00
Cœur 0be7091eb1
Revert "fix: remove abort() call from tr_assert_message() (#4696)" (#4851)
This reverts commit 0493542f62.
2023-02-12 08:16:20 -06:00
Charles Kerr b7099270b6
fix: tr_swarm order of destruction (#4847) 2023-02-12 00:30:30 -06:00
Charles Kerr 8cee2f952e
fix: port forwarding flag not saved between sessions (#4842) 2023-02-11 20:49:16 -06:00
Charles Kerr ba679a814f
fix: try a tcp peer connection before a utp one. (#4826) 2023-02-11 16:14:32 -06:00
Julien 4b8cfa2e57
chore: update copyrights to 2023 (#4834) 2023-02-11 14:49:42 -06:00
Berbe b155374137
fix: add nullptr dereference safguard in announcer code 2023-02-11 08:25:28 -06:00
Daniel Kamil Kozar e0753fedb9
fix: put "private" and "source" inside the metadata "info" key (#4809) 2023-02-10 20:33:24 -06:00
Charles Kerr d0b148c033
fix: misleading error message when resume file is missing (#4799)
Fixes #4712.
2023-02-10 14:01:39 -06:00
Charles Kerr 0c582c6d7e
fix: race condition in RPC (#4725) 2023-02-06 10:42:37 -06:00
Charles Kerr 6c99e95463
fix: ensure ipv4 for udp announces. (#4723)
This is an interim fix to unblock 4.0.0. See ticket 4719 for details.
2023-02-05 23:31:10 -06:00
SweetPPro 1e988c9ce4
fix magnet link start logic (#4528) 2023-02-02 00:19:20 -06:00
Charles Kerr 0493542f62
fix: remove abort() call from tr_assert_message() (#4696) 2023-02-01 18:19:40 -06:00
Cœur 61fa6f6088
Fix WebUtilsTest.urlParse and psl_builtin for Xcode (#4642) 2023-01-31 23:51:04 -06:00
Dmitry Antipov 52d49b84eb
perf: optimize the only block case in Cache::writeContiguous() (#4679) 2023-01-30 12:04:40 -06:00
Charles Kerr e35d65bf4c
fix: call setHasPiece(piece, false) on checkPiece fail (#4665) 2023-01-29 19:46:26 -06:00
Charles Kerr 0e5f7f86d7
fix: coverity warnings (#4687)
* fix: minor tr_error leak warning in tests

* fix: socket leak in tr_globalIPv6()
2023-01-29 16:49:59 -06:00
Charles Kerr 724a0f48f0
fix: clang-tidy header warnings (#4686) 2023-01-28 17:58:20 -06:00
Charles Kerr 93db8f088a
fix: cppcoreguidelines-pro-type-cstyle-cast (#4685)
* fix: libtransmission cppcoreguidelines-pro-type-cstyle-cast

* fix: libtransmission cppcoreguidelines-avoid-do-while

* refactor: inline static class fields

* fix: libtransmission cppcoreguidelines-avoid-reference-coroutine-parameters

* fix: announcer.cc cppcoreguidelines-narrowing-conversions
2023-01-28 15:26:23 -06:00
Charles Kerr 948f597d15
refactor: buffer snake case (#4682) 2023-01-27 20:12:09 -06:00
Charles Kerr c75f9a4a7a
refactor: tidy libtransmission symbol visibility (#4680) 2023-01-27 14:25:08 -06:00
Charles Kerr 568b23374c
chore: don't warn on ECONNREFUSED to peer sockets. (#4678)
Fixes #1031.
2023-01-27 00:00:00 -06:00
Charles Kerr 5a8aab2c2d fixup! fix: omit curlopt options if curl is old (#4675) 2023-01-26 16:03:11 -06:00
Charles Kerr b1744d513e
fix: omit curlopt options if curl is old (#4675) 2023-01-26 12:52:32 -06:00
Charles Kerr aabf1b7e0a
fix: remove CURL_VERSION_BITS macro (#4673)
Fixes #4671.
2023-01-26 11:25:53 -06:00
anarcat 331e1699bc
add remote HTTPS support to Qt GUI (#4622) 2023-01-26 00:24:04 -06:00
Charles Kerr c81d0b130c
refactor: add tr_error_set_from_errno() (#4662) 2023-01-25 12:20:10 -06:00
Charles Kerr 977a190646
fix: msvc warnings (#4651)
* fix: C4189 local variable is initialized but not referenced

* fix: C4706 assignment within conditional expression

* fix: C4018 signed/unsigned mismatch

* fix: warning C4996 High-DPI scaling is always enabled.

* fix: C4996: QApplication::fontMetrics() is deprecated

eed5514eaf
2023-01-23 19:24:52 -06:00
Cœur c89edcd1f6
underscores in documentation comments should be code escaped (#4639) 2023-01-23 10:26:11 -06:00
Charles Kerr 7367d465b5
style: use the new paragraph comment style everywhere (#4634) 2023-01-22 13:21:30 -06:00
Charles Kerr 0f4077a445
fix: announcer not updated after torrent announce list edited (#4635) 2023-01-22 11:53:08 -06:00
Charles Kerr 43bb4bc1c8
refactor: remove unused declarations from tr-macros.h (#4630) 2023-01-21 17:53:58 -06:00
Charles Kerr b5c9e3d697
fix: clang-tidy warnings in libtransmission/transmission.h (#4628) 2023-01-21 13:49:43 -06:00
InsaneKnight 8755207dcf
fix: semantics for tr_peer_socket dtor, move ctor, and move assignment
Default implementations for these functions may leak sockets during
destructing and moving.
2023-01-20 02:28:56 -06:00
Dmitry Antipov 770da79cf3
daemon: check whether log file is regular and may be flushed (#4612) 2023-01-18 12:46:57 -06:00
Charles Kerr 33a7d131b4
feat: add setting to choose between lazy-verify or full verify (#4611) 2023-01-18 02:09:29 -06:00
Charles Kerr 3bc1a1be04
fix: when setting Accept-Encoding to identity, disable curl decoding. (#4609)
Also, change `CURLOPT_ENCODING` usage to `CURLOPT_ACCEPT_ENCODING`.
This key was renamed upstream in 7.21.6; our CURL_MINIMUM is 7.28.0.

Fixes #753.
2023-01-17 16:07:10 -06:00
Cœur e4c5981545
feat: log which tracker is giving a warning (#4544) 2023-01-17 01:46:43 -06:00
Charles Kerr acd5d28fb1
fix: handle webseed servers that do not serve partial content (#4601)
Fixes #4595.
2023-01-16 15:08:25 -06:00
Dmitry Antipov bd461e1081
refactor: use std::function for announcer callback (#4575) 2023-01-15 12:37:54 -06:00
Dmitry Antipov acbf483bae
refactor: switch to C++11-compatible tr_wait() from tr_wait_msec() (#4576) 2023-01-12 12:03:14 -06:00
Dmitry Antipov a5c7b65869
perf: avoid extra time() call (#4577) 2023-01-11 09:26:58 -06:00
Dmitry Antipov 0af121004c
chore: remove unused callback arg (#4573) 2023-01-10 14:47:53 -06:00
Charles Kerr e4b480ecd4
fix: tr_torrentStat() acquires a session thread lock (#4571) 2023-01-10 09:05:31 -06:00
Charles Kerr 2b89ee508b
feat: change 403 error message (#4567) 2023-01-09 10:52:19 -06:00
Charles Kerr 8b1290c895
build: remove explicit iconv dependency in libtransmission (#4565) 2023-01-08 22:21:31 -06:00
Charles Kerr d9278bd167
refactor: misc-use-anonymous-namespace pt. 5 (#4552) 2023-01-07 16:55:00 -06:00
Charles Kerr cb10255ef1
refactor: misc-use-anonymous-namespace pt. 4 (#4550) 2023-01-07 12:58:16 -06:00
Charles Kerr 9678b26984
refactor: misc-use-anonymous-namespace pt. 3 (#4539) 2023-01-07 08:27:54 -06:00
Charles Kerr cc4cbff049
refactor: misc-use-anonymous-namespace pt. 2 (#4538) 2023-01-04 22:16:22 -06:00
Charles Kerr 634b1e8fc1
fixup! fix: Couldnt send to IPv6 address warnings (#4527) (#4537) 2023-01-04 18:18:22 -06:00
Charles Kerr b47c34726b
refactor: tr_peer_socket keeps track of peer count (#4534) 2023-01-04 15:37:55 -06:00
Charles Kerr bd61bd2558
refactor: use anonymous namespace in rpc-server.cc (#4530)
refactor: use anonymous namespace in rpcimpl.cc
2023-01-03 22:24:12 -06:00
Charles Kerr ee0877c99d
refactor: fix readability-redundant-string-cstr warnings found by clang-tidy-16 (#4529) 2023-01-03 21:43:54 -06:00
Charles Kerr dc968892ec
fix: Couldnt send to IPv6 address warnings (#4527) 2023-01-03 21:12:05 -06:00
Charles Kerr 1e521b9030
fix: -Wredundant-decls warning when building with g++ (#4526) 2023-01-03 15:26:04 -06:00
Charles Kerr 106bcbbe7b
fix: clang-tidy-15 warnings (#4525) 2023-01-03 14:10:12 -06:00
Mike Gelfand 105d23c09e
Fix clang-tidy issue in `iconv` 2nd argument helper (#4520)
Since operators were intentionally implicit and we don't want to add more
`NOLINT` comments than necessary, rework the approach to deduce the argument
type instead and cast to it.
2023-01-02 22:59:53 +00:00
Charles Kerr eb27220662
perf: avoid vector temporary in announcer-udp (#4519) 2023-01-02 12:41:47 -06:00
Charles Kerr 2d2a5e1ad6
refactor: more constexpr (#4518) 2023-01-02 11:34:36 -06:00
Mike Gelfand 57e6b06921
Modernize CMake code (ongoing refactoring) (#4515)
* Use imported CMake target for CURL

* Use imported CMake target for fmtlib

* Use imported CMake target for WideInteger

* Use imported CMake target for FastFloat

* Use imported CMake target for UtfCpp

* Use imported CMake target for Threads

* Use imported CMake target for Iconv

* Use imported CMake target for crypto backend

* Use imported CMake target for GTK

* Use imported CMake target for Qt

* Use imported CMake target for deflate

* Use imported CMake target for libevent

* Use imported CMake target for natpmp

* Use imported CMake target for miniupnpc

* Use imported CMake target for dht

* Use imported CMake target for psl

* Use imported CMake target for libutp

* Use imported CMake target for libb64

* Use include directories from libtransmission target
2023-01-02 16:23:51 +00:00
Charles Kerr 806491232b
refactor: add constexpr (#4514) 2023-01-01 22:43:23 -06:00
Charles Kerr 24eb6ef293
fix: use SO_REUSEADDR when binding UDP ports (#4513)
* fix: use SO_REUSEPORT when binding UDP ports

* chore: cast 3rd arg of setsockopt
2023-01-01 20:36:20 -06:00
Charles Kerr d338eb3bdc
refactor: simplify tr_udp_core::sendto() (#4510) 2023-01-01 17:16:13 -06:00
Charles Kerr 47ebb3f63a
refactor: remove obsolete lightweight build option (#4509) 2023-01-01 16:24:12 -06:00
Mike Gelfand bc380511db
Modernize CMake code (ongoing refactoring) (#4507)
* Reformat CMake code

* Bump minimum CMake version to 3.12

* Add target sources separately via `target_source()`

* Make `tr_win32_app_info()` add target sources on its own

* Don't use `include_directories()`

* Don't use `add_definitions()`

* Limit use of `add_compile_options()`

* Move VDKQueue target declaration to a subdirectory

* Add `tr_disable_source_files_compile()` helper

* Add `tr_target_glib_resources()` helper

* Add `tr_gettext_msgfmt()` helper

* Enable AUTOUIC for Qt client

* Enable AUTORCC for Qt client

* Remove AUTO{MOC,RCC,UIC} source group overrides

* Add `tr_target_idl_files()` helper

* Move source group setup to `tr_qt_add_translation()`

* Add `tr_target_xib_files()` helper

* Prefer `target_sources()` to intermediate variables

* Use explicit visibility versions of `target_*()` commands

* Prefer genexes to conditions in `target_*()` commands

* Add `tr_allow_compile_if()` helper

* Leave only top-level `project()`, remove the rest

* Minor fixups

* Fixup Mac QL plugin install

* Fixup IDE target folders and source groups
2023-01-01 19:49:48 +00:00
Charles Kerr 453836f324
refactor: make announce key param unique per-torrent (#4508) 2023-01-01 13:22:50 -06:00
Charles Kerr 611b181a99
feat: add `yourip` to extension protocol handshake (#4504)
* feat: add yourip to the extension protocol handshake
2023-01-01 12:20:46 -06:00
Charles Kerr db38f9aa2c
fix: remove announce ipv4 ipv6 query params (#4502) 2022-12-31 13:13:59 -06:00
Charles Kerr 53f5a33616
fix: fix omitted fmt call (#4494) 2022-12-31 10:49:27 -06:00
Mike Gelfand f7edcfcb2a
Drop obsolete CyaSSL and PolarSSL crypto backends (#4495)
* Drop support for CyaSSL (keep WolfSSL)

* Drop support for PolarSSL (keep MbedTLS)
2022-12-29 22:38:04 +00:00
Charles Kerr 2b90a5fd55
refactor: possible FTBFS fix on arm7 (#4492)
* refactor: possible FTBFS fix on arm7

* chore: remove tr_rand_int_weak() from crypto-test-ref

* refactor: move tr_rand_int() to header
2022-12-29 10:30:03 -06:00
Charles Kerr 5ce503f1ab
refactor: udp_core constructor (#4469)
* refactor: udp_core constructor

* refactor: invert dependency between tr_session.publicAddress() and tr_globalIPv6()
2022-12-28 02:03:35 -06:00
Mike Gelfand 5fd0aff818
Automatically (re)order include directives (GTK client) (#4475)
* Automatically (re)order include directives (GTK client)

Include our headers first to ease IWYU enforcement.

* Fix includes missing from headers (GTK client)

* Fix build on Mac after includes reordering
2022-12-26 21:13:21 +00:00
Charles Kerr ab9e971903
refactor: tr_globalIPv6() returns a std::optional<tr_address> (#4464) 2022-12-25 07:55:51 -06:00
Charles Kerr a3f561bcc0
refactor: add tr_address.is_global_unicast_address() (#4462)
Was previously private to net.cc. Expose here so that we can add tests.

Add tests.
2022-12-24 18:53:50 -06:00
Charles Kerr 1402cb2949
refactor: add TR_CONSTEXPR20 to make future C++20 migration easier (#4457) 2022-12-23 15:21:40 -06:00
Cœur 559b759ea0
Fix tr_torrent_view incorrectly returning is_folder false for single files in a single folder (#4454) 2022-12-23 13:52:16 -06:00
Cœur 3cee8bae36
Fixed crash on exit while downloading from webseed (#4451) 2022-12-23 11:34:08 -06:00
Charles Kerr 14a3d01e45
fix: sonarcloud (#4453) 2022-12-23 10:56:27 -06:00
Charles Kerr a1892f2c7c
fix: 4.0.0-beta.2 regression transmission-show --scrape did not exit cleanly (#4447) 2022-12-23 08:03:26 -06:00
Charles Kerr 07a5e560b7
fixup: peer counts (#4445) 2022-12-22 17:43:36 -06:00
Charles Kerr 4549cc74a0
refactor: add tr_torrent::do_idle_work() (#4434) 2022-12-21 17:21:28 -06:00
Charles Kerr c74ac4f4ed
perf: cache the peer, atom count instead of always recomputing it (#4431) 2022-12-21 12:07:40 -06:00
Charles Kerr 092d411663
refactor: tr_rand_buffer(), tr_rand_int() again (#4415) 2022-12-21 09:58:32 -06:00
Charles Kerr e17da3e19e
refactor: xunused (#4416)
* chore: remove unused function gtr_combo_box_new_enum()

* chore: remove unused function gtr_priority_combo_new()

* chore: remove unused function tr_logLevelToKey()

* refactor: remove unused tr_sessionGetDeleteSource()

* refactor: remove unused peer_atom::isValid()
2022-12-20 18:48:36 -06:00
Charles Kerr 1e734f36b1
perf: cache the result of thread_current_id() (#4425) 2022-12-20 14:59:02 -06:00
Charles Kerr ebc93788ce
perf: make bandwidth.allocate() bidirectional (#4424)
Previously `bandwidth.allocate()` was called twice in a row, once for
upload bandwidth and once for download bandwidth.

It has some semi-expensive housekeeping though, so avoid doing that work
twice by having a single call to `bandwidth.allocate()` operate on both
up and down bandwidth.
2022-12-20 13:49:37 -06:00
Charles Kerr 5493ed644e
refactor: use tr_rand_buf() in tr_bandwidth::phaseOne() (#4404) (#4411) 2022-12-19 17:31:24 -06:00
Charles Kerr d290ece0c8
perf: recycle DH MSE keys iff peer was unreachable (#4412) 2022-12-19 16:49:26 -06:00
Reed Morrison edfce44d35
refactor: remove unused UTP Socket code. (#4409) 2022-12-19 15:16:46 -06:00
Charles Kerr 5743758edd Revert "perf: recycle Diffie-Hellman keys iff peer was unreachable (#4408)"
This reverts commit 35a0211118.
2022-12-19 15:12:33 -06:00
Charles Kerr 35a0211118
perf: recycle Diffie-Hellman keys iff peer was unreachable (#4408) 2022-12-19 14:45:01 -06:00
Charles Kerr 76db72bc4b
perf: lazy-calculate torrent seconds-seeding stat (#4393) 2022-12-18 22:59:58 -06:00
Charles Kerr 9e6ffa351c
perf: reduce excess rand() calls in tr_bandwidth::phaseOne() (#4404) 2022-12-18 13:24:46 -06:00
Mike Gelfand 128cf34123
Move jsonsl and wildmat to third-party (#4402)
* Move jsonsl to third-party

This treats it as proper 3rd-party code to which our warning and style
settings don't extend.

* Move wildmat to third-party

This treats it as proper 3rd-party code to which our warning and style
settings don't extend.

* Fixup Xcode project to match new project structure
2022-12-18 19:19:07 +00:00
Charles Kerr 28b12f091f
perf: remove libtransmission::Buffer.vecs() (#4401)
Its two calls to evbuffer_peek() used 3.5% of CPU use (measured with perf
when built with RelWithDebInfo). I added vecs() so that libtransmsision
could send noncontiguous buffers via utp_writev(); but in my testing, all
the buffers being sent are contiguous and so this is unnecessary work.
2022-12-18 12:09:02 -06:00
Charles Kerr cc4141c619
fixup: 3899255 (#4394) 2022-12-18 11:18:25 -06:00
Cœur 4ff59b715d
Fixed implicit conversion warning: __LINE__ is a long (#4397) 2022-12-18 10:23:44 -06:00
Mike Gelfand e694c3e3a0
Use C++ (not C) warning flags for GTK client (#4395)
Use the opportunity to reduce duplication.
2022-12-18 01:02:03 +00:00
Charles Kerr 3899255f1c
fix: tear down utp _after_ peer-mgr (#4383) 2022-12-17 14:10:10 -06:00
Charles Kerr 616e79c0a8
refactor: group related tr_peerIo methods together (#4380)
* refactor: group related functions together in the source

* refactor: make tr_peerIo::decrypt() private

* refactor: make tr_peerIo::is_seed() private

* refactor: remove unused tr_isPeerIo()
2022-12-16 17:21:01 -06:00
Charles Kerr e6d75a4b77
refactor: tr_peerIo (#4372) 2022-12-16 01:23:12 -06:00
Cœur 669faf7474
Dropped tr_rand_int_weak where possible. (#4271) 2022-12-14 12:21:56 -06:00
Ștefan Talpalaru b0eaec47cd
fix: re-enable port forwarding (#4343) 2022-12-14 01:31:48 -06:00
Charles Kerr 6f1153cae4
refactor: tr_handshake (#4362) 2022-12-13 19:58:39 -06:00
Cœur 4a80f800a6
Fixed crash on exit in tr_utpPacket (#4348) 2022-12-13 16:51:54 -06:00
Charles Kerr 2f6315b649
refactor: tr_handshake lifecycle (#4358) 2022-12-13 11:59:21 -06:00
Cœur 9e0b42a61d
Fixed logic in tr_wildmat (#4353) 2022-12-12 16:35:40 -06:00
Cœur 7814e0736e
Fixed tr_bitfield::operator|= range (#4351) 2022-12-12 02:23:59 +00:00
Charles Kerr 5bd4f007ac
fix: remove invalid assertion from bitfield code (#4346) 2022-12-10 14:54:22 -06:00
Charles Kerr 0a69685a4e
refactor: tr_address cleanup (#4338)
* refactor: move tr_tracker_http_announce() helper funcs into their own namespace

* refactor: move tr_globalIPv6() helper funcs into their own namespace

* refactor: move tr_address_is_valid_for_peers() helper funcs into their own namespace

* refactor: make tr_address_compare() a private method

* refactor: rename tr_address::isIPv4() to is_ipv4()

* refactor: use snake_case for tr_address methods

* refactor: make tr_address_is_valid_for_peers() a member function
2022-12-08 20:27:52 -06:00
Charles Kerr 0061e4f9a9
refactor: tr_address::display_name() (#4335) 2022-12-08 16:44:19 -06:00
Charles Kerr f176bb299a
fix: broken detection of peer udp port (#4334) 2022-12-08 14:44:39 -06:00
Charles Kerr e06e304cc8
refactor: fix shutdown order of utp (#4331) 2022-12-06 14:28:48 -06:00
Charles Kerr 22a3a5db25
refactor: peer-socket pt 2 (#4326)
* refactor: tr_netOpenPeerSocket() now takes a tr_address reference

* refactor: disable copy assignment, copy constructor

* refactor: move log statements to peer_socket constructor
2022-12-06 10:28:28 -06:00
Charles Kerr 9a5d9a0ba2
refactor: tr_peer_socket (#4325)
* refactor: make tr_peer_socket.type private

* refactor: reimplement tr_peerIo::address() as a wrapper around tr_peer_socket::address()

* refactor: remove tr_address, tr_port from tr_peerIo

* refactor: replace tr_netClosePeerSocket() with tr_peer_socket::close()
2022-12-05 18:53:31 -06:00
Charles Kerr 468310300c
refactor: only need a single handshake mediator (#4322) 2022-12-05 11:47:11 -06:00
Charles Kerr 728e5b8350
refactor: stop tracking peerIo creation time (#4300) 2022-12-02 10:39:46 -06:00
Dmitry Antipov bf6c80ae35
refactor, ci: switch clang-format to LLVM 15 (#4297)
Bump required clang-format version to 15
2022-12-02 09:57:50 -06:00
A Cœur a656b3b8c9
fix: tr_rand_int modulo bias and fixed tr_rand_int for values larger than INT_MAX. (#4235) 2022-11-30 22:58:14 -06:00
Charles Kerr a7261526ac
fix: shut down utp sooner during session shutdown (#4287) 2022-11-30 16:35:10 -06:00
A Cœur e038121857
refactor: second log of UTP errors as 'trace' messages (#4283) 2022-11-30 14:06:08 -06:00
Charles Kerr f03fc9270b
Fix/long shutdown crash on shutdown (#4285) 2022-11-30 13:00:34 -06:00
Charles Kerr 595d0ac14a
refactor: add tr_announcer.startShutdown() (#4280) 2022-11-29 21:05:11 -06:00
Charles Kerr eeaefca6f3
refactor: UDP and TCP announces use same timeout interval (#4279)
* refactor: move announce, scrape timeout intervals into announcer-common.h

* refactor: udp and http announces, scrapes use same timeout vals
2022-11-29 19:38:53 -06:00
Charles Kerr 22d12aedc5
refactor: GTK favicon lookup improvements (#4278) 2022-11-29 18:09:32 -06:00
Charles Kerr 8900a1646e
refactor: do not report peer EOF as an error (#4275) 2022-11-29 10:48:20 -06:00
Charles Kerr 59335eac03
fix: sonarcloud cpp:S6004 (#4270)
reduce scope of variables by using if-based initializer
2022-11-28 21:03:28 -06:00
Charles Kerr 4adda4dc1e
fix: sonarcloud cpp:S6005 (#4268) 2022-11-28 18:26:03 -06:00
Charles Kerr af9f1b4e42
fix: potentially incorrect error message in rpc-server whitelist (#4264)
Fixes #928.
2022-11-28 15:46:30 -06:00
Charles Kerr f27c5fa0fa
refactor: make some local pointer vars pointer-to-const (#4262) 2022-11-28 09:45:39 -06:00
Charles Kerr 14dfafde32
refactor: add std::unique_ptr<evhttp> handler to utils-ev (#4261) 2022-11-28 08:07:04 -06:00
Charles Kerr 0ee93068bb
fix: TR_TORRENT_LABELS env var in scripts (#4260) 2022-11-27 21:59:45 -06:00
Charles Kerr 0efb96124b
perf: remove cpu bottleneck in tr_peerIo::write() (#4258) 2022-11-27 20:46:03 -06:00
Charles Kerr 49393daf01
refactor: use std::optional.value_or() (#4255) 2022-11-27 14:56:34 -06:00
Charles Kerr 33c1098ea0
refactor: reduce scope of TR_NATIVE_EOL_STR, TR_NATIVE_EOL_STR_SIZE (#4254) 2022-11-27 12:11:25 -06:00
Charles Kerr 3dd5cb439d
chore: updsate mime-types (#4246)
just running mime-types.js
2022-11-26 09:03:39 -06:00
Charles Kerr ec6cb67c5c
fix GTK client message log window does not restore level selection (#4242)
* fix: save log level, encryption mod, preallocation mode as ints

* fix: ensure log level is saved in tr_sessionGetSettings()

* fix: ensure the right verbosity row is selected
2022-11-26 07:32:51 -06:00
Charles Kerr feeea2649e
refactor: make tr_announcer.key a uint32_t (#4241) 2022-11-25 19:11:55 -06:00
Charles Kerr 8a35aa0903
refactor: add tr_rand_obj() (#4238)
* refactor: add tr_rand_obj()

There are a lot of places in the codebase where we need to populate
an integral type or a fixed-size array with random data. To do this,
we instantiate a local on the stack, fill it with tr_rand_buffer(),
and then use it.

This PR creates a helper function to make this a one-liner.
2022-11-25 15:04:37 -06:00
A Cœur 342484d14a
refactor: log UTP_ETIMEDOUT errors to 'trace' messages (#4237) 2022-11-25 14:44:49 -06:00
Charles Kerr 554ba06ae2
fix: coverity warnings, sonarcloud code smells (#4232) 2022-11-24 10:17:02 -06:00
Charles Kerr 19bc15523f
fix: new sonarcloud, coverity, gcc warnings (#4229) 2022-11-23 13:47:04 -06:00
Charles Kerr 046ba32d33
fixup: heap-use-after-free in announce, scrape response on shutdown (#4228)
fixes #4222.
2022-11-23 01:38:31 -06:00
Charles Kerr a8f2b840f7
perf: improve tr_peerMgrGetDesiredAvailable() (#4226) 2022-11-22 23:26:10 -06:00
Charles Kerr 40c7f5bceb
perf: constexpr and move work outside of loops (#4224) 2022-11-22 14:00:09 -06:00
Charles Kerr 43c57fb02a
perf: buffer iterators (#4220) 2022-11-21 23:54:28 -06:00
Charles Kerr a3772dc1fa
refactor: aggregate dh in peer io (#4218) 2022-11-21 18:08:06 -06:00
A Cœur d26db72d7e
Fix "Implicit conversion loses integer precision" (#4194) 2022-11-21 10:19:45 -06:00