Enable connection timeouts for requests
ci/woodpecker/push/ociImagePush Pipeline was successful Details

Hopefully reducing congestion
This commit is contained in:
Natty 2024-12-24 04:27:41 +01:00
parent dab7585a8b
commit 277dcb5e3e
2 changed files with 9 additions and 7 deletions

View File

@ -4,6 +4,7 @@ use headers::UserAgent;
use hyper::body::Bytes; use hyper::body::Bytes;
use reqwest::{redirect::Policy, Client, RequestBuilder}; use reqwest::{redirect::Policy, Client, RequestBuilder};
use serde_json::Value; use serde_json::Value;
use std::time::Duration;
use thiserror::Error; use thiserror::Error;
use tokio::pin; use tokio::pin;
use url::Url; use url::Url;
@ -58,6 +59,7 @@ impl FederationClient {
let client = Client::builder() let client = Client::builder()
.https_only(force_https) .https_only(force_https)
.redirect(Policy::limited(5)) .redirect(Policy::limited(5))
.connect_timeout(Duration::from_secs(timeout_seconds))
.build()?; .build()?;
Ok(FederationClient { Ok(FederationClient {
@ -119,7 +121,7 @@ impl FederationRequestBuilder<'_> {
async fn send_stream( async fn send_stream(
self, self,
) -> Result<impl Stream<Item = Result<Bytes, FederationClientError>>, FederationClientError> ) -> Result<impl Stream<Item=Result<Bytes, FederationClientError>>, FederationClientError>
{ {
let mut body = self let mut body = self
.builder .builder
@ -147,7 +149,7 @@ impl FederationRequestBuilder<'_> {
let sleep = tokio::time::sleep(tokio::time::Duration::from_secs( let sleep = tokio::time::sleep(tokio::time::Duration::from_secs(
self.client.timeout_seconds, self.client.timeout_seconds,
)) ))
.fuse(); .fuse();
tokio::pin!(sleep); tokio::pin!(sleep);
let body = async move { let body = async move {
@ -159,7 +161,7 @@ impl FederationRequestBuilder<'_> {
}) })
.await .await
} }
.fuse(); .fuse();
pin!(body); pin!(body);

View File

@ -15,18 +15,18 @@ pub(super) fn new_federation_client_service(
FederationClient::new( FederationClient::new(
true, true,
256000, 256000,
35, 25,
UserAgent::from_str(&format!( UserAgent::from_str(&format!(
"magnetar/{} (https://{})", "magnetar/{} (https://{})",
config.branding.version, config.networking.host config.branding.version, config.networking.host
)) ))
.into_diagnostic()?, .into_diagnostic()?,
) )
.into_diagnostic() .into_diagnostic()
} }
pub(super) fn new_ap_client_service( pub(super) fn new_ap_client_service(
federation_client: impl AsRef<FederationClient> + Send + Sync + 'static, federation_client: impl AsRef<FederationClient> + Send + Sync + 'static,
) -> impl ApClientService<Error = ApClientError> { ) -> impl ApClientService<Error=ApClientError> {
ApClientServiceDefaultProvider::new(federation_client) ApClientServiceDefaultProvider::new(federation_client)
} }