xirvik
9ff0cd28d5
Add schedule.if_absent for clients that re-register periodic tasks.
...
schedule restarts a re-registered task's countdown, if_absent keeps the existing entry.
2026-08-16 13:36:19 +02:00
xirvik
b24db0eaa5
Do not dereference missing text nodes in the tinyxml2 backend.
...
Empty elements and element children crashed the parser on a null.
2026-08-14 13:16:17 +02:00
Jari Sundell
6fa139f7bf
Reduce max_string_pad_size from 1<<20 to 1<<14
2026-08-14 12:46:37 +02:00
xirvik
68904ba005
Limit the padding string.rpad and string.lpad will build.
...
An untrusted caller could exhaust memory or the response limit.
2026-08-14 12:46:37 +02:00
xirvik
b401068246
Let the choke group list own its groups.
...
Each choke_group.insert leaked a group, and size reported a stale copy.
2026-08-14 12:15:36 +02:00
xirvik
946a4b5c83
Check the focus iterator before dereferencing it on erase.
...
Erasing a download read past the end of the view.
2026-08-13 19:30:21 +02:00
xirvik
a075001a73
Catch every json exception when processing a JSONRPC request.
...
A number overflow escaped the two handlers and killed the process.
2026-08-12 18:22:17 +02:00
xirvik
781520fef8
Close the connection when an SCGI header does not fit the buffer.
...
A malformed header aborted the process from the SCGI thread.
2026-08-12 15:48:39 +02:00
xirvik
324811d6f0
Do not fail startup on unreadable session files.
...
The download is flagged as hash failed with a message instead of throwing.
2026-08-09 10:39:55 +02:00
Jari Sundell
e51fad5bd2
Clean up comments in root.h
...
Removed comments regarding input history size limitations.
2026-08-09 10:19:35 +02:00
xirvik
44bb2d691f
ui: bound the input history size.
...
Only the lower end was checked, so a large value threw bad_alloc and exited.
2026-08-09 10:19:35 +02:00
xirvik
161a36dedd
Add system.sockets.<category>.min_alloc.limit.
...
A category can have a lower bound too, and a client needs to read it.
2026-08-08 19:39:59 +02:00
xirvik
a69e44a096
Add system.sockets.<category>.max_alloc.limit.
...
A category can have a ceiling below the shared budget, and a client needs to read it.
2026-08-08 11:28:26 +02:00
kunalkakade
3ae6bbc394
Fix garbage throttle values in the status bar on 32-bit archs.
...
Closes #1683 .
2026-08-07 15:45:47 +02:00
kunalkakade
31196ff5f0
Add realpath variants of the commands that return paths.
...
Closes #1670 .
2026-08-07 11:58:14 +02:00
kunalkakade
5b4b607c98
Add string.* commands for text manipulation.
...
Closes #1366 .
2026-08-07 11:35:35 +02:00
xirvik
87db1cf0f0
rpc: do not dereference a null result from the xmlrpc-c registry.
...
A failed call returns null, which was passed straight to xmlrpc_mem_block_contents.
2026-08-07 10:56:19 +02:00
rakshasa
dd3ddf7c39
Tagged release 0.16.20.
2026-08-06 10:12:49 +02:00
xirvik
d20c3234da
Add system.sockets allocation budget commands.
...
They report the budget the socket manager enforces, so a client can show the limit.
2026-08-05 11:18:31 +02:00
Maks Verver
dda5e4fa04
Fix deprecated command redirects (rtorrent -D)
2026-08-05 10:14:35 +02:00
Jari Sundell
9ab73352e1
Minor fixes to WaitpidQueue.
2026-08-05 00:59:33 +09:00
Jari Sundell
f90a96d57a
Added WaitpidQueue to handle background process reaping.
2026-08-04 19:03:26 +09:00
xirvik
05831942a7
commands: don't register min_alloc/max_alloc for the generic socket category
...
SocketManager throws internal_error for category_generic, aborting rtorrent over RPC.
2026-07-30 12:42:24 +02:00
Jari Sundell
f52f20f1b6
Cleaned up system headers.
2026-07-26 19:53:18 +09:00
xirvik
41eef969ea
commands: fix group.<name>.ratio.disable calling a removed command
...
group_insert() builds the disable method as "schedule_remove=...", but that
command no longer exists: the current name is schedule.remove, and the only
old-style aliases registered are schedule2 and schedule_remove2 (and those only
when deprecated commands are enabled at registration time). Every
group.<name>.ratio.disable therefore faults with
Command "schedule_remove" does not exist.
including the built-in group.seeding.ratio.disable, so a ratio group can be
enabled but never disabled. The enable half already uses the current name.
2026-07-25 10:18:49 +02:00
fffe
1def5e8b36
Add log.print and enum.log_group methods
2026-07-22 11:08:32 +02:00
simonc56
8355870586
Mark 'd.timestamp.started' as safe in command download initialization
2026-07-20 08:21:32 +02:00
Jari Sundell
ba2bc7e64d
Various release bug fixes.
2026-07-19 18:53:57 +09:00
Jari Sundell
f6b3ad0efd
Minor cleanup of pex and other commands.
2026-07-15 19:40:13 +09:00
Jari Sundell
5d350f0bcc
Use new encryption modes.
2026-07-14 17:34:14 +09:00
Jari Sundell
86fa0d195f
Changing listen/dht port changes the listening/dht ports.
2026-07-12 17:19:33 +09:00
Jari Sundell
2354c9cdb5
Moved ChunkManager out of public header directory.
2026-07-10 17:54:37 +09:00
Jari Sundell
1b25bc7f56
Moved all sync/diskspace related methods to MemoryManager.
2026-07-10 02:21:08 +09:00
Jari Sundell
c6bde213b4
Added runtime::MemoryManager to split out unrelated features from ChunkManager.
2026-07-09 01:56:30 +09:00
Jari Sundell
959448acda
Fixed command_base t_pod align static asserts.
2026-07-08 17:15:56 +09:00
Jari Sundell
3b6da6feac
Reordered http queue slots to avoid race conditions.
2026-07-07 16:34:19 +09:00
Jari Sundell
ea2d22cb87
Removed unused add/remove error-event code.
2026-07-07 03:05:20 +09:00
Jari Sundell
a07f57a703
Fixed fd close order in ExecFile.
2026-07-06 18:06:51 +09:00
Jari Sundell
0494ce70c8
Add http done/failed slots before starting request.
2026-07-06 17:18:39 +09:00
fffe
9884c9dd9b
Add support for posix_spawn_file_actions_addclosefrom_np by @fffe
2026-07-03 20:52:26 +09:00
Jari Sundell
d99cd5eb73
Added max http request size and limited redirect protocols to http/https.
2026-07-03 19:34:36 +09:00
Jari Sundell
786f1234d2
Fix background task execution.
2026-07-03 17:53:00 +09:00
Jari Sundell
23921cc97c
Added new ProxyManager and support for socks5 for peer connections.
2026-06-30 19:55:45 +09:00
Jari Sundell
6558f0ad42
Fixed shutdown handling of stalled http requests.
2026-06-29 16:18:56 +09:00
simonc56
9431dd5acc
mark d.complete & d.timestamp.finished as safe in command download
2026-06-28 10:11:06 +02:00
trim21
8598873627
Replace rak::regex with fnmatch from POSIX <fnmatch.h>
...
rak::regex was a hand-rolled glob matcher supporting only '*'
wildcards. Replace it with the standard POSIX fnmatch() which supports
the same glob patterns plus '?' and '[...]' character classes.
- src/core/manager.cc: use fnmatch for directory entry filtering
- src/command_download.cc: use fnmatch for file path pattern matching
- Makefile.am: remove rak/regex.h from EXTRA_DIST
- rak/regex.h: deleted, no longer needed
2026-06-25 09:47:11 +02:00
Jari Sundell
59fe93515e
Only enable SIGCHLD on main thread.
2026-06-21 23:05:16 +09:00
Jari Sundell
8249070ff1
Remove shutdown comments for directory watch
...
Remove commented code regarding directory watch closure during shutdown.
2026-06-19 10:29:43 +02:00
Xirvik Support
517454b413
control: close directory watch on quick shutdown (fix SIGABRT at exit)
...
Control::handle_shutdown() closes m_directory_events (the inotify directory
watch) only in the normal-shutdown branch (!m_shutdownQuick). On a quick
shutdown (SIGTERM -> receive_quick_shutdown) the m_shutdownQuick branch skips
it, so the watch stays registered in the poll. ~Control() then destroys the
still-open directory_events and Event::~Event()'s assert(m_poll_event == nullptr)
(added with the 0.16.13 poll/event rework) aborts:
main -> Control::~Control() -> ~directory_events -> ~Event() -> abort
Close it in Control::cleanup() instead, which runs on every shutdown path after
the session is saved; close() is idempotent, so the normal path that already
closed it in handle_shutdown() is unaffected.
Reproducible: configure a directory.watch.added watch, then SIGTERM the client
-> SIGABRT (core in Event::~Event); SIGINT (normal shutdown) is clean. With this
change SIGTERM exits cleanly too.
2026-06-19 10:29:43 +02:00
Jari Sundell
a79aaad9ab
Clean up comments in InputEvent methods
...
Removed commented-out code regarding error handling for stdin and event processing.
2026-06-19 09:12:22 +02:00