Commit Graph

5751 Commits

Author SHA1 Message Date
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