Add federation.fetcher_timeout and federation.deliverer_timeout configuration parameters

This commit is contained in:
silverpill 2023-02-22 22:14:42 +00:00
parent 378d94e7b8
commit dd0c53c5e9
5 changed files with 22 additions and 6 deletions

View file

@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Added `prune-remote-emojis` command.
- Prune remote emojis in background.
- Added `limits.media.emoji_size_limit` configuration parameter.
- Added `federation.fetcher_timeout` and `federation.deliverer_timeout` configuration parameters.
### Changed

View file

@ -104,6 +104,8 @@ impl Config {
is_private:
!self.federation.enabled ||
matches!(self.environment, Environment::Development),
fetcher_timeout: self.federation.fetcher_timeout,
deliverer_timeout: self.federation.deliverer_timeout,
}
}
@ -138,6 +140,8 @@ pub struct Instance {
pub onion_proxy_url: Option<String>,
// Private instance won't send signed HTTP requests
pub is_private: bool,
pub fetcher_timeout: u64,
pub deliverer_timeout: u64,
}
impl Instance {
@ -168,6 +172,8 @@ impl Instance {
proxy_url: None,
onion_proxy_url: None,
is_private: true,
fetcher_timeout: 0,
deliverer_timeout: 0,
}
}
}
@ -187,6 +193,8 @@ mod tests {
proxy_url: None,
onion_proxy_url: None,
is_private: true,
fetcher_timeout: 0,
deliverer_timeout: 0,
};
assert_eq!(instance.url(), "https://example.com");
@ -207,6 +215,8 @@ mod tests {
proxy_url: None,
onion_proxy_url: None,
is_private: true,
fetcher_timeout: 0,
deliverer_timeout: 0,
};
assert_eq!(instance.url(), "http://1.2.3.4:3777");

View file

@ -2,10 +2,17 @@ use serde::Deserialize;
fn default_federation_enabled() -> bool { true }
const fn default_fetcher_timeout() -> u64 { 300 }
const fn default_deliverer_timeout() -> u64 { 30 }
#[derive(Clone, Deserialize)]
pub struct FederationConfig {
#[serde(default = "default_federation_enabled")]
pub enabled: bool,
#[serde(default = "default_fetcher_timeout")]
pub(super) fetcher_timeout: u64,
#[serde(default = "default_deliverer_timeout")]
pub(super) deliverer_timeout: u64,
pub(super) proxy_url: Option<String>,
pub(super) onion_proxy_url: Option<String>,
}
@ -14,6 +21,8 @@ impl Default for FederationConfig {
fn default() -> Self {
Self {
enabled: default_federation_enabled(),
fetcher_timeout: default_fetcher_timeout(),
deliverer_timeout: default_deliverer_timeout(),
proxy_url: None,
onion_proxy_url: None,
}

View file

@ -36,8 +36,6 @@ use super::{
queues::OutgoingActivityJobData,
};
const DELIVERER_TIMEOUT: u64 = 30;
#[derive(thiserror::Error, Debug)]
pub enum DelivererError {
#[error("key error")]
@ -71,7 +69,7 @@ fn build_client(
let client = build_federation_client(
instance,
is_onion,
DELIVERER_TIMEOUT,
instance.deliverer_timeout,
)?;
Ok(client)
}

View file

@ -24,8 +24,6 @@ use crate::http_signatures::create::{
use crate::media::{save_file, SUPPORTED_MEDIA_TYPES};
use crate::webfinger::types::{ActorAddress, JsonResourceDescriptor};
const FETCHER_TIMEOUT: u64 = 180;
#[derive(thiserror::Error, Debug)]
pub enum FetchError {
#[error(transparent)]
@ -62,7 +60,7 @@ fn build_client(
let client = build_federation_client(
instance,
is_onion,
FETCHER_TIMEOUT,
instance.fetcher_timeout,
)?;
Ok(client)
}