From ebf1e1fc12f7ed94d22d09a0b167c65d1b07d0ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lavergne?= Date: Wed, 29 Jan 2025 17:39:58 +0000 Subject: [PATCH] Expose underlying no signal in a global setting --- src/core/ezcurl_core.ml | 16 ++++++++++++++++ src/core/ezcurl_core.mli | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/core/ezcurl_core.ml b/src/core/ezcurl_core.ml index a3ad4b5..77bcc3e 100644 --- a/src/core/ezcurl_core.ml +++ b/src/core/ezcurl_core.ml @@ -97,6 +97,21 @@ let make ?(set_opts = fun _ -> ()) ?cookiejar_file let delete (self : t) = Curl.cleanup self.curl +let _cfg_mutex = Mutex.create () +let _cfg_no_signal = ref None + +let _get_no_signal () = + Mutex.lock _cfg_mutex; + let v = !_cfg_no_signal in + Mutex.unlock _cfg_mutex; + v + +let set_no_signal v = + Mutex.lock _cfg_mutex; + _cfg_no_signal := Some v; + Mutex.unlock _cfg_mutex; + () + module Cookies = struct let reload_cookiejar (self : t) : unit = Curl.set_cookielist self.curl "RELOAD" @@ -131,6 +146,7 @@ let _apply_config (self : t) (config : Config.t) : unit = opt_iter authmethod ~f:(Curl.set_httpauth self.curl); opt_iter username ~f:(Curl.set_username self.curl); opt_iter password ~f:(Curl.set_password self.curl); + opt_iter (_get_no_signal ()) ~f:(Curl.set_nosignal self); () let _set_headers (self : t) (headers : _ list) : unit = diff --git a/src/core/ezcurl_core.mli b/src/core/ezcurl_core.mli index 6a06538..594d2d6 100644 --- a/src/core/ezcurl_core.mli +++ b/src/core/ezcurl_core.mli @@ -37,6 +37,9 @@ val delete : t -> unit val with_client : ?set_opts:(Curl.t -> unit) -> (t -> 'a) -> 'a (** Make a temporary client, call the function with it, then cleanup. *) +val set_no_signal : bool -> unit +(** Set no_signal default value for each new client instance *) + (** Cookie handling. @since NEXT_RELEASE *)