From 8c5a484a0e010eaa566c17acd8b344114b68caa6 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Mon, 1 Apr 2024 15:24:29 +0100 Subject: feat: reduce `get_events` timeout 10s ~> 6s if relays do not connect and retun events within 3s they will rarely connect at all this could be reversed when get_events is used async --- src/client.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/client.rs b/src/client.rs index 2dbd238..6628de6 100644 --- a/src/client.rs +++ b/src/client.rs @@ -12,7 +12,7 @@ // want to inadvertlty use other features of nightly that might be removed. use std::{fmt::Write, time::Duration}; -use anyhow::{Context, Result}; +use anyhow::{bail, Context, Result}; use async_trait::async_trait; use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressState, ProgressStyle}; @@ -240,7 +240,7 @@ impl Connect for Client { } } -static GET_EVENTS_TIMEOUT: u64 = 10; +static GET_EVENTS_TIMEOUT: u64 = 6; async fn get_events_of( relay: &nostr_sdk::Relay, @@ -249,10 +249,14 @@ async fn get_events_of( ) -> Result> { if !relay.is_connected().await { #[allow(clippy::large_futures)] - relay.connect(None).await; + relay + .connect(Some(std::time::Duration::from_secs(GET_EVENTS_TIMEOUT))) + .await; } - if let Some(pb) = pb { + if !relay.is_connected().await { + bail!("connection timeout"); + } else if let Some(pb) = pb { pb.set_prefix(format!("connected {}", relay.url())); } let events = relay -- cgit v1.2.3