slur_filter: "(\bThis\b)|(\bis\b)|(\bsample\b)"
# Maximum length of local community and user names
actor_name_max_length: 20
+ # Maximum number of HTTP requests allowed to handle a single incoming activity (or a single object fetch through the search).
+ http_fetch_retry_limit: 25
}
);
debug!("Fetching webfinger url: {}", &fetch_url);
+ *request_counter += 1;
+ if *request_counter > context.settings().http_fetch_retry_limit {
+ return Err(LemmyError::from(anyhow!("Request retry limit reached")));
+ }
+
let response = retry(|| context.client().get(&fetch_url).send()).await?;
let res: WebfingerResponse = response
use tracing::info;
use url::Url;
-/// Maximum number of HTTP requests allowed to handle a single incoming activity (or a single object
-/// fetch through the search). This should be configurable.
-static REQUEST_LIMIT: i32 = 25;
-
static CLIENT: Lazy<Client> = Lazy::new(|| {
Client::builder()
.user_agent(build_user_agent(&Settings::get()))
info!("Fetching remote object {}", self.to_string());
*request_counter += 1;
- if *request_counter > REQUEST_LIMIT {
- return Err(LemmyError::from(anyhow!("Request limit reached")));
+ if *request_counter > Settings::get().http_fetch_retry_limit {
+ return Err(LemmyError::from(anyhow!("Request retry limit reached")));
}
let res = retry(|| {
/// Fetches the post link html tags (like title, description, image, etc)
pub async fn fetch_site_metadata(client: &Client, url: &Url) -> Result<SiteMetadata, LemmyError> {
- let response = retry(|| client.get(url.as_str()).send()).await?;
+ let response = client.get(url.as_str()).send().await?;
let html = response
.text()
utf8_percent_encode(image_url.as_str(), NON_ALPHANUMERIC) // TODO this might not be needed
);
- let response = retry(|| client.get(&fetch_url).send()).await?;
+ let response = client.get(&fetch_url).send().await?;
let response: PictrsResponse = response
.json()
}
}
-async fn is_image_content_type(client: &Client, test: &Url) -> Result<(), LemmyError> {
- let response = retry(|| client.get(test.to_owned()).send()).await?;
+async fn is_image_content_type(client: &Client, url: &Url) -> Result<(), LemmyError> {
+ let response = client.get(url.as_str()).send().await?;
if response
.headers()
.get("Content-Type")
/// Maximum length of local community and user names
#[default(20)]
pub actor_name_max_length: usize,
+ /// Maximum number of HTTP requests allowed to handle a single incoming activity (or a single object fetch through the search).
+ #[default(25)]
+ pub http_fetch_retry_limit: i32,
}
#[derive(Debug, Deserialize, Serialize, Clone, SmartDefault, Document)]