mirror of
https://github.com/libgit2/libgit2.git
synced 2026-01-25 02:56:17 +00:00
Merge pull request #4554 from pks-t/pks/curl-init
curl: initialize and cleanup global curl state
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include "sysdir.h"
|
||||
#include "filter.h"
|
||||
#include "merge_driver.h"
|
||||
#include "streams/curl.h"
|
||||
#include "streams/openssl.h"
|
||||
#include "thread-utils.h"
|
||||
#include "git2/global.h"
|
||||
@@ -23,7 +24,7 @@
|
||||
|
||||
git_mutex git__mwindow_mutex;
|
||||
|
||||
#define MAX_SHUTDOWN_CB 9
|
||||
#define MAX_SHUTDOWN_CB 10
|
||||
|
||||
static git_global_shutdown_fn git__shutdown_callbacks[MAX_SHUTDOWN_CB];
|
||||
static git_atomic git__n_shutdown_callbacks;
|
||||
@@ -63,7 +64,8 @@ static int init_common(void)
|
||||
(ret = git_filter_global_init()) == 0 &&
|
||||
(ret = git_merge_driver_global_init()) == 0 &&
|
||||
(ret = git_transport_ssh_global_init()) == 0 &&
|
||||
(ret = git_openssl_stream_global_init()) == 0)
|
||||
(ret = git_openssl_stream_global_init()) == 0 &&
|
||||
(ret = git_curl_stream_global_init()) == 0)
|
||||
ret = git_mwindow_global_init();
|
||||
|
||||
GIT_MEMORY_BARRIER;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "stream.h"
|
||||
#include "git2/transport.h"
|
||||
#include "buffer.h"
|
||||
#include "global.h"
|
||||
#include "vector.h"
|
||||
#include "proxy.h"
|
||||
|
||||
@@ -38,6 +39,18 @@ typedef struct {
|
||||
git_cred *proxy_cred;
|
||||
} curl_stream;
|
||||
|
||||
int git_curl_stream_global_init(void)
|
||||
{
|
||||
if (curl_global_init(CURL_GLOBAL_ALL) != 0) {
|
||||
giterr_set(GITERR_NET, "could not initialize curl");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* `curl_global_cleanup` is provided by libcurl */
|
||||
git__on_shutdown(curl_global_cleanup);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int seterr_curl(curl_stream *s)
|
||||
{
|
||||
giterr_set(GITERR_NET, "curl error: %s\n", s->curl_error);
|
||||
@@ -353,6 +366,11 @@ int git_curl_stream_new(git_stream **out, const char *host, const char *port)
|
||||
|
||||
#include "stream.h"
|
||||
|
||||
int git_curl_stream_global_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int git_curl_stream_new(git_stream **out, const char *host, const char *port)
|
||||
{
|
||||
GIT_UNUSED(out);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "git2/sys/stream.h"
|
||||
|
||||
extern int git_curl_stream_global_init(void);
|
||||
extern int git_curl_stream_new(git_stream **out, const char *host, const char *port);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user