diff options
author | Matt Burke <spraints@gmail.com> | 2015-09-04 09:36:50 -0400 |
---|---|---|
committer | Matt Burke <spraints@gmail.com> | 2015-09-04 09:36:50 -0400 |
commit | 59d6128e2730b71da6fdebbdf9a4d04b909e9721 (patch) | |
tree | dc89d18d5e8a1ce14512f87201000ecb4504c7c7 | |
parent | ac9b51278996b864d0a2f7d61a827f89cbd4ff23 (diff) | |
download | libgit2-59d6128e2730b71da6fdebbdf9a4d04b909e9721.tar.gz |
Allow the world to set HTTP headers for remotes
-rw-r--r-- | include/git2/remote.h | 3 | ||||
-rw-r--r-- | src/remote.c | 12 | ||||
-rw-r--r-- | src/remote.h | 2 | ||||
-rw-r--r-- | src/transports/http.c | 2 |
4 files changed, 16 insertions, 3 deletions
diff --git a/include/git2/remote.h b/include/git2/remote.h index 444fe5276..40adca0ce 100644 --- a/include/git2/remote.h +++ b/include/git2/remote.h @@ -230,6 +230,9 @@ GIT_EXTERN(size_t) git_remote_refspec_count(const git_remote *remote); */ GIT_EXTERN(const git_refspec *)git_remote_get_refspec(const git_remote *remote, size_t n); +GIT_EXTERN(int) git_remote_extra_http_headers(const git_remote *remote, git_strarray *extra_http_headers); +GIT_EXTERN(int) git_remote_set_extra_http_headers(git_remote *remote, const git_strarray extra_http_headers); + /** * Open a connection to a remote * diff --git a/src/remote.c b/src/remote.c index b6fb87ece..b7d82e708 100644 --- a/src/remote.c +++ b/src/remote.c @@ -1643,7 +1643,7 @@ void git_remote_free(git_remote *remote) free_refspecs(&remote->passive_refspecs); git_vector_free(&remote->passive_refspecs); - git__free(remote->extra_http_headers); + git_strarray_free(&remote->extra_http_headers); git_push_free(remote->push); git__free(remote->url); @@ -2154,6 +2154,16 @@ size_t git_remote_refspec_count(const git_remote *remote) return remote->refspecs.length; } +int git_remote_extra_http_headers(const git_remote *remote, git_strarray *extra_http_headers) +{ + return git_strarray_copy(extra_http_headers, &remote->extra_http_headers); +} + +int git_remote_set_extra_http_headers(git_remote *remote, const git_strarray extra_http_headers) +{ + return git_strarray_copy(&remote->extra_http_headers, &extra_http_headers); +} + const git_refspec *git_remote_get_refspec(const git_remote *remote, size_t n) { return git_vector_get(&remote->refspecs, n); diff --git a/src/remote.h b/src/remote.h index bfb20362b..3a15288f3 100644 --- a/src/remote.h +++ b/src/remote.h @@ -32,7 +32,7 @@ struct git_remote { git_remote_autotag_option_t download_tags; int prune_refs; int passed_refspecs; - git_strarray *extra_http_headers; + git_strarray extra_http_headers; }; const char* git_remote__urlfordirection(struct git_remote *remote, int direction); diff --git a/src/transports/http.c b/src/transports/http.c index 664cd80ab..3cd5632f8 100644 --- a/src/transports/http.c +++ b/src/transports/http.c @@ -974,7 +974,7 @@ static int http_action( if ((!t->connection_data.host || !t->connection_data.port || !t->connection_data.path) && (ret = gitno_connection_data_from_url(&t->connection_data, url, NULL)) < 0) return ret; - t->connection_data.extra_headers = t->owner->owner->extra_http_headers; + t->connection_data.extra_headers = &t->owner->owner->extra_http_headers; if ((ret = http_connect(t)) < 0) return ret; |