rugged 1.3.2.3 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/rugged/extconf.rb +1 -1
- data/ext/rugged/rugged_config.c +7 -2
- data/ext/rugged/rugged_remote.c +17 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +103 -276
- data/vendor/libgit2/COPYING +36 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +288 -975
- data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
- data/vendor/libgit2/deps/zlib/deflate.c +31 -83
- data/vendor/libgit2/deps/zlib/deflate.h +15 -12
- data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
- data/vendor/libgit2/deps/zlib/infback.c +1 -2
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +8 -39
- data/vendor/libgit2/deps/zlib/inflate.h +2 -3
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +48 -27
- data/vendor/libgit2/deps/zlib/zlib.h +100 -126
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +9 -12
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +2 -0
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +5 -12
- data/vendor/libgit2/include/git2/config.h +19 -3
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +1 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +17 -9
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +1 -2
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +19 -0
- data/vendor/libgit2/include/git2/merge.h +23 -3
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +23 -0
- data/vendor/libgit2/include/git2/odb.h +37 -7
- data/vendor/libgit2/include/git2/odb_backend.h +1 -1
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +14 -9
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +3 -3
- data/vendor/libgit2/include/git2/status.h +9 -3
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
- data/vendor/libgit2/include/git2/sys/remote.h +31 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +25 -34
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/src/CMakeLists.txt +189 -315
- data/vendor/libgit2/src/annotated_commit.h +1 -1
- data/vendor/libgit2/src/apply.c +18 -18
- data/vendor/libgit2/src/apply.h +2 -2
- data/vendor/libgit2/src/attr.c +18 -18
- data/vendor/libgit2/src/attr_file.c +17 -17
- data/vendor/libgit2/src/attr_file.h +4 -4
- data/vendor/libgit2/src/attrcache.c +17 -12
- data/vendor/libgit2/src/blame_git.c +1 -1
- data/vendor/libgit2/src/blob.c +33 -26
- data/vendor/libgit2/src/blob.h +1 -1
- data/vendor/libgit2/src/branch.c +150 -109
- data/vendor/libgit2/src/branch.h +15 -3
- data/vendor/libgit2/src/buf.c +126 -0
- data/vendor/libgit2/src/buf.h +50 -0
- data/vendor/libgit2/src/cc-compat.h +1 -1
- data/vendor/libgit2/src/checkout.c +74 -68
- data/vendor/libgit2/src/cherrypick.c +10 -10
- data/vendor/libgit2/src/clone.c +66 -66
- data/vendor/libgit2/src/commit.c +128 -58
- data/vendor/libgit2/src/commit.h +24 -1
- data/vendor/libgit2/src/commit_graph.c +68 -53
- data/vendor/libgit2/src/commit_graph.h +10 -3
- data/vendor/libgit2/src/commit_list.c +2 -3
- data/vendor/libgit2/src/common.h +10 -3
- data/vendor/libgit2/src/config.c +99 -77
- data/vendor/libgit2/src/config.h +15 -2
- data/vendor/libgit2/src/config_file.c +103 -91
- data/vendor/libgit2/src/config_mem.c +9 -9
- data/vendor/libgit2/src/config_parse.c +27 -23
- data/vendor/libgit2/src/crlf.c +24 -21
- data/vendor/libgit2/src/date.c +10 -17
- data/vendor/libgit2/src/date.h +33 -0
- data/vendor/libgit2/src/describe.c +27 -19
- data/vendor/libgit2/src/diff.c +25 -8
- data/vendor/libgit2/src/diff.h +2 -4
- data/vendor/libgit2/src/diff_driver.c +34 -36
- data/vendor/libgit2/src/diff_driver.h +3 -3
- data/vendor/libgit2/src/diff_file.c +29 -20
- data/vendor/libgit2/src/diff_generate.c +30 -6
- data/vendor/libgit2/src/diff_generate.h +5 -3
- data/vendor/libgit2/src/diff_print.c +102 -95
- data/vendor/libgit2/src/diff_stats.c +40 -29
- data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
- data/vendor/libgit2/src/diff_tform.c +9 -8
- data/vendor/libgit2/src/diff_xdiff.c +3 -8
- data/vendor/libgit2/src/email.c +54 -38
- data/vendor/libgit2/src/email.h +1 -1
- data/vendor/libgit2/src/errors.c +18 -18
- data/vendor/libgit2/src/features.h.in +6 -1
- data/vendor/libgit2/src/fetch.c +69 -24
- data/vendor/libgit2/src/fetch.h +1 -1
- data/vendor/libgit2/src/fetchhead.c +19 -19
- data/vendor/libgit2/src/filebuf.c +28 -28
- data/vendor/libgit2/src/filebuf.h +1 -1
- data/vendor/libgit2/src/filter.c +96 -52
- data/vendor/libgit2/src/filter.h +26 -5
- data/vendor/libgit2/src/fs_path.c +1912 -0
- data/vendor/libgit2/src/fs_path.h +752 -0
- data/vendor/libgit2/src/futils.c +91 -85
- data/vendor/libgit2/src/futils.h +26 -14
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
- data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
- data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
- data/vendor/libgit2/src/hash/sha1.h +3 -1
- data/vendor/libgit2/src/hash.c +67 -35
- data/vendor/libgit2/src/hash.h +12 -12
- data/vendor/libgit2/src/ident.c +18 -18
- data/vendor/libgit2/src/ignore.c +35 -34
- data/vendor/libgit2/src/ignore.h +2 -2
- data/vendor/libgit2/src/index.c +79 -80
- data/vendor/libgit2/src/index.h +6 -3
- data/vendor/libgit2/src/indexer.c +75 -57
- data/vendor/libgit2/src/iterator.c +64 -56
- data/vendor/libgit2/src/iterator.h +5 -5
- data/vendor/libgit2/src/khash.h +1 -1
- data/vendor/libgit2/src/libgit2.c +22 -19
- data/vendor/libgit2/src/mailmap.c +38 -36
- data/vendor/libgit2/src/merge.c +27 -27
- data/vendor/libgit2/src/merge.h +1 -14
- data/vendor/libgit2/src/merge_driver.c +2 -2
- data/vendor/libgit2/src/merge_file.c +13 -3
- data/vendor/libgit2/src/message.c +21 -10
- data/vendor/libgit2/src/midx.c +83 -66
- data/vendor/libgit2/src/midx.h +3 -3
- data/vendor/libgit2/src/mwindow.c +1 -1
- data/vendor/libgit2/src/net.c +278 -68
- data/vendor/libgit2/src/net.h +10 -3
- data/vendor/libgit2/src/netops.c +1 -1
- data/vendor/libgit2/src/netops.h +1 -1
- data/vendor/libgit2/src/notes.c +20 -29
- data/vendor/libgit2/src/object.c +49 -9
- data/vendor/libgit2/src/object.h +1 -1
- data/vendor/libgit2/src/odb.c +35 -32
- data/vendor/libgit2/src/odb.h +1 -1
- data/vendor/libgit2/src/odb_loose.c +68 -68
- data/vendor/libgit2/src/odb_mempack.c +18 -5
- data/vendor/libgit2/src/odb_pack.c +43 -43
- data/vendor/libgit2/src/oid.c +11 -4
- data/vendor/libgit2/src/oid.h +15 -0
- data/vendor/libgit2/src/pack-objects.c +41 -26
- data/vendor/libgit2/src/pack-objects.h +11 -6
- data/vendor/libgit2/src/pack.c +10 -10
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch.h +1 -0
- data/vendor/libgit2/src/patch_generate.c +27 -11
- data/vendor/libgit2/src/patch_generate.h +5 -5
- data/vendor/libgit2/src/patch_parse.c +24 -24
- data/vendor/libgit2/src/path.c +76 -1951
- data/vendor/libgit2/src/path.h +34 -741
- data/vendor/libgit2/src/pathspec.c +6 -6
- data/vendor/libgit2/src/pathspec.h +2 -2
- data/vendor/libgit2/src/posix.c +3 -3
- data/vendor/libgit2/src/posix.h +1 -0
- data/vendor/libgit2/src/pqueue.h +1 -1
- data/vendor/libgit2/src/proxy.c +4 -1
- data/vendor/libgit2/src/proxy.h +1 -1
- data/vendor/libgit2/src/push.c +30 -35
- data/vendor/libgit2/src/push.h +4 -16
- data/vendor/libgit2/src/rand.c +226 -0
- data/vendor/libgit2/src/rand.h +37 -0
- data/vendor/libgit2/src/reader.c +8 -8
- data/vendor/libgit2/src/reader.h +2 -2
- data/vendor/libgit2/src/rebase.c +89 -88
- data/vendor/libgit2/src/refdb_fs.c +447 -173
- data/vendor/libgit2/src/refs.c +32 -32
- data/vendor/libgit2/src/refs.h +2 -2
- data/vendor/libgit2/src/refspec.c +32 -37
- data/vendor/libgit2/src/refspec.h +5 -2
- data/vendor/libgit2/src/regexp.c +1 -1
- data/vendor/libgit2/src/remote.c +713 -419
- data/vendor/libgit2/src/remote.h +15 -10
- data/vendor/libgit2/src/repository.c +350 -467
- data/vendor/libgit2/src/repository.h +11 -10
- data/vendor/libgit2/src/reset.c +8 -5
- data/vendor/libgit2/src/revert.c +10 -10
- data/vendor/libgit2/src/revparse.c +48 -35
- data/vendor/libgit2/src/revwalk.c +7 -7
- data/vendor/libgit2/src/signature.c +12 -6
- data/vendor/libgit2/src/signature.h +1 -1
- data/vendor/libgit2/src/sortedcache.c +1 -1
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +36 -37
- data/vendor/libgit2/src/status.c +4 -1
- data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
- data/vendor/libgit2/src/str.h +357 -0
- data/vendor/libgit2/src/streams/mbedtls.c +8 -6
- data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/submodule.c +171 -159
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +68 -52
- data/vendor/libgit2/src/sysdir.h +15 -10
- data/vendor/libgit2/src/tag.c +29 -27
- data/vendor/libgit2/src/thread.h +3 -3
- data/vendor/libgit2/src/threadstate.c +3 -3
- data/vendor/libgit2/src/threadstate.h +1 -1
- data/vendor/libgit2/src/trace.c +1 -14
- data/vendor/libgit2/src/trace.h +5 -22
- data/vendor/libgit2/src/trailer.c +1 -1
- data/vendor/libgit2/src/transaction.c +1 -1
- data/vendor/libgit2/src/transport.c +10 -10
- data/vendor/libgit2/src/transports/auth.c +7 -9
- data/vendor/libgit2/src/transports/auth.h +2 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/transports/git.c +9 -11
- data/vendor/libgit2/src/transports/http.c +37 -17
- data/vendor/libgit2/src/transports/http.h +2 -3
- data/vendor/libgit2/src/transports/httpclient.c +65 -65
- data/vendor/libgit2/src/transports/local.c +124 -116
- data/vendor/libgit2/src/transports/smart.c +51 -139
- data/vendor/libgit2/src/transports/smart.h +25 -31
- data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
- data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
- data/vendor/libgit2/src/transports/ssh.c +47 -112
- data/vendor/libgit2/src/transports/winhttp.c +50 -56
- data/vendor/libgit2/src/tree-cache.c +5 -5
- data/vendor/libgit2/src/tree-cache.h +2 -2
- data/vendor/libgit2/src/tree.c +59 -48
- data/vendor/libgit2/src/tree.h +1 -1
- data/vendor/libgit2/src/unix/map.c +0 -2
- data/vendor/libgit2/src/unix/posix.h +1 -4
- data/vendor/libgit2/src/unix/realpath.c +0 -2
- data/vendor/libgit2/src/util.c +14 -14
- data/vendor/libgit2/src/util.h +2 -28
- data/vendor/libgit2/src/vector.h +1 -1
- data/vendor/libgit2/src/win32/findfile.c +172 -116
- data/vendor/libgit2/src/win32/findfile.h +7 -4
- data/vendor/libgit2/src/win32/path_w32.c +140 -9
- data/vendor/libgit2/src/win32/path_w32.h +2 -0
- data/vendor/libgit2/src/win32/posix.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +11 -27
- data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
- data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
- data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/worktree.c +116 -94
- data/vendor/libgit2/src/worktree.h +1 -1
- data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
- data/vendor/libgit2/src/xdiff/xemit.c +23 -7
- data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
- data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
- data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
- data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
- data/vendor/libgit2/src/xdiff/xutils.c +18 -7
- data/vendor/libgit2/src/zstream.c +5 -5
- data/vendor/libgit2/src/zstream.h +4 -4
- metadata +25 -10
- data/vendor/libgit2/src/buffer.h +0 -374
data/vendor/libgit2/src/trace.c
CHANGED
|
@@ -7,19 +7,14 @@
|
|
|
7
7
|
|
|
8
8
|
#include "trace.h"
|
|
9
9
|
|
|
10
|
-
#include "
|
|
10
|
+
#include "str.h"
|
|
11
11
|
#include "runtime.h"
|
|
12
12
|
#include "git2/trace.h"
|
|
13
13
|
|
|
14
|
-
#ifdef GIT_TRACE
|
|
15
|
-
|
|
16
14
|
struct git_trace_data git_trace__data = {0};
|
|
17
15
|
|
|
18
|
-
#endif
|
|
19
|
-
|
|
20
16
|
int git_trace_set(git_trace_level_t level, git_trace_cb callback)
|
|
21
17
|
{
|
|
22
|
-
#ifdef GIT_TRACE
|
|
23
18
|
GIT_ASSERT_ARG(level == 0 || callback != NULL);
|
|
24
19
|
|
|
25
20
|
git_trace__data.level = level;
|
|
@@ -27,12 +22,4 @@ int git_trace_set(git_trace_level_t level, git_trace_cb callback)
|
|
|
27
22
|
GIT_MEMORY_BARRIER;
|
|
28
23
|
|
|
29
24
|
return 0;
|
|
30
|
-
#else
|
|
31
|
-
GIT_UNUSED(level);
|
|
32
|
-
GIT_UNUSED(callback);
|
|
33
|
-
|
|
34
|
-
git_error_set(GIT_ERROR_INVALID,
|
|
35
|
-
"this version of libgit2 was not built with tracing.");
|
|
36
|
-
return -1;
|
|
37
|
-
#endif
|
|
38
25
|
}
|
data/vendor/libgit2/src/trace.h
CHANGED
|
@@ -10,9 +10,7 @@
|
|
|
10
10
|
#include "common.h"
|
|
11
11
|
|
|
12
12
|
#include <git2/trace.h>
|
|
13
|
-
#include "
|
|
14
|
-
|
|
15
|
-
#ifdef GIT_TRACE
|
|
13
|
+
#include "str.h"
|
|
16
14
|
|
|
17
15
|
struct git_trace_data {
|
|
18
16
|
git_trace_level_t level;
|
|
@@ -27,13 +25,13 @@ GIT_INLINE(void) git_trace__write_fmt(
|
|
|
27
25
|
va_list ap)
|
|
28
26
|
{
|
|
29
27
|
git_trace_cb callback = git_trace__data.callback;
|
|
30
|
-
|
|
28
|
+
git_str message = GIT_STR_INIT;
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
git_str_vprintf(&message, fmt, ap);
|
|
33
31
|
|
|
34
|
-
callback(level,
|
|
32
|
+
callback(level, git_str_cstr(&message));
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
git_str_dispose(&message);
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
#define git_trace_level() (git_trace__data.level)
|
|
@@ -50,19 +48,4 @@ GIT_INLINE(void) git_trace(git_trace_level_t level, const char *fmt, ...)
|
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
#else
|
|
54
|
-
|
|
55
|
-
GIT_INLINE(void) git_trace__null(
|
|
56
|
-
git_trace_level_t level,
|
|
57
|
-
const char *fmt, ...)
|
|
58
|
-
{
|
|
59
|
-
GIT_UNUSED(level);
|
|
60
|
-
GIT_UNUSED(fmt);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
#define git_trace_level() ((git_trace_level_t)0)
|
|
64
|
-
#define git_trace git_trace__null
|
|
65
|
-
|
|
66
|
-
#endif
|
|
67
|
-
|
|
68
51
|
#endif
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
#include "git2/net.h"
|
|
13
13
|
#include "git2/transport.h"
|
|
14
14
|
#include "git2/sys/transport.h"
|
|
15
|
-
#include "
|
|
15
|
+
#include "fs_path.h"
|
|
16
16
|
|
|
17
17
|
typedef struct transport_definition {
|
|
18
18
|
char *prefix;
|
|
@@ -82,7 +82,7 @@ static int transport_find_fn(
|
|
|
82
82
|
* to a directory and if so assume local path, else assume SSH */
|
|
83
83
|
|
|
84
84
|
/* Check to see if the path points to a file on the local file system */
|
|
85
|
-
if (!definition &&
|
|
85
|
+
if (!definition && git_fs_path_exists(url) && git_fs_path_isdir(url))
|
|
86
86
|
definition = &local_transport_definition;
|
|
87
87
|
#endif
|
|
88
88
|
|
|
@@ -98,7 +98,7 @@ static int transport_find_fn(
|
|
|
98
98
|
|
|
99
99
|
#ifndef GIT_WIN32
|
|
100
100
|
/* Check to see if the path points to a file on the local file system */
|
|
101
|
-
if (!definition &&
|
|
101
|
+
if (!definition && git_fs_path_exists(url) && git_fs_path_isdir(url))
|
|
102
102
|
definition = &local_transport_definition;
|
|
103
103
|
#endif
|
|
104
104
|
|
|
@@ -143,7 +143,7 @@ int git_transport_register(
|
|
|
143
143
|
git_transport_cb cb,
|
|
144
144
|
void *param)
|
|
145
145
|
{
|
|
146
|
-
|
|
146
|
+
git_str prefix = GIT_STR_INIT;
|
|
147
147
|
transport_definition *d, *definition = NULL;
|
|
148
148
|
size_t i;
|
|
149
149
|
int error = 0;
|
|
@@ -151,7 +151,7 @@ int git_transport_register(
|
|
|
151
151
|
GIT_ASSERT_ARG(scheme);
|
|
152
152
|
GIT_ASSERT_ARG(cb);
|
|
153
153
|
|
|
154
|
-
if ((error =
|
|
154
|
+
if ((error = git_str_printf(&prefix, "%s://", scheme)) < 0)
|
|
155
155
|
goto on_error;
|
|
156
156
|
|
|
157
157
|
git_vector_foreach(&custom_transports, i, d) {
|
|
@@ -164,7 +164,7 @@ int git_transport_register(
|
|
|
164
164
|
definition = git__calloc(1, sizeof(transport_definition));
|
|
165
165
|
GIT_ERROR_CHECK_ALLOC(definition);
|
|
166
166
|
|
|
167
|
-
definition->prefix =
|
|
167
|
+
definition->prefix = git_str_detach(&prefix);
|
|
168
168
|
definition->fn = cb;
|
|
169
169
|
definition->param = param;
|
|
170
170
|
|
|
@@ -174,21 +174,21 @@ int git_transport_register(
|
|
|
174
174
|
return 0;
|
|
175
175
|
|
|
176
176
|
on_error:
|
|
177
|
-
|
|
177
|
+
git_str_dispose(&prefix);
|
|
178
178
|
git__free(definition);
|
|
179
179
|
return error;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
int git_transport_unregister(const char *scheme)
|
|
183
183
|
{
|
|
184
|
-
|
|
184
|
+
git_str prefix = GIT_STR_INIT;
|
|
185
185
|
transport_definition *d;
|
|
186
186
|
size_t i;
|
|
187
187
|
int error = 0;
|
|
188
188
|
|
|
189
189
|
GIT_ASSERT_ARG(scheme);
|
|
190
190
|
|
|
191
|
-
if ((error =
|
|
191
|
+
if ((error = git_str_printf(&prefix, "%s://", scheme)) < 0)
|
|
192
192
|
goto done;
|
|
193
193
|
|
|
194
194
|
git_vector_foreach(&custom_transports, i, d) {
|
|
@@ -210,7 +210,7 @@ int git_transport_unregister(const char *scheme)
|
|
|
210
210
|
error = GIT_ENOTFOUND;
|
|
211
211
|
|
|
212
212
|
done:
|
|
213
|
-
|
|
213
|
+
git_str_dispose(&prefix);
|
|
214
214
|
return error;
|
|
215
215
|
}
|
|
216
216
|
|
|
@@ -7,17 +7,15 @@
|
|
|
7
7
|
|
|
8
8
|
#include "auth.h"
|
|
9
9
|
|
|
10
|
-
#include "git2.h"
|
|
11
|
-
#include "buffer.h"
|
|
12
10
|
#include "git2/sys/credential.h"
|
|
13
11
|
|
|
14
12
|
static int basic_next_token(
|
|
15
|
-
|
|
13
|
+
git_str *out,
|
|
16
14
|
git_http_auth_context *ctx,
|
|
17
15
|
git_credential *c)
|
|
18
16
|
{
|
|
19
17
|
git_credential_userpass_plaintext *cred;
|
|
20
|
-
|
|
18
|
+
git_str raw = GIT_STR_INIT;
|
|
21
19
|
int error = GIT_EAUTH;
|
|
22
20
|
|
|
23
21
|
GIT_UNUSED(ctx);
|
|
@@ -29,11 +27,11 @@ static int basic_next_token(
|
|
|
29
27
|
|
|
30
28
|
cred = (git_credential_userpass_plaintext *)c;
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
git_str_printf(&raw, "%s:%s", cred->username, cred->password);
|
|
33
31
|
|
|
34
|
-
if (
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
if (git_str_oom(&raw) ||
|
|
33
|
+
git_str_puts(out, "Basic ") < 0 ||
|
|
34
|
+
git_str_encode_base64(out, git_str_cstr(&raw), raw.size) < 0)
|
|
37
35
|
goto on_error;
|
|
38
36
|
|
|
39
37
|
error = 0;
|
|
@@ -42,7 +40,7 @@ on_error:
|
|
|
42
40
|
if (raw.size)
|
|
43
41
|
git__memzero(raw.ptr, raw.size);
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
git_str_dispose(&raw);
|
|
46
44
|
return error;
|
|
47
45
|
}
|
|
48
46
|
|
|
@@ -10,13 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
#include "common.h"
|
|
12
12
|
|
|
13
|
-
#include "git2.h"
|
|
14
13
|
#include "netops.h"
|
|
15
14
|
|
|
16
15
|
typedef enum {
|
|
17
16
|
GIT_HTTP_AUTH_BASIC = 1,
|
|
18
17
|
GIT_HTTP_AUTH_NEGOTIATE = 2,
|
|
19
|
-
GIT_HTTP_AUTH_NTLM = 4
|
|
18
|
+
GIT_HTTP_AUTH_NTLM = 4
|
|
20
19
|
} git_http_auth_t;
|
|
21
20
|
|
|
22
21
|
typedef struct git_http_auth_context git_http_auth_context;
|
|
@@ -35,7 +34,7 @@ struct git_http_auth_context {
|
|
|
35
34
|
int (*set_challenge)(git_http_auth_context *ctx, const char *challenge);
|
|
36
35
|
|
|
37
36
|
/** Gets the next authentication token from the context */
|
|
38
|
-
int (*next_token)(
|
|
37
|
+
int (*next_token)(git_str *out, git_http_auth_context *ctx, git_credential *cred);
|
|
39
38
|
|
|
40
39
|
/** Examines if all tokens have been presented. */
|
|
41
40
|
int (*is_complete)(git_http_auth_context *ctx);
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
#if defined(GIT_GSSAPI) || defined(GIT_GSSFRAMEWORK)
|
|
11
11
|
|
|
12
12
|
#include "git2.h"
|
|
13
|
-
#include "buffer.h"
|
|
14
13
|
#include "auth.h"
|
|
15
14
|
#include "git2/sys/credential.h"
|
|
16
15
|
|
|
@@ -33,7 +32,7 @@ typedef struct {
|
|
|
33
32
|
git_http_auth_context parent;
|
|
34
33
|
unsigned configured : 1,
|
|
35
34
|
complete : 1;
|
|
36
|
-
|
|
35
|
+
git_str target;
|
|
37
36
|
char *challenge;
|
|
38
37
|
gss_ctx_id_t gss_context;
|
|
39
38
|
gss_OID oid;
|
|
@@ -87,14 +86,14 @@ static void negotiate_context_dispose(http_auth_negotiate_context *ctx)
|
|
|
87
86
|
ctx->gss_context = GSS_C_NO_CONTEXT;
|
|
88
87
|
}
|
|
89
88
|
|
|
90
|
-
|
|
89
|
+
git_str_dispose(&ctx->target);
|
|
91
90
|
|
|
92
91
|
git__free(ctx->challenge);
|
|
93
92
|
ctx->challenge = NULL;
|
|
94
93
|
}
|
|
95
94
|
|
|
96
95
|
static int negotiate_next_token(
|
|
97
|
-
|
|
96
|
+
git_str *buf,
|
|
98
97
|
git_http_auth_context *c,
|
|
99
98
|
git_credential *cred)
|
|
100
99
|
{
|
|
@@ -104,7 +103,7 @@ static int negotiate_next_token(
|
|
|
104
103
|
input_token = GSS_C_EMPTY_BUFFER,
|
|
105
104
|
output_token = GSS_C_EMPTY_BUFFER;
|
|
106
105
|
gss_buffer_t input_token_ptr = GSS_C_NO_BUFFER;
|
|
107
|
-
|
|
106
|
+
git_str input_buf = GIT_STR_INIT;
|
|
108
107
|
gss_name_t server = NULL;
|
|
109
108
|
gss_OID mech;
|
|
110
109
|
size_t challenge_len;
|
|
@@ -142,7 +141,7 @@ static int negotiate_next_token(
|
|
|
142
141
|
}
|
|
143
142
|
|
|
144
143
|
if (challenge_len > 9) {
|
|
145
|
-
if (
|
|
144
|
+
if (git_str_decode_base64(&input_buf,
|
|
146
145
|
ctx->challenge + 10, challenge_len - 10) < 0) {
|
|
147
146
|
git_error_set(GIT_ERROR_NET, "invalid negotiate challenge from server");
|
|
148
147
|
error = -1;
|
|
@@ -192,16 +191,16 @@ static int negotiate_next_token(
|
|
|
192
191
|
goto done;
|
|
193
192
|
}
|
|
194
193
|
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
git_str_puts(buf, "Negotiate ");
|
|
195
|
+
git_str_encode_base64(buf, output_token.value, output_token.length);
|
|
197
196
|
|
|
198
|
-
if (
|
|
197
|
+
if (git_str_oom(buf))
|
|
199
198
|
error = -1;
|
|
200
199
|
|
|
201
200
|
done:
|
|
202
201
|
gss_release_name(&status_minor, &server);
|
|
203
202
|
gss_release_buffer(&status_minor, (gss_buffer_t) &output_token);
|
|
204
|
-
|
|
203
|
+
git_str_dispose(&input_buf);
|
|
205
204
|
return error;
|
|
206
205
|
}
|
|
207
206
|
|
|
@@ -270,10 +269,10 @@ static int negotiate_init_context(
|
|
|
270
269
|
return GIT_EAUTH;
|
|
271
270
|
}
|
|
272
271
|
|
|
273
|
-
|
|
274
|
-
|
|
272
|
+
git_str_puts(&ctx->target, "HTTP@");
|
|
273
|
+
git_str_puts(&ctx->target, url->host);
|
|
275
274
|
|
|
276
|
-
if (
|
|
275
|
+
if (git_str_oom(&ctx->target))
|
|
277
276
|
return -1;
|
|
278
277
|
|
|
279
278
|
ctx->gss_context = GSS_C_NO_CONTEXT;
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "auth_ntlm.h"
|
|
9
|
+
|
|
9
10
|
#include "common.h"
|
|
10
|
-
#include "
|
|
11
|
+
#include "str.h"
|
|
11
12
|
#include "auth.h"
|
|
12
|
-
#include "auth_ntlm.h"
|
|
13
13
|
#include "git2/sys/credential.h"
|
|
14
14
|
|
|
15
15
|
#ifdef GIT_NTLM
|
|
@@ -77,12 +77,12 @@ done:
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
static int ntlm_next_token(
|
|
80
|
-
|
|
80
|
+
git_str *buf,
|
|
81
81
|
git_http_auth_context *c,
|
|
82
82
|
git_credential *cred)
|
|
83
83
|
{
|
|
84
84
|
http_auth_ntlm_context *ctx = (http_auth_ntlm_context *)c;
|
|
85
|
-
|
|
85
|
+
git_str input_buf = GIT_STR_INIT;
|
|
86
86
|
const unsigned char *msg;
|
|
87
87
|
size_t challenge_len, msg_len;
|
|
88
88
|
int error = GIT_EAUTH;
|
|
@@ -129,7 +129,7 @@ static int ntlm_next_token(
|
|
|
129
129
|
goto done;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
if (
|
|
132
|
+
if (git_str_decode_base64(&input_buf,
|
|
133
133
|
ctx->challenge + 5, challenge_len - 5) < 0) {
|
|
134
134
|
git_error_set(GIT_ERROR_NET, "invalid NTLM challenge from server");
|
|
135
135
|
goto done;
|
|
@@ -149,16 +149,16 @@ static int ntlm_next_token(
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
git_str_puts(buf, "NTLM ");
|
|
153
|
+
git_str_encode_base64(buf, (const char *)msg, msg_len);
|
|
154
154
|
|
|
155
|
-
if (
|
|
155
|
+
if (git_str_oom(buf))
|
|
156
156
|
goto done;
|
|
157
157
|
|
|
158
158
|
error = 0;
|
|
159
159
|
|
|
160
160
|
done:
|
|
161
|
-
|
|
161
|
+
git_str_dispose(&input_buf);
|
|
162
162
|
return error;
|
|
163
163
|
}
|
|
164
164
|
|
|
@@ -7,12 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
#include "common.h"
|
|
9
9
|
|
|
10
|
-
#include "git2.h"
|
|
11
|
-
#include "buffer.h"
|
|
12
10
|
#include "netops.h"
|
|
13
|
-
#include "git2/sys/transport.h"
|
|
14
11
|
#include "stream.h"
|
|
15
12
|
#include "streams/socket.h"
|
|
13
|
+
#include "git2/sys/transport.h"
|
|
16
14
|
|
|
17
15
|
#define OWNING_SUBTRANSPORT(s) ((git_subtransport *)(s)->parent.subtransport)
|
|
18
16
|
|
|
@@ -39,7 +37,7 @@ typedef struct {
|
|
|
39
37
|
*
|
|
40
38
|
* For example: 0035git-upload-pack /libgit2/libgit2\0host=github.com\0
|
|
41
39
|
*/
|
|
42
|
-
static int gen_proto(
|
|
40
|
+
static int gen_proto(git_str *request, const char *cmd, const char *url)
|
|
43
41
|
{
|
|
44
42
|
char *delim, *repo;
|
|
45
43
|
char host[] = "host=";
|
|
@@ -61,13 +59,13 @@ static int gen_proto(git_buf *request, const char *cmd, const char *url)
|
|
|
61
59
|
|
|
62
60
|
len = 4 + strlen(cmd) + 1 + strlen(repo) + 1 + strlen(host) + (delim - url) + 1;
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
git_str_grow(request, len);
|
|
63
|
+
git_str_printf(request, "%04x%s %s%c%s",
|
|
66
64
|
(unsigned int)(len & 0x0FFFF), cmd, repo, 0, host);
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
git_str_put(request, url, delim - url);
|
|
66
|
+
git_str_putc(request, '\0');
|
|
69
67
|
|
|
70
|
-
if (
|
|
68
|
+
if (git_str_oom(request))
|
|
71
69
|
return -1;
|
|
72
70
|
|
|
73
71
|
return 0;
|
|
@@ -75,7 +73,7 @@ static int gen_proto(git_buf *request, const char *cmd, const char *url)
|
|
|
75
73
|
|
|
76
74
|
static int send_command(git_proto_stream *s)
|
|
77
75
|
{
|
|
78
|
-
|
|
76
|
+
git_str request = GIT_STR_INIT;
|
|
79
77
|
int error;
|
|
80
78
|
|
|
81
79
|
if ((error = gen_proto(&request, s->cmd, s->url)) < 0)
|
|
@@ -87,7 +85,7 @@ static int send_command(git_proto_stream *s)
|
|
|
87
85
|
s->sent_command = 1;
|
|
88
86
|
|
|
89
87
|
cleanup:
|
|
90
|
-
|
|
88
|
+
git_str_dispose(&request);
|
|
91
89
|
return error;
|
|
92
90
|
}
|
|
93
91
|
|
|
@@ -9,13 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
#ifndef GIT_WINHTTP
|
|
11
11
|
|
|
12
|
-
#include "git2.h"
|
|
13
12
|
#include "http_parser.h"
|
|
14
|
-
#include "buffer.h"
|
|
15
13
|
#include "net.h"
|
|
16
14
|
#include "netops.h"
|
|
17
15
|
#include "remote.h"
|
|
18
|
-
#include "git2/sys/credential.h"
|
|
19
16
|
#include "smart.h"
|
|
20
17
|
#include "auth.h"
|
|
21
18
|
#include "http.h"
|
|
@@ -25,6 +22,7 @@
|
|
|
25
22
|
#include "streams/tls.h"
|
|
26
23
|
#include "streams/socket.h"
|
|
27
24
|
#include "httpclient.h"
|
|
25
|
+
#include "git2/sys/credential.h"
|
|
28
26
|
|
|
29
27
|
bool git_http__expect_continue = false;
|
|
30
28
|
|
|
@@ -40,7 +38,8 @@ typedef struct {
|
|
|
40
38
|
const char *url;
|
|
41
39
|
const char *request_type;
|
|
42
40
|
const char *response_type;
|
|
43
|
-
unsigned
|
|
41
|
+
unsigned int initial : 1,
|
|
42
|
+
chunked : 1;
|
|
44
43
|
} http_service;
|
|
45
44
|
|
|
46
45
|
typedef struct {
|
|
@@ -72,24 +71,28 @@ static const http_service upload_pack_ls_service = {
|
|
|
72
71
|
GIT_HTTP_METHOD_GET, "/info/refs?service=git-upload-pack",
|
|
73
72
|
NULL,
|
|
74
73
|
"application/x-git-upload-pack-advertisement",
|
|
74
|
+
1,
|
|
75
75
|
0
|
|
76
76
|
};
|
|
77
77
|
static const http_service upload_pack_service = {
|
|
78
78
|
GIT_HTTP_METHOD_POST, "/git-upload-pack",
|
|
79
79
|
"application/x-git-upload-pack-request",
|
|
80
80
|
"application/x-git-upload-pack-result",
|
|
81
|
+
0,
|
|
81
82
|
0
|
|
82
83
|
};
|
|
83
84
|
static const http_service receive_pack_ls_service = {
|
|
84
85
|
GIT_HTTP_METHOD_GET, "/info/refs?service=git-receive-pack",
|
|
85
86
|
NULL,
|
|
86
87
|
"application/x-git-receive-pack-advertisement",
|
|
88
|
+
1,
|
|
87
89
|
0
|
|
88
90
|
};
|
|
89
91
|
static const http_service receive_pack_service = {
|
|
90
92
|
GIT_HTTP_METHOD_POST, "/git-receive-pack",
|
|
91
93
|
"application/x-git-receive-pack-request",
|
|
92
94
|
"application/x-git-receive-pack-result",
|
|
95
|
+
0,
|
|
93
96
|
1
|
|
94
97
|
};
|
|
95
98
|
|
|
@@ -176,6 +179,7 @@ GIT_INLINE(int) handle_remote_auth(
|
|
|
176
179
|
git_http_response *response)
|
|
177
180
|
{
|
|
178
181
|
http_subtransport *transport = OWNING_SUBTRANSPORT(stream);
|
|
182
|
+
git_remote_connect_options *connect_opts = &transport->owner->connect_opts;
|
|
179
183
|
|
|
180
184
|
if (response->server_auth_credtypes == 0) {
|
|
181
185
|
git_error_set(GIT_ERROR_HTTP, "server requires authentication that we do not support");
|
|
@@ -189,8 +193,8 @@ GIT_INLINE(int) handle_remote_auth(
|
|
|
189
193
|
transport->owner->url,
|
|
190
194
|
response->server_auth_schemetypes,
|
|
191
195
|
response->server_auth_credtypes,
|
|
192
|
-
|
|
193
|
-
|
|
196
|
+
connect_opts->callbacks.credentials,
|
|
197
|
+
connect_opts->callbacks.payload);
|
|
194
198
|
}
|
|
195
199
|
|
|
196
200
|
GIT_INLINE(int) handle_proxy_auth(
|
|
@@ -198,6 +202,7 @@ GIT_INLINE(int) handle_proxy_auth(
|
|
|
198
202
|
git_http_response *response)
|
|
199
203
|
{
|
|
200
204
|
http_subtransport *transport = OWNING_SUBTRANSPORT(stream);
|
|
205
|
+
git_remote_connect_options *connect_opts = &transport->owner->connect_opts;
|
|
201
206
|
|
|
202
207
|
if (response->proxy_auth_credtypes == 0) {
|
|
203
208
|
git_error_set(GIT_ERROR_HTTP, "proxy requires authentication that we do not support");
|
|
@@ -208,13 +213,26 @@ GIT_INLINE(int) handle_proxy_auth(
|
|
|
208
213
|
return handle_auth(
|
|
209
214
|
&transport->proxy,
|
|
210
215
|
SERVER_TYPE_PROXY,
|
|
211
|
-
|
|
216
|
+
connect_opts->proxy_opts.url,
|
|
212
217
|
response->server_auth_schemetypes,
|
|
213
218
|
response->proxy_auth_credtypes,
|
|
214
|
-
|
|
215
|
-
|
|
219
|
+
connect_opts->proxy_opts.credentials,
|
|
220
|
+
connect_opts->proxy_opts.payload);
|
|
216
221
|
}
|
|
217
222
|
|
|
223
|
+
static bool allow_redirect(http_stream *stream)
|
|
224
|
+
{
|
|
225
|
+
http_subtransport *transport = OWNING_SUBTRANSPORT(stream);
|
|
226
|
+
|
|
227
|
+
switch (transport->owner->connect_opts.follow_redirects) {
|
|
228
|
+
case GIT_REMOTE_REDIRECT_INITIAL:
|
|
229
|
+
return (stream->service->initial == 1);
|
|
230
|
+
case GIT_REMOTE_REDIRECT_ALL:
|
|
231
|
+
return true;
|
|
232
|
+
default:
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
218
236
|
|
|
219
237
|
static int handle_response(
|
|
220
238
|
bool *complete,
|
|
@@ -233,7 +251,7 @@ static int handle_response(
|
|
|
233
251
|
return -1;
|
|
234
252
|
}
|
|
235
253
|
|
|
236
|
-
if (git_net_url_apply_redirect(&transport->server.url, response->location, stream->service->url) < 0) {
|
|
254
|
+
if (git_net_url_apply_redirect(&transport->server.url, response->location, allow_redirect(stream), stream->service->url) < 0) {
|
|
237
255
|
return -1;
|
|
238
256
|
}
|
|
239
257
|
|
|
@@ -288,6 +306,7 @@ static int lookup_proxy(
|
|
|
288
306
|
bool *out_use,
|
|
289
307
|
http_subtransport *transport)
|
|
290
308
|
{
|
|
309
|
+
git_remote_connect_options *connect_opts = &transport->owner->connect_opts;
|
|
291
310
|
const char *proxy;
|
|
292
311
|
git_remote *remote;
|
|
293
312
|
char *config = NULL;
|
|
@@ -296,9 +315,9 @@ static int lookup_proxy(
|
|
|
296
315
|
*out_use = false;
|
|
297
316
|
git_net_url_dispose(&transport->proxy.url);
|
|
298
317
|
|
|
299
|
-
switch (
|
|
318
|
+
switch (connect_opts->proxy_opts.type) {
|
|
300
319
|
case GIT_PROXY_SPECIFIED:
|
|
301
|
-
proxy =
|
|
320
|
+
proxy = connect_opts->proxy_opts.url;
|
|
302
321
|
break;
|
|
303
322
|
|
|
304
323
|
case GIT_PROXY_AUTO:
|
|
@@ -347,7 +366,7 @@ static int generate_request(
|
|
|
347
366
|
request->credentials = transport->server.cred;
|
|
348
367
|
request->proxy = use_proxy ? &transport->proxy.url : NULL;
|
|
349
368
|
request->proxy_credentials = transport->proxy.cred;
|
|
350
|
-
request->custom_headers = &transport->owner->custom_headers;
|
|
369
|
+
request->custom_headers = &transport->owner->connect_opts.custom_headers;
|
|
351
370
|
|
|
352
371
|
if (stream->service->method == GIT_HTTP_METHOD_POST) {
|
|
353
372
|
request->chunked = stream->service->chunked;
|
|
@@ -635,6 +654,7 @@ static int http_action(
|
|
|
635
654
|
git_smart_service_t action)
|
|
636
655
|
{
|
|
637
656
|
http_subtransport *transport = GIT_CONTAINER_OF(t, http_subtransport, parent);
|
|
657
|
+
git_remote_connect_options *connect_opts = &transport->owner->connect_opts;
|
|
638
658
|
http_stream *stream;
|
|
639
659
|
const http_service *service;
|
|
640
660
|
int error;
|
|
@@ -666,10 +686,10 @@ static int http_action(
|
|
|
666
686
|
if (!transport->http_client) {
|
|
667
687
|
git_http_client_options opts = {0};
|
|
668
688
|
|
|
669
|
-
opts.server_certificate_check_cb =
|
|
670
|
-
opts.server_certificate_check_payload =
|
|
671
|
-
opts.proxy_certificate_check_cb =
|
|
672
|
-
opts.proxy_certificate_check_payload =
|
|
689
|
+
opts.server_certificate_check_cb = connect_opts->callbacks.certificate_check;
|
|
690
|
+
opts.server_certificate_check_payload = connect_opts->callbacks.payload;
|
|
691
|
+
opts.proxy_certificate_check_cb = connect_opts->proxy_opts.certificate_check;
|
|
692
|
+
opts.proxy_certificate_check_payload = connect_opts->proxy_opts.payload;
|
|
673
693
|
|
|
674
694
|
if (git_http_client_new(&transport->http_client, &opts) < 0)
|
|
675
695
|
return -1;
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
#ifndef INCLUDE_transports_http_h__
|
|
9
9
|
#define INCLUDE_transports_http_h__
|
|
10
10
|
|
|
11
|
-
#include "buffer.h"
|
|
12
11
|
#include "settings.h"
|
|
13
12
|
#include "httpclient.h"
|
|
14
13
|
|
|
@@ -16,14 +15,14 @@
|
|
|
16
15
|
|
|
17
16
|
extern bool git_http__expect_continue;
|
|
18
17
|
|
|
19
|
-
GIT_INLINE(int) git_http__user_agent(
|
|
18
|
+
GIT_INLINE(int) git_http__user_agent(git_str *buf)
|
|
20
19
|
{
|
|
21
20
|
const char *ua = git_libgit2__user_agent();
|
|
22
21
|
|
|
23
22
|
if (!ua)
|
|
24
23
|
ua = "libgit2 " LIBGIT2_VERSION;
|
|
25
24
|
|
|
26
|
-
return
|
|
25
|
+
return git_str_printf(buf, "git/2.0 (%s)", ua);
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
#endif
|