rugged 1.3.1 → 1.9.0
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/README.md +34 -2
- data/ext/rugged/extconf.rb +6 -3
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_allocator.c +0 -54
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +141 -289
- data/vendor/libgit2/COPYING +301 -20
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- 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 +17 -17
- data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -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 +34 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
- data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
- data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
- data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
- data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
- data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
- data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
- data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
- data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
- data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -22
- data/vendor/libgit2/deps/zlib/crc32.c +931 -317
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +428 -453
- data/vendor/libgit2/deps/zlib/deflate.h +51 -23
- data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
- data/vendor/libgit2/deps/zlib/infback.c +19 -31
- data/vendor/libgit2/deps/zlib/inffast.c +15 -18
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +75 -110
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +294 -380
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +310 -284
- data/vendor/libgit2/deps/zlib/zutil.c +20 -46
- data/vendor/libgit2/deps/zlib/zutil.h +24 -41
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +43 -8
- data/vendor/libgit2/include/git2/attr.h +28 -6
- data/vendor/libgit2/include/git2/blame.h +137 -29
- data/vendor/libgit2/include/git2/blob.h +85 -29
- data/vendor/libgit2/include/git2/branch.h +25 -16
- data/vendor/libgit2/include/git2/buffer.h +24 -82
- data/vendor/libgit2/include/git2/cert.h +4 -3
- data/vendor/libgit2/include/git2/checkout.h +88 -34
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +134 -3
- data/vendor/libgit2/include/git2/common.h +172 -59
- data/vendor/libgit2/include/git2/config.h +118 -32
- data/vendor/libgit2/include/git2/credential.h +32 -3
- data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
- data/vendor/libgit2/include/git2/deprecated.h +141 -3
- data/vendor/libgit2/include/git2/describe.h +20 -3
- data/vendor/libgit2/include/git2/diff.h +95 -19
- data/vendor/libgit2/include/git2/email.h +10 -30
- data/vendor/libgit2/include/git2/errors.h +51 -61
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +21 -9
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +4 -2
- data/vendor/libgit2/include/git2/ignore.h +11 -1
- data/vendor/libgit2/include/git2/index.h +111 -11
- data/vendor/libgit2/include/git2/indexer.h +67 -2
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +70 -5
- data/vendor/libgit2/include/git2/message.h +4 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +57 -7
- data/vendor/libgit2/include/git2/odb.h +156 -33
- data/vendor/libgit2/include/git2/odb_backend.h +132 -16
- data/vendor/libgit2/include/git2/oid.h +116 -17
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +37 -9
- data/vendor/libgit2/include/git2/patch.h +10 -3
- data/vendor/libgit2/include/git2/pathspec.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +11 -1
- data/vendor/libgit2/include/git2/rebase.h +18 -7
- data/vendor/libgit2/include/git2/refdb.h +5 -2
- data/vendor/libgit2/include/git2/reflog.h +4 -3
- data/vendor/libgit2/include/git2/refs.h +11 -8
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +295 -54
- data/vendor/libgit2/include/git2/repository.h +95 -25
- data/vendor/libgit2/include/git2/reset.h +18 -5
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +4 -4
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/signature.h +47 -2
- data/vendor/libgit2/include/git2/stash.h +78 -10
- data/vendor/libgit2/include/git2/status.h +24 -11
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -16
- data/vendor/libgit2/include/git2/submodule.h +27 -11
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +53 -0
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +26 -3
- data/vendor/libgit2/include/git2/sys/transport.h +87 -41
- data/vendor/libgit2/include/git2/tag.h +4 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +20 -8
- data/vendor/libgit2/include/git2/types.h +26 -10
- data/vendor/libgit2/include/git2/version.h +63 -6
- data/vendor/libgit2/include/git2/worktree.h +30 -8
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +203 -420
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
- data/vendor/libgit2/src/cli/cmd.h +37 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
- data/vendor/libgit2/src/cli/cmd_help.c +85 -0
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +134 -0
- data/vendor/libgit2/src/cli/opt.c +695 -0
- data/vendor/libgit2/src/cli/opt.h +367 -0
- data/vendor/libgit2/src/cli/opt_usage.c +263 -0
- data/vendor/libgit2/src/cli/opt_usage.h +40 -0
- data/vendor/libgit2/src/cli/progress.c +395 -0
- data/vendor/libgit2/src/cli/progress.h +129 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/libgit2/branch.h +31 -0
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
- data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
- data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
- data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
- data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
- data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
- data/vendor/libgit2/src/libgit2/oid.h +284 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
- data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
- data/vendor/libgit2/src/libgit2/remote.h +101 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
- data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
- data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
- data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
- data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
- data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
- data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
- data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
- data/vendor/libgit2/src/util/alloc.h +65 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
- data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
- data/vendor/libgit2/src/util/date.h +45 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
- data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
- data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +347 -0
- data/vendor/libgit2/src/util/hash/openssl.h +61 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +73 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1160 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
- data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +230 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
- data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
- data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
- data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +431 -362
- data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/failalloc.c +0 -92
- data/vendor/libgit2/src/allocators/failalloc.h +0 -23
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/config_entries.c +0 -237
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/errors.c +0 -238
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/idxmap.c +0 -157
- data/vendor/libgit2/src/idxmap.h +0 -177
- data/vendor/libgit2/src/khash.h +0 -615
- data/vendor/libgit2/src/libgit2.h +0 -15
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/netops.c +0 -125
- data/vendor/libgit2/src/netops.h +0 -68
- data/vendor/libgit2/src/offmap.c +0 -101
- data/vendor/libgit2/src/offmap.h +0 -133
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/oidarray.c +0 -43
- data/vendor/libgit2/src/oidmap.c +0 -107
- data/vendor/libgit2/src/oidmap.h +0 -128
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/streams/socket.c +0 -239
- data/vendor/libgit2/src/strmap.c +0 -100
- data/vendor/libgit2/src/strmap.h +0 -131
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/threadstate.c +0 -84
- data/vendor/libgit2/src/threadstate.h +0 -24
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- data/vendor/libgit2/src/win32/utf-conv.c +0 -146
- data/vendor/libgit2/src/win32/utf-conv.h +0 -60
- /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
#include "common.h"
|
9
9
|
#include "git2.h"
|
10
|
-
|
10
|
+
|
11
11
|
#include "vector.h"
|
12
12
|
#include "trace.h"
|
13
13
|
#include "httpclient.h"
|
@@ -21,6 +21,7 @@
|
|
21
21
|
#include "streams/socket.h"
|
22
22
|
#include "streams/tls.h"
|
23
23
|
#include "auth.h"
|
24
|
+
#include "httpparser.h"
|
24
25
|
|
25
26
|
static git_http_auth_scheme auth_schemes[] = {
|
26
27
|
{ GIT_HTTP_AUTH_NEGOTIATE, "Negotiate", GIT_CREDENTIAL_DEFAULT, git_http_auth_negotiate },
|
@@ -84,8 +85,8 @@ typedef struct {
|
|
84
85
|
git_http_response *response;
|
85
86
|
|
86
87
|
/* Temporary buffers to avoid extra mallocs */
|
87
|
-
|
88
|
-
|
88
|
+
git_str parse_header_name;
|
89
|
+
git_str parse_header_value;
|
89
90
|
|
90
91
|
/* Parser state */
|
91
92
|
int error;
|
@@ -108,7 +109,7 @@ struct git_http_client {
|
|
108
109
|
git_http_server_t current_server;
|
109
110
|
http_client_state state;
|
110
111
|
|
111
|
-
|
112
|
+
git_http_parser parser;
|
112
113
|
|
113
114
|
git_http_server server;
|
114
115
|
git_http_server proxy;
|
@@ -120,8 +121,8 @@ struct git_http_client {
|
|
120
121
|
request_chunked : 1;
|
121
122
|
|
122
123
|
/* Temporary buffers to avoid extra mallocs */
|
123
|
-
|
124
|
-
|
124
|
+
git_str request_msg;
|
125
|
+
git_str read_buf;
|
125
126
|
|
126
127
|
/* A subset of information from the request */
|
127
128
|
size_t request_body_len,
|
@@ -154,14 +155,14 @@ void git_http_response_dispose(git_http_response *response)
|
|
154
155
|
memset(response, 0, sizeof(git_http_response));
|
155
156
|
}
|
156
157
|
|
157
|
-
static int on_header_complete(
|
158
|
+
static int on_header_complete(git_http_parser *parser)
|
158
159
|
{
|
159
160
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
160
161
|
git_http_client *client = ctx->client;
|
161
162
|
git_http_response *response = ctx->response;
|
162
163
|
|
163
|
-
|
164
|
-
|
164
|
+
git_str *name = &ctx->parse_header_name;
|
165
|
+
git_str *value = &ctx->parse_header_value;
|
165
166
|
|
166
167
|
if (!strcasecmp("Content-Type", name->ptr)) {
|
167
168
|
if (response->content_type) {
|
@@ -193,7 +194,7 @@ static int on_header_complete(http_parser *parser)
|
|
193
194
|
} else if (!strcasecmp("Transfer-Encoding", name->ptr) &&
|
194
195
|
!strcasecmp("chunked", value->ptr)) {
|
195
196
|
ctx->response->chunked = 1;
|
196
|
-
} else if (!strcasecmp("Proxy-Authenticate",
|
197
|
+
} else if (!strcasecmp("Proxy-Authenticate", git_str_cstr(name))) {
|
197
198
|
char *dup = git__strndup(value->ptr, value->size);
|
198
199
|
GIT_ERROR_CHECK_ALLOC(dup);
|
199
200
|
|
@@ -219,7 +220,7 @@ static int on_header_complete(http_parser *parser)
|
|
219
220
|
return 0;
|
220
221
|
}
|
221
222
|
|
222
|
-
static int on_header_field(
|
223
|
+
static int on_header_field(git_http_parser *parser, const char *str, size_t len)
|
223
224
|
{
|
224
225
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
225
226
|
|
@@ -232,15 +233,15 @@ static int on_header_field(http_parser *parser, const char *str, size_t len)
|
|
232
233
|
if (on_header_complete(parser) < 0)
|
233
234
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
234
235
|
|
235
|
-
|
236
|
-
|
236
|
+
git_str_clear(&ctx->parse_header_name);
|
237
|
+
git_str_clear(&ctx->parse_header_value);
|
237
238
|
/* Fall through */
|
238
239
|
|
239
240
|
case PARSE_HEADER_NONE:
|
240
241
|
case PARSE_HEADER_NAME:
|
241
242
|
ctx->parse_header_state = PARSE_HEADER_NAME;
|
242
243
|
|
243
|
-
if (
|
244
|
+
if (git_str_put(&ctx->parse_header_name, str, len) < 0)
|
244
245
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
245
246
|
|
246
247
|
break;
|
@@ -254,7 +255,7 @@ static int on_header_field(http_parser *parser, const char *str, size_t len)
|
|
254
255
|
return 0;
|
255
256
|
}
|
256
257
|
|
257
|
-
static int on_header_value(
|
258
|
+
static int on_header_value(git_http_parser *parser, const char *str, size_t len)
|
258
259
|
{
|
259
260
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
260
261
|
|
@@ -263,7 +264,7 @@ static int on_header_value(http_parser *parser, const char *str, size_t len)
|
|
263
264
|
case PARSE_HEADER_VALUE:
|
264
265
|
ctx->parse_header_state = PARSE_HEADER_VALUE;
|
265
266
|
|
266
|
-
if (
|
267
|
+
if (git_str_put(&ctx->parse_header_value, str, len) < 0)
|
267
268
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
268
269
|
|
269
270
|
break;
|
@@ -342,7 +343,7 @@ static int resend_needed(git_http_client *client, git_http_response *response)
|
|
342
343
|
return 0;
|
343
344
|
}
|
344
345
|
|
345
|
-
static int on_headers_complete(
|
346
|
+
static int on_headers_complete(git_http_parser *parser)
|
346
347
|
{
|
347
348
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
348
349
|
|
@@ -364,8 +365,8 @@ static int on_headers_complete(http_parser *parser)
|
|
364
365
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
365
366
|
}
|
366
367
|
|
367
|
-
ctx->response->status = parser
|
368
|
-
ctx->client->keepalive =
|
368
|
+
ctx->response->status = git_http_parser_status_code(parser);
|
369
|
+
ctx->client->keepalive = git_http_parser_keep_alive(parser);
|
369
370
|
|
370
371
|
/* Prepare for authentication */
|
371
372
|
collect_authinfo(&ctx->response->server_auth_schemetypes,
|
@@ -378,24 +379,21 @@ static int on_headers_complete(http_parser *parser)
|
|
378
379
|
ctx->response->resend_credentials = resend_needed(ctx->client,
|
379
380
|
ctx->response);
|
380
381
|
|
381
|
-
/* Stop parsing. */
|
382
|
-
http_parser_pause(parser, 1);
|
383
|
-
|
384
382
|
if (ctx->response->content_type || ctx->response->chunked)
|
385
383
|
ctx->client->state = READING_BODY;
|
386
384
|
else
|
387
385
|
ctx->client->state = DONE;
|
388
386
|
|
389
|
-
return
|
387
|
+
return git_http_parser_pause(parser);
|
390
388
|
}
|
391
389
|
|
392
|
-
static int on_body(
|
390
|
+
static int on_body(git_http_parser *parser, const char *buf, size_t len)
|
393
391
|
{
|
394
392
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
395
393
|
size_t max_len;
|
396
394
|
|
397
395
|
/* Saw data when we expected not to (eg, in consume_response_body) */
|
398
|
-
if (ctx->output_buf == NULL
|
396
|
+
if (ctx->output_buf == NULL || ctx->output_size == 0) {
|
399
397
|
ctx->parse_status = PARSE_STATUS_NO_OUTPUT;
|
400
398
|
return 0;
|
401
399
|
}
|
@@ -411,7 +409,7 @@ static int on_body(http_parser *parser, const char *buf, size_t len)
|
|
411
409
|
return 0;
|
412
410
|
}
|
413
411
|
|
414
|
-
static int on_message_complete(
|
412
|
+
static int on_message_complete(git_http_parser *parser)
|
415
413
|
{
|
416
414
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
417
415
|
|
@@ -548,7 +546,7 @@ static void free_auth_context(git_http_server *server)
|
|
548
546
|
}
|
549
547
|
|
550
548
|
static int apply_credentials(
|
551
|
-
|
549
|
+
git_str *buf,
|
552
550
|
git_http_server *server,
|
553
551
|
const char *header_name,
|
554
552
|
git_credential *credentials)
|
@@ -556,7 +554,7 @@ static int apply_credentials(
|
|
556
554
|
git_http_auth_context *auth = server->auth_context;
|
557
555
|
git_vector *challenges = &server->auth_challenges;
|
558
556
|
const char *challenge;
|
559
|
-
|
557
|
+
git_str token = GIT_STR_INIT;
|
560
558
|
int error = 0;
|
561
559
|
|
562
560
|
/* We've started a new request without creds; free the context. */
|
@@ -602,15 +600,15 @@ static int apply_credentials(
|
|
602
600
|
}
|
603
601
|
|
604
602
|
if (token.size > 0)
|
605
|
-
error =
|
603
|
+
error = git_str_printf(buf, "%s: %s\r\n", header_name, token.ptr);
|
606
604
|
|
607
605
|
done:
|
608
|
-
|
606
|
+
git_str_dispose(&token);
|
609
607
|
return error;
|
610
608
|
}
|
611
609
|
|
612
610
|
GIT_INLINE(int) apply_server_credentials(
|
613
|
-
|
611
|
+
git_str *buf,
|
614
612
|
git_http_client *client,
|
615
613
|
git_http_request *request)
|
616
614
|
{
|
@@ -621,7 +619,7 @@ GIT_INLINE(int) apply_server_credentials(
|
|
621
619
|
}
|
622
620
|
|
623
621
|
GIT_INLINE(int) apply_proxy_credentials(
|
624
|
-
|
622
|
+
git_str *buf,
|
625
623
|
git_http_client *client,
|
626
624
|
git_http_request *request)
|
627
625
|
{
|
@@ -631,54 +629,76 @@ GIT_INLINE(int) apply_proxy_credentials(
|
|
631
629
|
request->proxy_credentials);
|
632
630
|
}
|
633
631
|
|
634
|
-
static int puts_host_and_port(
|
632
|
+
static int puts_host_and_port(git_str *buf, git_net_url *url, bool force_port)
|
635
633
|
{
|
636
634
|
bool ipv6 = git_net_url_is_ipv6(url);
|
637
635
|
|
638
636
|
if (ipv6)
|
639
|
-
|
637
|
+
git_str_putc(buf, '[');
|
640
638
|
|
641
|
-
|
639
|
+
git_str_puts(buf, url->host);
|
642
640
|
|
643
641
|
if (ipv6)
|
644
|
-
|
642
|
+
git_str_putc(buf, ']');
|
645
643
|
|
646
644
|
if (force_port || !git_net_url_is_default_port(url)) {
|
647
|
-
|
648
|
-
|
645
|
+
git_str_putc(buf, ':');
|
646
|
+
git_str_puts(buf, url->port);
|
647
|
+
}
|
648
|
+
|
649
|
+
return git_str_oom(buf) ? -1 : 0;
|
650
|
+
}
|
651
|
+
|
652
|
+
static int append_user_agent(git_str *buf)
|
653
|
+
{
|
654
|
+
const char *product = git_settings__user_agent_product();
|
655
|
+
const char *comment = git_settings__user_agent();
|
656
|
+
|
657
|
+
GIT_ASSERT(product && comment);
|
658
|
+
|
659
|
+
if (!*product)
|
660
|
+
return 0;
|
661
|
+
|
662
|
+
git_str_puts(buf, "User-Agent: ");
|
663
|
+
git_str_puts(buf, product);
|
664
|
+
|
665
|
+
if (*comment) {
|
666
|
+
git_str_puts(buf, " (");
|
667
|
+
git_str_puts(buf, comment);
|
668
|
+
git_str_puts(buf, ")");
|
649
669
|
}
|
650
670
|
|
651
|
-
|
671
|
+
git_str_puts(buf, "\r\n");
|
672
|
+
|
673
|
+
return git_str_oom(buf) ? -1 : 0;
|
652
674
|
}
|
653
675
|
|
654
676
|
static int generate_connect_request(
|
655
677
|
git_http_client *client,
|
656
678
|
git_http_request *request)
|
657
679
|
{
|
658
|
-
|
680
|
+
git_str *buf;
|
659
681
|
int error;
|
660
682
|
|
661
|
-
|
683
|
+
git_str_clear(&client->request_msg);
|
662
684
|
buf = &client->request_msg;
|
663
685
|
|
664
|
-
|
686
|
+
git_str_puts(buf, "CONNECT ");
|
665
687
|
puts_host_and_port(buf, &client->server.url, true);
|
666
|
-
|
688
|
+
git_str_puts(buf, " HTTP/1.1\r\n");
|
667
689
|
|
668
|
-
|
669
|
-
git_http__user_agent(buf);
|
670
|
-
git_buf_puts(buf, "\r\n");
|
690
|
+
append_user_agent(buf);
|
671
691
|
|
672
|
-
|
692
|
+
git_str_puts(buf, "Host: ");
|
673
693
|
puts_host_and_port(buf, &client->server.url, true);
|
674
|
-
|
694
|
+
git_str_puts(buf, "\r\n");
|
675
695
|
|
676
696
|
if ((error = apply_proxy_credentials(buf, client, request) < 0))
|
677
697
|
return -1;
|
678
698
|
|
679
|
-
|
699
|
+
git_str_puts(buf, "\r\n");
|
680
700
|
|
681
|
-
return
|
701
|
+
return git_str_oom(buf) ? -1 : 0;
|
682
702
|
}
|
683
703
|
|
684
704
|
static bool use_connect_proxy(git_http_client *client)
|
@@ -690,53 +710,51 @@ static int generate_request(
|
|
690
710
|
git_http_client *client,
|
691
711
|
git_http_request *request)
|
692
712
|
{
|
693
|
-
|
713
|
+
git_str *buf;
|
694
714
|
size_t i;
|
695
715
|
int error;
|
696
716
|
|
697
717
|
GIT_ASSERT_ARG(client);
|
698
718
|
GIT_ASSERT_ARG(request);
|
699
719
|
|
700
|
-
|
720
|
+
git_str_clear(&client->request_msg);
|
701
721
|
buf = &client->request_msg;
|
702
722
|
|
703
723
|
/* GET|POST path HTTP/1.1 */
|
704
|
-
|
705
|
-
|
724
|
+
git_str_puts(buf, name_for_method(request->method));
|
725
|
+
git_str_putc(buf, ' ');
|
706
726
|
|
707
727
|
if (request->proxy && strcmp(request->url->scheme, "https"))
|
708
728
|
git_net_url_fmt(buf, request->url);
|
709
729
|
else
|
710
730
|
git_net_url_fmt_path(buf, request->url);
|
711
731
|
|
712
|
-
|
732
|
+
git_str_puts(buf, " HTTP/1.1\r\n");
|
713
733
|
|
714
|
-
|
715
|
-
git_http__user_agent(buf);
|
716
|
-
git_buf_puts(buf, "\r\n");
|
734
|
+
append_user_agent(buf);
|
717
735
|
|
718
|
-
|
736
|
+
git_str_puts(buf, "Host: ");
|
719
737
|
puts_host_and_port(buf, request->url, false);
|
720
|
-
|
738
|
+
git_str_puts(buf, "\r\n");
|
721
739
|
|
722
740
|
if (request->accept)
|
723
|
-
|
741
|
+
git_str_printf(buf, "Accept: %s\r\n", request->accept);
|
724
742
|
else
|
725
|
-
|
743
|
+
git_str_puts(buf, "Accept: */*\r\n");
|
726
744
|
|
727
745
|
if (request->content_type)
|
728
|
-
|
746
|
+
git_str_printf(buf, "Content-Type: %s\r\n",
|
729
747
|
request->content_type);
|
730
748
|
|
731
749
|
if (request->chunked)
|
732
|
-
|
750
|
+
git_str_puts(buf, "Transfer-Encoding: chunked\r\n");
|
733
751
|
|
734
752
|
if (request->content_length > 0)
|
735
|
-
|
753
|
+
git_str_printf(buf, "Content-Length: %"PRIuZ "\r\n",
|
736
754
|
request->content_length);
|
737
755
|
|
738
756
|
if (request->expect_continue)
|
739
|
-
|
757
|
+
git_str_printf(buf, "Expect: 100-continue\r\n");
|
740
758
|
|
741
759
|
if ((error = apply_server_credentials(buf, client, request)) < 0 ||
|
742
760
|
(!use_connect_proxy(client) &&
|
@@ -748,13 +766,13 @@ static int generate_request(
|
|
748
766
|
const char *hdr = request->custom_headers->strings[i];
|
749
767
|
|
750
768
|
if (hdr)
|
751
|
-
|
769
|
+
git_str_printf(buf, "%s\r\n", hdr);
|
752
770
|
}
|
753
771
|
}
|
754
772
|
|
755
|
-
|
773
|
+
git_str_puts(buf, "\r\n");
|
756
774
|
|
757
|
-
if (
|
775
|
+
if (git_str_oom(buf))
|
758
776
|
return -1;
|
759
777
|
|
760
778
|
return 0;
|
@@ -768,25 +786,37 @@ static int check_certificate(
|
|
768
786
|
void *cert_cb_payload)
|
769
787
|
{
|
770
788
|
git_cert *cert;
|
771
|
-
|
789
|
+
git_error *last_error;
|
772
790
|
int error;
|
773
791
|
|
774
792
|
if ((error = git_stream_certificate(&cert, stream)) < 0)
|
775
793
|
return error;
|
776
794
|
|
777
|
-
|
795
|
+
/*
|
796
|
+
* Allow callers to set an error - but save ours and clear
|
797
|
+
* it, so that we can detect if they set one and restore it
|
798
|
+
* if we need to.
|
799
|
+
*/
|
800
|
+
git_error_save(&last_error);
|
801
|
+
git_error_clear();
|
778
802
|
|
779
803
|
error = cert_cb(cert, is_valid, url->host, cert_cb_payload);
|
780
804
|
|
781
|
-
if (error == GIT_PASSTHROUGH
|
782
|
-
|
783
|
-
|
784
|
-
error
|
785
|
-
|
786
|
-
|
787
|
-
|
805
|
+
if (error == GIT_PASSTHROUGH) {
|
806
|
+
error = is_valid ? 0 : -1;
|
807
|
+
|
808
|
+
if (error) {
|
809
|
+
git_error_restore(last_error);
|
810
|
+
last_error = NULL;
|
811
|
+
}
|
812
|
+
} else if (error) {
|
813
|
+
if (!git_error_exists())
|
814
|
+
git_error_set(GIT_ERROR_HTTP,
|
815
|
+
"user rejected certificate for %s",
|
816
|
+
url->host);
|
817
|
+
}
|
788
818
|
|
789
|
-
|
819
|
+
git_error_free(last_error);
|
790
820
|
return error;
|
791
821
|
}
|
792
822
|
|
@@ -837,6 +867,11 @@ GIT_INLINE(int) server_setup_from_url(
|
|
837
867
|
git_http_server *server,
|
838
868
|
git_net_url *url)
|
839
869
|
{
|
870
|
+
GIT_ASSERT_ARG(url);
|
871
|
+
GIT_ASSERT_ARG(url->scheme);
|
872
|
+
GIT_ASSERT_ARG(url->host);
|
873
|
+
GIT_ASSERT_ARG(url->port);
|
874
|
+
|
840
875
|
if (!server->url.scheme || strcmp(server->url.scheme, url->scheme) ||
|
841
876
|
!server->url.host || strcmp(server->url.host, url->host) ||
|
842
877
|
!server->url.port || strcmp(server->url.port, url->port)) {
|
@@ -859,9 +894,29 @@ GIT_INLINE(int) server_setup_from_url(
|
|
859
894
|
return 0;
|
860
895
|
}
|
861
896
|
|
897
|
+
static bool parser_settings_initialized;
|
898
|
+
static git_http_parser_settings parser_settings;
|
899
|
+
|
900
|
+
GIT_INLINE(git_http_parser_settings *) http_client_parser_settings(void)
|
901
|
+
{
|
902
|
+
if (!parser_settings_initialized) {
|
903
|
+
parser_settings.on_header_field = on_header_field;
|
904
|
+
parser_settings.on_header_value = on_header_value;
|
905
|
+
parser_settings.on_headers_complete = on_headers_complete;
|
906
|
+
parser_settings.on_body = on_body;
|
907
|
+
parser_settings.on_message_complete = on_message_complete;
|
908
|
+
|
909
|
+
parser_settings_initialized = true;
|
910
|
+
}
|
911
|
+
|
912
|
+
return &parser_settings;
|
913
|
+
}
|
914
|
+
|
862
915
|
static void reset_parser(git_http_client *client)
|
863
916
|
{
|
864
|
-
|
917
|
+
git_http_parser_init(&client->parser,
|
918
|
+
GIT_HTTP_PARSER_RESPONSE,
|
919
|
+
http_client_parser_settings());
|
865
920
|
}
|
866
921
|
|
867
922
|
static int setup_hosts(
|
@@ -1077,7 +1132,7 @@ GIT_INLINE(int) client_read(git_http_client *client)
|
|
1077
1132
|
client->proxy.stream : client->server.stream;
|
1078
1133
|
|
1079
1134
|
/*
|
1080
|
-
* We use a
|
1135
|
+
* We use a git_str for convenience, but statically allocate it and
|
1081
1136
|
* don't resize. Limit our consumption to INT_MAX since calling
|
1082
1137
|
* functions use an int return type to return number of bytes read.
|
1083
1138
|
*/
|
@@ -1104,27 +1159,9 @@ GIT_INLINE(int) client_read(git_http_client *client)
|
|
1104
1159
|
return (int)read_len;
|
1105
1160
|
}
|
1106
1161
|
|
1107
|
-
static bool parser_settings_initialized;
|
1108
|
-
static http_parser_settings parser_settings;
|
1109
|
-
|
1110
|
-
GIT_INLINE(http_parser_settings *) http_client_parser_settings(void)
|
1111
|
-
{
|
1112
|
-
if (!parser_settings_initialized) {
|
1113
|
-
parser_settings.on_header_field = on_header_field;
|
1114
|
-
parser_settings.on_header_value = on_header_value;
|
1115
|
-
parser_settings.on_headers_complete = on_headers_complete;
|
1116
|
-
parser_settings.on_body = on_body;
|
1117
|
-
parser_settings.on_message_complete = on_message_complete;
|
1118
|
-
|
1119
|
-
parser_settings_initialized = true;
|
1120
|
-
}
|
1121
|
-
|
1122
|
-
return &parser_settings;
|
1123
|
-
}
|
1124
|
-
|
1125
1162
|
GIT_INLINE(int) client_read_and_parse(git_http_client *client)
|
1126
1163
|
{
|
1127
|
-
|
1164
|
+
git_http_parser *parser = &client->parser;
|
1128
1165
|
http_parser_context *ctx = (http_parser_context *) parser->data;
|
1129
1166
|
unsigned char http_errno;
|
1130
1167
|
int read_len;
|
@@ -1138,11 +1175,10 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
|
|
1138
1175
|
if (!client->read_buf.size && (read_len = client_read(client)) < 0)
|
1139
1176
|
return read_len;
|
1140
1177
|
|
1141
|
-
parsed_len =
|
1142
|
-
http_client_parser_settings(),
|
1178
|
+
parsed_len = git_http_parser_execute(parser,
|
1143
1179
|
client->read_buf.ptr,
|
1144
1180
|
client->read_buf.size);
|
1145
|
-
http_errno =
|
1181
|
+
http_errno = git_http_parser_errno(parser);
|
1146
1182
|
|
1147
1183
|
if (parsed_len > INT_MAX) {
|
1148
1184
|
git_error_set(GIT_ERROR_HTTP, "unexpectedly large parse");
|
@@ -1161,26 +1197,29 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
|
|
1161
1197
|
* (This can happen in response to an expect/continue request,
|
1162
1198
|
* where the server gives you a 100 and 200 simultaneously.)
|
1163
1199
|
*/
|
1164
|
-
if (http_errno ==
|
1200
|
+
if (http_errno == GIT_HTTP_PARSER_PAUSED) {
|
1201
|
+
size_t additional_size;
|
1202
|
+
|
1203
|
+
git_http_parser_resume(parser);
|
1204
|
+
|
1165
1205
|
/*
|
1166
|
-
* http-parser has a "feature" where it will not deliver
|
1167
|
-
* final byte when paused in a callback. Consume
|
1168
|
-
*
|
1206
|
+
* http-parser has a "feature" where it will not deliver
|
1207
|
+
* the final byte when paused in a callback. Consume
|
1208
|
+
* that byte.
|
1169
1209
|
*/
|
1170
|
-
|
1171
|
-
|
1172
|
-
http_parser_pause(parser, 0);
|
1210
|
+
if ((additional_size = git_http_parser_remain_after_pause(parser)) > 0) {
|
1211
|
+
GIT_ASSERT((client->read_buf.size - parsed_len) >= additional_size);
|
1173
1212
|
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1213
|
+
parsed_len += git_http_parser_execute(parser,
|
1214
|
+
client->read_buf.ptr + parsed_len,
|
1215
|
+
additional_size);
|
1216
|
+
}
|
1178
1217
|
}
|
1179
1218
|
|
1180
1219
|
/* Most failures will be reported in http_errno */
|
1181
|
-
else if (parser
|
1220
|
+
else if (git_http_parser_errno(parser) != GIT_HTTP_PARSER_OK) {
|
1182
1221
|
git_error_set(GIT_ERROR_HTTP, "http parser error: %s",
|
1183
|
-
|
1222
|
+
git_http_parser_errmsg(parser, http_errno));
|
1184
1223
|
return -1;
|
1185
1224
|
}
|
1186
1225
|
|
@@ -1188,7 +1227,7 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
|
|
1188
1227
|
else if (parsed_len != client->read_buf.size) {
|
1189
1228
|
git_error_set(GIT_ERROR_HTTP,
|
1190
1229
|
"http parser did not consume entire buffer: %s",
|
1191
|
-
|
1230
|
+
git_http_parser_errmsg(parser, http_errno));
|
1192
1231
|
return -1;
|
1193
1232
|
}
|
1194
1233
|
|
@@ -1198,7 +1237,7 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
|
|
1198
1237
|
return -1;
|
1199
1238
|
}
|
1200
1239
|
|
1201
|
-
|
1240
|
+
git_str_consume_bytes(&client->read_buf, parsed_len);
|
1202
1241
|
|
1203
1242
|
return (int)parsed_len;
|
1204
1243
|
}
|
@@ -1227,7 +1266,7 @@ static void complete_response_body(git_http_client *client)
|
|
1227
1266
|
|
1228
1267
|
/* If there was an error, just close the connection. */
|
1229
1268
|
if (client_read_and_parse(client) < 0 ||
|
1230
|
-
parser_context.error !=
|
1269
|
+
parser_context.error != GIT_HTTP_PARSER_OK ||
|
1231
1270
|
(parser_context.parse_status != PARSE_STATUS_OK &&
|
1232
1271
|
parser_context.parse_status != PARSE_STATUS_NO_OUTPUT)) {
|
1233
1272
|
git_error_clear();
|
@@ -1235,7 +1274,8 @@ static void complete_response_body(git_http_client *client)
|
|
1235
1274
|
}
|
1236
1275
|
|
1237
1276
|
done:
|
1238
|
-
|
1277
|
+
client->parser.data = NULL;
|
1278
|
+
git_str_clear(&client->read_buf);
|
1239
1279
|
}
|
1240
1280
|
|
1241
1281
|
int git_http_client_send_request(
|
@@ -1257,12 +1297,12 @@ int git_http_client_send_request(
|
|
1257
1297
|
return 0;
|
1258
1298
|
|
1259
1299
|
if (git_trace_level() >= GIT_TRACE_DEBUG) {
|
1260
|
-
|
1300
|
+
git_str url = GIT_STR_INIT;
|
1261
1301
|
git_net_url_fmt(&url, request->url);
|
1262
1302
|
git_trace(GIT_TRACE_DEBUG, "Sending %s request to %s",
|
1263
1303
|
name_for_method(request->method),
|
1264
1304
|
url.ptr ? url.ptr : "<invalid>");
|
1265
|
-
|
1305
|
+
git_str_dispose(&url);
|
1266
1306
|
}
|
1267
1307
|
|
1268
1308
|
if ((error = http_client_connect(client, request)) < 0 ||
|
@@ -1314,7 +1354,7 @@ int git_http_client_send_body(
|
|
1314
1354
|
size_t buffer_len)
|
1315
1355
|
{
|
1316
1356
|
git_http_server *server;
|
1317
|
-
|
1357
|
+
git_str hdr = GIT_STR_INIT;
|
1318
1358
|
int error;
|
1319
1359
|
|
1320
1360
|
GIT_ASSERT_ARG(client);
|
@@ -1341,7 +1381,7 @@ int git_http_client_send_body(
|
|
1341
1381
|
|
1342
1382
|
client->request_body_remain -= buffer_len;
|
1343
1383
|
} else {
|
1344
|
-
if ((error =
|
1384
|
+
if ((error = git_str_printf(&hdr, "%" PRIxZ "\r\n", buffer_len)) < 0 ||
|
1345
1385
|
(error = stream_write(server, hdr.ptr, hdr.size)) < 0 ||
|
1346
1386
|
(error = stream_write(server, buffer, buffer_len)) < 0 ||
|
1347
1387
|
(error = stream_write(server, "\r\n", 2)) < 0)
|
@@ -1349,7 +1389,7 @@ int git_http_client_send_body(
|
|
1349
1389
|
}
|
1350
1390
|
|
1351
1391
|
done:
|
1352
|
-
|
1392
|
+
git_str_dispose(&hdr);
|
1353
1393
|
return error;
|
1354
1394
|
}
|
1355
1395
|
|
@@ -1402,9 +1442,9 @@ int git_http_client_read_response(
|
|
1402
1442
|
git_http_response_dispose(response);
|
1403
1443
|
|
1404
1444
|
if (client->current_server == PROXY) {
|
1405
|
-
|
1445
|
+
git_vector_dispose_deep(&client->proxy.auth_challenges);
|
1406
1446
|
} else if(client->current_server == SERVER) {
|
1407
|
-
|
1447
|
+
git_vector_dispose_deep(&client->server.auth_challenges);
|
1408
1448
|
}
|
1409
1449
|
|
1410
1450
|
client->state = READING_RESPONSE;
|
@@ -1422,8 +1462,9 @@ int git_http_client_read_response(
|
|
1422
1462
|
GIT_ASSERT(client->state == READING_BODY || client->state == DONE);
|
1423
1463
|
|
1424
1464
|
done:
|
1425
|
-
|
1426
|
-
|
1465
|
+
git_str_dispose(&parser_context.parse_header_name);
|
1466
|
+
git_str_dispose(&parser_context.parse_header_value);
|
1467
|
+
client->parser.data = NULL;
|
1427
1468
|
|
1428
1469
|
return error;
|
1429
1470
|
}
|
@@ -1479,6 +1520,8 @@ done:
|
|
1479
1520
|
if (error < 0)
|
1480
1521
|
client->connected = 0;
|
1481
1522
|
|
1523
|
+
client->parser.data = NULL;
|
1524
|
+
|
1482
1525
|
return error;
|
1483
1526
|
}
|
1484
1527
|
|
@@ -1501,7 +1544,7 @@ int git_http_client_skip_body(git_http_client *client)
|
|
1501
1544
|
do {
|
1502
1545
|
error = client_read_and_parse(client);
|
1503
1546
|
|
1504
|
-
if (parser_context.error !=
|
1547
|
+
if (parser_context.error != GIT_HTTP_PARSER_OK ||
|
1505
1548
|
(parser_context.parse_status != PARSE_STATUS_OK &&
|
1506
1549
|
parser_context.parse_status != PARSE_STATUS_NO_OUTPUT)) {
|
1507
1550
|
git_error_set(GIT_ERROR_HTTP,
|
@@ -1513,6 +1556,8 @@ int git_http_client_skip_body(git_http_client *client)
|
|
1513
1556
|
if (error < 0)
|
1514
1557
|
client->connected = 0;
|
1515
1558
|
|
1559
|
+
client->parser.data = NULL;
|
1560
|
+
|
1516
1561
|
return error;
|
1517
1562
|
}
|
1518
1563
|
|
@@ -1531,7 +1576,7 @@ int git_http_client_new(
|
|
1531
1576
|
client = git__calloc(1, sizeof(git_http_client));
|
1532
1577
|
GIT_ERROR_CHECK_ALLOC(client);
|
1533
1578
|
|
1534
|
-
|
1579
|
+
git_str_init(&client->read_buf, GIT_READ_BUFFER_SIZE);
|
1535
1580
|
GIT_ERROR_CHECK_ALLOC(client->read_buf.ptr);
|
1536
1581
|
|
1537
1582
|
if (opts)
|
@@ -1541,6 +1586,15 @@ int git_http_client_new(
|
|
1541
1586
|
return 0;
|
1542
1587
|
}
|
1543
1588
|
|
1589
|
+
/* Update the options of an existing httpclient instance. */
|
1590
|
+
void git_http_client_set_options(
|
1591
|
+
git_http_client *client,
|
1592
|
+
git_http_client_options *opts)
|
1593
|
+
{
|
1594
|
+
if (opts)
|
1595
|
+
memcpy(&client->opts, opts, sizeof(git_http_client_options));
|
1596
|
+
}
|
1597
|
+
|
1544
1598
|
GIT_INLINE(void) http_server_close(git_http_server *server)
|
1545
1599
|
{
|
1546
1600
|
if (server->stream) {
|
@@ -1551,7 +1605,7 @@ GIT_INLINE(void) http_server_close(git_http_server *server)
|
|
1551
1605
|
|
1552
1606
|
git_net_url_dispose(&server->url);
|
1553
1607
|
|
1554
|
-
|
1608
|
+
git_vector_dispose_deep(&server->auth_challenges);
|
1555
1609
|
free_auth_context(server);
|
1556
1610
|
}
|
1557
1611
|
|
@@ -1560,7 +1614,7 @@ static void http_client_close(git_http_client *client)
|
|
1560
1614
|
http_server_close(&client->server);
|
1561
1615
|
http_server_close(&client->proxy);
|
1562
1616
|
|
1563
|
-
|
1617
|
+
git_str_dispose(&client->request_msg);
|
1564
1618
|
|
1565
1619
|
client->state = 0;
|
1566
1620
|
client->request_count = 0;
|
@@ -1574,6 +1628,6 @@ void git_http_client_free(git_http_client *client)
|
|
1574
1628
|
return;
|
1575
1629
|
|
1576
1630
|
http_client_close(client);
|
1577
|
-
|
1631
|
+
git_str_dispose(&client->read_buf);
|
1578
1632
|
git__free(client);
|
1579
1633
|
}
|