Consolidate and lower reqwest timeouts. Fixes #2150 (#2151)

This commit is contained in:
Dessalines 2022-03-24 16:33:23 +00:00 committed by GitHub
parent 83e996111e
commit 1e9f609cdb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 18 additions and 17 deletions

View file

@ -2,14 +2,13 @@ use crate::{traits::ApubObject, APUB_JSON_CONTENT_TYPE};
use anyhow::anyhow;
use chrono::{Duration as ChronoDuration, NaiveDateTime, Utc};
use diesel::NotFound;
use lemmy_utils::{request::retry, settings::structs::Settings, LemmyError};
use lemmy_utils::{request::retry, settings::structs::Settings, LemmyError, REQWEST_TIMEOUT};
use reqwest::StatusCode;
use reqwest_middleware::ClientWithMiddleware;
use serde::{Deserialize, Serialize};
use std::{
fmt::{Debug, Display, Formatter},
marker::PhantomData,
time::Duration,
};
use tracing::info;
use url::Url;
@ -114,7 +113,7 @@ where
client
.get(self.0.as_str())
.header("Accept", APUB_JSON_CONTENT_TYPE)
.timeout(Duration::from_secs(60))
.timeout(REQWEST_TIMEOUT)
.send()
})
.await?;

View file

@ -4,7 +4,7 @@ use anyhow::anyhow;
use http::{header::HeaderName, HeaderMap, HeaderValue};
use http_signature_normalization_actix::Config as ConfigActix;
use http_signature_normalization_reqwest::prelude::{Config, SignExt};
use lemmy_utils::LemmyError;
use lemmy_utils::{LemmyError, REQWEST_TIMEOUT};
use once_cell::sync::Lazy;
use openssl::{
hash::MessageDigest,
@ -15,7 +15,7 @@ use reqwest::Response;
use reqwest_middleware::ClientWithMiddleware;
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
use std::{str::FromStr, time::Duration};
use std::str::FromStr;
use tracing::debug;
use url::Url;
@ -47,7 +47,7 @@ pub async fn sign_and_send(
let request = client
.post(&inbox_url.to_string())
// signature is only valid for 10 seconds, so no reason to wait any longer
.timeout(Duration::from_secs(10))
.timeout(REQWEST_TIMEOUT)
.headers(headers)
.signature_with_digest(
HTTP_SIG_CONFIG.clone(),

View file

@ -12,12 +12,11 @@ use actix_web::{
};
use anyhow::anyhow;
use futures::stream::{Stream, StreamExt};
use lemmy_utils::{claims::Claims, rate_limit::RateLimit, LemmyError};
use lemmy_utils::{claims::Claims, rate_limit::RateLimit, LemmyError, REQWEST_TIMEOUT};
use lemmy_websocket::LemmyContext;
use reqwest::Body;
use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
use serde::{Deserialize, Serialize};
use std::time::Duration;
pub fn config(cfg: &mut web::ServiceConfig, client: ClientWithMiddleware, rate_limit: &RateLimit) {
cfg
@ -60,7 +59,7 @@ fn adapt_request(
let client_request = client
.request(request.method().clone(), url)
.timeout(Duration::from_secs(30));
.timeout(REQWEST_TIMEOUT);
request
.headers()

View file

@ -21,11 +21,13 @@ pub use sensitive::Sensitive;
use actix_web::HttpResponse;
use http::StatusCode;
use std::{fmt, fmt::Display};
use std::{fmt, fmt::Display, time::Duration};
use tracing_error::SpanTrace;
pub type ConnectionId = usize;
pub const REQWEST_TIMEOUT: Duration = Duration::from_secs(10);
#[derive(PartialEq, Eq, Hash, Debug, Clone)]
pub struct IpAddr(pub String);

View file

@ -1,10 +1,10 @@
use crate::{settings::structs::Settings, version::VERSION, LemmyError};
use crate::{settings::structs::Settings, version::VERSION, LemmyError, REQWEST_TIMEOUT};
use anyhow::anyhow;
use encoding::{all::encodings, DecoderTrap};
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
use reqwest_middleware::ClientWithMiddleware;
use serde::{Deserialize, Serialize};
use std::{future::Future, time::Duration};
use std::future::Future;
use thiserror::Error;
use tracing::{error, info};
use url::Url;
@ -71,7 +71,7 @@ pub async fn fetch_site_metadata(
info!("Fetching site metadata for url: {}", url);
let response = client
.get(url.as_str())
.timeout(Duration::from_secs(30))
.timeout(REQWEST_TIMEOUT)
.send()
.await?;
@ -183,7 +183,7 @@ pub(crate) async fn fetch_pictrs(
let response = client
.get(&fetch_url)
.timeout(Duration::from_secs(30))
.timeout(REQWEST_TIMEOUT)
.send()
.await?;
@ -259,7 +259,7 @@ pub async fn fetch_site_data(
async fn is_image_content_type(client: &ClientWithMiddleware, url: &Url) -> Result<(), LemmyError> {
let response = client
.get(url.as_str())
.timeout(Duration::from_secs(30))
.timeout(REQWEST_TIMEOUT)
.send()
.await?;
if response

View file

@ -26,12 +26,13 @@ use lemmy_utils::{
request::build_user_agent,
settings::structs::Settings,
LemmyError,
REQWEST_TIMEOUT,
};
use lemmy_websocket::{chat_server::ChatServer, LemmyContext};
use reqwest::Client;
use reqwest_middleware::ClientBuilder;
use reqwest_tracing::TracingMiddleware;
use std::{env, sync::Arc, thread, time::Duration};
use std::{env, sync::Arc, thread};
use tokio::sync::Mutex;
use tracing_actix_web::TracingLogger;
@ -96,7 +97,7 @@ async fn main() -> Result<(), LemmyError> {
let client = Client::builder()
.user_agent(build_user_agent(&settings))
.timeout(Duration::from_secs(10))
.timeout(REQWEST_TIMEOUT)
.build()?;
let client = ClientBuilder::new(client).with(TracingMiddleware).build();