mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-07 01:44:01 +00:00
feat(torrents): add global open-file limit
This commit is contained in:
@@ -24,11 +24,23 @@ pub const DOWNLOAD_CONNECTIONS_MAX: i32 = 16;
|
||||
pub const MAX_TORRENT_PIECE_PRIORITY_SIZE_MIB: u64 = 1024;
|
||||
pub const MAX_TORRENT_TRACKER_TIMEOUT: u32 = 604_800;
|
||||
pub const MAX_TORRENT_TRACKER_INTERVAL: u32 = 604_800;
|
||||
pub const DEFAULT_TORRENT_MAX_OPEN_FILES: u32 = 100;
|
||||
pub const MIN_TORRENT_MAX_OPEN_FILES: u32 = 1;
|
||||
pub const MAX_TORRENT_MAX_OPEN_FILES: u32 = 4_096;
|
||||
|
||||
pub fn clamp_download_connections(connections: i32) -> i32 {
|
||||
connections.clamp(DOWNLOAD_CONNECTIONS_MIN, DOWNLOAD_CONNECTIONS_MAX)
|
||||
}
|
||||
|
||||
pub fn normalize_torrent_max_open_files(value: u32) -> Result<u32, String> {
|
||||
if !(MIN_TORRENT_MAX_OPEN_FILES..=MAX_TORRENT_MAX_OPEN_FILES).contains(&value) {
|
||||
return Err(format!(
|
||||
"torrent maximum open files must be between {MIN_TORRENT_MAX_OPEN_FILES} and {MAX_TORRENT_MAX_OPEN_FILES}"
|
||||
));
|
||||
}
|
||||
Ok(value)
|
||||
}
|
||||
|
||||
fn reorder_selected_queue_tasks(
|
||||
queue_tasks: &[QueuedTask],
|
||||
ids: &[String],
|
||||
@@ -4831,6 +4843,17 @@ mod tests {
|
||||
assert!(!options.contains_key("bt-tracker-interval"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn torrent_max_open_files_is_bounded() {
|
||||
assert_eq!(normalize_torrent_max_open_files(1).unwrap(), 1);
|
||||
assert_eq!(
|
||||
normalize_torrent_max_open_files(MAX_TORRENT_MAX_OPEN_FILES).unwrap(),
|
||||
MAX_TORRENT_MAX_OPEN_FILES
|
||||
);
|
||||
assert!(normalize_torrent_max_open_files(0).is_err());
|
||||
assert!(normalize_torrent_max_open_files(MAX_TORRENT_MAX_OPEN_FILES + 1).is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn torrent_trackers_are_emitted_as_the_aria2_tracker_option() {
|
||||
let mut options = serde_json::Map::new();
|
||||
|
||||
Reference in New Issue
Block a user