all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Lukas Wagner <l.wagner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH proxmox 2/2] notify: webhook: gotify: set HTTP request timeout
Date: Fri, 22 Nov 2024 11:08:15 +0100	[thread overview]
Message-ID: <20241122100815.67255-2-l.wagner@proxmox.com> (raw)
In-Reply-To: <20241122100815.67255-1-l.wagner@proxmox.com>

By default, the sync client from proxmox-http (powered by ureq) does not
have any request timeout. To avoid blocking the current thread for a
prolonged period of time, we now make use of the previously added
`Client::new_with_timeout` function to create a new HTTP client with a
default timout of 5 seconds.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
 proxmox-notify/src/endpoints/gotify.rs  | 5 ++++-
 proxmox-notify/src/endpoints/webhook.rs | 6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/proxmox-notify/src/endpoints/gotify.rs b/proxmox-notify/src/endpoints/gotify.rs
index fae036cd..ea13d5d0 100644
--- a/proxmox-notify/src/endpoints/gotify.rs
+++ b/proxmox-notify/src/endpoints/gotify.rs
@@ -1,4 +1,5 @@
 use std::collections::HashMap;
+use std::time::Duration;
 
 use serde::{Deserialize, Serialize};
 use serde_json::json;
@@ -13,6 +14,8 @@ use crate::renderer::TemplateType;
 use crate::schema::ENTITY_NAME_SCHEMA;
 use crate::{renderer, Content, Endpoint, Error, Notification, Origin, Severity};
 
+const HTTP_TIMEOUT: Duration = Duration::from_secs(5);
+
 fn severity_to_priority(level: Severity) -> u32 {
     match level {
         Severity::Info => 1,
@@ -146,7 +149,7 @@ impl Endpoint for GotifyEndpoint {
             ..Default::default()
         };
 
-        let client = Client::new(options);
+        let client = Client::new_with_timeout(options, HTTP_TIMEOUT);
         let uri = format!("{}/message", self.config.server);
 
         client
diff --git a/proxmox-notify/src/endpoints/webhook.rs b/proxmox-notify/src/endpoints/webhook.rs
index 4ad9cb2f..efb70637 100644
--- a/proxmox-notify/src/endpoints/webhook.rs
+++ b/proxmox-notify/src/endpoints/webhook.rs
@@ -7,6 +7,8 @@
 //! Secrets are kept in a private configuration file, accessible only by root, and are not retrievable via the API.
 //! Within templates, secrets can be referenced using `{{ secrets.<name> }}`.
 //! Additionally, we take measures to prevent secrets from appearing in logs or error messages.
+use std::time::Duration;
+
 use handlebars::{
     Context as HandlebarsContext, Handlebars, Helper, HelperResult, Output, RenderContext,
     RenderError as HandlebarsRenderError,
@@ -30,6 +32,8 @@ use crate::{renderer, Content, Endpoint, Error, Notification, Origin};
 /// This will be used as a section type in the public/private configuration file.
 pub(crate) const WEBHOOK_TYPENAME: &str = "webhook";
 
+const HTTP_TIMEOUT: Duration = Duration::from_secs(5);
+
 #[api]
 #[derive(Serialize, Deserialize, Clone, Copy, Default)]
 #[serde(rename_all = "kebab-case")]
@@ -270,7 +274,7 @@ impl WebhookEndpoint {
             ..Default::default()
         };
 
-        Ok(Client::new(options))
+        Ok(Client::new_with_timeout(options, HTTP_TIMEOUT))
     }
 
     fn build_request(&self, notification: &Notification) -> Result<Request<String>, Error> {
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


      reply	other threads:[~2024-11-22 10:08 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-22 10:08 [pve-devel] [PATCH proxmox 1/2] http: sync client: add HTTP request timeout option Lukas Wagner
2024-11-22 10:08 ` Lukas Wagner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241122100815.67255-2-l.wagner@proxmox.com \
    --to=l.wagner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal