mirror of
https://github.com/c-cube/ezcurl.git
synced 2025-12-06 11:15:44 -05:00
fix: global initialization logic is now hidden behind a mutex
This commit is contained in:
parent
648ca8f77f
commit
e22adc6c19
1 changed files with 11 additions and 4 deletions
|
|
@ -71,12 +71,19 @@ end
|
||||||
type t = Curl.t
|
type t = Curl.t
|
||||||
|
|
||||||
let _init =
|
let _init =
|
||||||
lazy
|
let initialized = ref false in
|
||||||
(Curl.global_init Curl.CURLINIT_GLOBALALL;
|
let mutex = Mutex.create () in
|
||||||
at_exit Curl.global_cleanup)
|
fun () ->
|
||||||
|
Mutex.lock mutex;
|
||||||
|
if not !initialized then (
|
||||||
|
initialized := true;
|
||||||
|
Curl.global_init Curl.CURLINIT_GLOBALALL;
|
||||||
|
at_exit Curl.global_cleanup
|
||||||
|
);
|
||||||
|
Mutex.unlock mutex
|
||||||
|
|
||||||
let make ?(set_opts = fun _ -> ()) () : t =
|
let make ?(set_opts = fun _ -> ()) () : t =
|
||||||
Lazy.force _init;
|
_init ();
|
||||||
let c = Curl.init () in
|
let c = Curl.init () in
|
||||||
Gc.finalise Curl.cleanup c;
|
Gc.finalise Curl.cleanup c;
|
||||||
set_opts c;
|
set_opts c;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue