]> Untitled Git - lemmy.git/commitdiff
Consolidate and lower reqwest timeouts. Fixes #2150 (#2151)
authorDessalines <dessalines@users.noreply.github.com>
Thu, 24 Mar 2022 16:33:23 +0000 (16:33 +0000)
committerGitHub <noreply@github.com>
Thu, 24 Mar 2022 16:33:23 +0000 (16:33 +0000)
crates/apub_lib/src/object_id.rs
crates/apub_lib/src/signatures.rs
crates/routes/src/images.rs
crates/utils/src/lib.rs
crates/utils/src/request.rs
src/main.rs

index 84c9c113a97832ffd3329751718bd128593a46bb..6a2d3d57c512eccdc564dc0f9d9e20c6869f1bc6 100644 (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?;
index 2ee3a144b424913955765384ba7de236a3d1ae44..6e5d6d25157f75ddd53b5f8dd1eb380c824bd28a 100644 (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(),
index fb4ef2613b344ff689a41e94d185bbbe826831cb..6439c8b6ab62cfd380fd0ba07e030adc2b39ee35 100644 (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()
index 6e30104e8fa5c555c328b6c6592002f2ad560bf8..c993779bb0838f05246e9a697b1f622c9b351c32 100644 (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);
 
index 4f87c10aea3b0e4f0f8d55d277a63e3729917e74..1e4f4bf3c2a3d2e4dec9545c2d3172f55a52d53e 100644 (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
index a8d74a125c63b77c6517461615c8f7e5388ff4aa..d0b3c04ee4067d7059c949adbf34dea5a6c73b0e 100644 (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();