Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
curl_global_init(3)		libcurl	Manual		   curl_global_init(3)

       curl_global_init	- Global libcurl initialisation

       #include	<curl/curl.h>

       CURLcode	curl_global_init(long flags);

       This  function  sets  up	 the  program  environment that	libcurl	needs.
       Think of	it as an extension of the library loader.

       This function must be called at least once within a program (a  program
       is  all	the  code that shares a	memory space) before the program calls
       any other function in libcurl.  The environment it sets up is  constant
       for  the	life of	the program and	is the same for	every program, so mul-
       tiple calls have	the same effect	as one call.

       The flags option	is a bit pattern that tells libcurl exactly what  fea-
       tures  to  init,	 as described below. Set the desired bits by ORing the
       values	together.    In	  normal   operation,	you    must    specify
       CURL_GLOBAL_ALL.	  Don't	 use  any  other value unless you are familiar
       with it and mean	to control internal operations of libcurl.

       This function is	not thread safe. You must not call it when  any	 other
       thread  in  the program (i.e. a thread sharing the same memory) is run-
       ning.  This doesn't just	mean no	other thread that  is  using  libcurl.
       Because curl_global_init(3) calls functions of other libraries that are
       similarly thread	unsafe,	it could conflict with any other  thread  that
       uses these other	libraries.

       If  you are initializing	libcurl	from a Windows DLL you should not ini-
       tialize it from DllMain or a static initializer because	Windows	 holds
       the loader lock during that time	and it could cause a deadlock.

       See  the	 description  in libcurl(3) of global environment requirements
       for details of how to use this function.

	      Initialize everything possible. This sets	all known bits	except

	      (This flag's presence or absence serves no meaning since 7.57.0.
	      The description below is for older libcurl versions.)

	      Initialize SSL.

	      The implication here is that if this bit is not  set,  the  ini-
	      tialization of the SSL layer needs to be done by the application
	      or at least outside of libcurl. The exact	procedure  how	to  do
	      SSL initialization depends on the	TLS backend libcurl uses.

	      Doing  TLS based transfers without having	the TLS	layer initial-
	      ized may lead to unexpected behaviors.

	      Initialize the Win32 socket libraries.

	      The implication here is that if this bit is not  set,  the  ini-
	      tialization  of winsock has to be	done by	the application	or you
	      risk getting undefined behaviors.	This option  exists  for  when
	      the  initialization  is handled outside of libcurl so there's no
	      need for libcurl to do it	again.

	      Initialise nothing extra.	This sets no bit.

	      A	sensible default. It will init both SSL	and Win32. Right  now,
	      this equals the functionality of the CURL_GLOBAL_ALL mask.

	      This  bit	 has no	point since 7.69.0 but its behavior is instead
	      the default.

	      Before 7.69.0: when this flag  is	 set,  curl  will  acknowledge
	      EINTR  condition when connecting or when waiting for data.  Oth-
	      erwise, curl waits until full timeout elapses. (Added in 7.30.0)

       If this function	returns	non-zero, something went wrong and you	cannot
       use the other curl functions.

       curl_global_init_mem(3),	curl_global_cleanup(3),	curl_global_sslset(3),
       curl_easy_init(3) libcurl(3)

libcurl	7.72.0		       January 23, 2020		   curl_global_init(3)


Want to link to this manual page? Use this URL:

home | help