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
|
@@ -84,8 +84,8 @@ typedef struct {
|
|
|
84
84
|
git_http_response *response;
|
|
85
85
|
|
|
86
86
|
/* Temporary buffers to avoid extra mallocs */
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
git_str parse_header_name;
|
|
88
|
+
git_str parse_header_value;
|
|
89
89
|
|
|
90
90
|
/* Parser state */
|
|
91
91
|
int error;
|
|
@@ -120,8 +120,8 @@ struct git_http_client {
|
|
|
120
120
|
request_chunked : 1;
|
|
121
121
|
|
|
122
122
|
/* Temporary buffers to avoid extra mallocs */
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
git_str request_msg;
|
|
124
|
+
git_str read_buf;
|
|
125
125
|
|
|
126
126
|
/* A subset of information from the request */
|
|
127
127
|
size_t request_body_len,
|
|
@@ -160,8 +160,8 @@ static int on_header_complete(http_parser *parser)
|
|
|
160
160
|
git_http_client *client = ctx->client;
|
|
161
161
|
git_http_response *response = ctx->response;
|
|
162
162
|
|
|
163
|
-
|
|
164
|
-
|
|
163
|
+
git_str *name = &ctx->parse_header_name;
|
|
164
|
+
git_str *value = &ctx->parse_header_value;
|
|
165
165
|
|
|
166
166
|
if (!strcasecmp("Content-Type", name->ptr)) {
|
|
167
167
|
if (response->content_type) {
|
|
@@ -193,7 +193,7 @@ static int on_header_complete(http_parser *parser)
|
|
|
193
193
|
} else if (!strcasecmp("Transfer-Encoding", name->ptr) &&
|
|
194
194
|
!strcasecmp("chunked", value->ptr)) {
|
|
195
195
|
ctx->response->chunked = 1;
|
|
196
|
-
} else if (!strcasecmp("Proxy-Authenticate",
|
|
196
|
+
} else if (!strcasecmp("Proxy-Authenticate", git_str_cstr(name))) {
|
|
197
197
|
char *dup = git__strndup(value->ptr, value->size);
|
|
198
198
|
GIT_ERROR_CHECK_ALLOC(dup);
|
|
199
199
|
|
|
@@ -232,15 +232,15 @@ static int on_header_field(http_parser *parser, const char *str, size_t len)
|
|
|
232
232
|
if (on_header_complete(parser) < 0)
|
|
233
233
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
git_str_clear(&ctx->parse_header_name);
|
|
236
|
+
git_str_clear(&ctx->parse_header_value);
|
|
237
237
|
/* Fall through */
|
|
238
238
|
|
|
239
239
|
case PARSE_HEADER_NONE:
|
|
240
240
|
case PARSE_HEADER_NAME:
|
|
241
241
|
ctx->parse_header_state = PARSE_HEADER_NAME;
|
|
242
242
|
|
|
243
|
-
if (
|
|
243
|
+
if (git_str_put(&ctx->parse_header_name, str, len) < 0)
|
|
244
244
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
|
245
245
|
|
|
246
246
|
break;
|
|
@@ -263,7 +263,7 @@ static int on_header_value(http_parser *parser, const char *str, size_t len)
|
|
|
263
263
|
case PARSE_HEADER_VALUE:
|
|
264
264
|
ctx->parse_header_state = PARSE_HEADER_VALUE;
|
|
265
265
|
|
|
266
|
-
if (
|
|
266
|
+
if (git_str_put(&ctx->parse_header_value, str, len) < 0)
|
|
267
267
|
return ctx->parse_status = PARSE_STATUS_ERROR;
|
|
268
268
|
|
|
269
269
|
break;
|
|
@@ -548,7 +548,7 @@ static void free_auth_context(git_http_server *server)
|
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
static int apply_credentials(
|
|
551
|
-
|
|
551
|
+
git_str *buf,
|
|
552
552
|
git_http_server *server,
|
|
553
553
|
const char *header_name,
|
|
554
554
|
git_credential *credentials)
|
|
@@ -556,7 +556,7 @@ static int apply_credentials(
|
|
|
556
556
|
git_http_auth_context *auth = server->auth_context;
|
|
557
557
|
git_vector *challenges = &server->auth_challenges;
|
|
558
558
|
const char *challenge;
|
|
559
|
-
|
|
559
|
+
git_str token = GIT_STR_INIT;
|
|
560
560
|
int error = 0;
|
|
561
561
|
|
|
562
562
|
/* We've started a new request without creds; free the context. */
|
|
@@ -602,15 +602,15 @@ static int apply_credentials(
|
|
|
602
602
|
}
|
|
603
603
|
|
|
604
604
|
if (token.size > 0)
|
|
605
|
-
error =
|
|
605
|
+
error = git_str_printf(buf, "%s: %s\r\n", header_name, token.ptr);
|
|
606
606
|
|
|
607
607
|
done:
|
|
608
|
-
|
|
608
|
+
git_str_dispose(&token);
|
|
609
609
|
return error;
|
|
610
610
|
}
|
|
611
611
|
|
|
612
612
|
GIT_INLINE(int) apply_server_credentials(
|
|
613
|
-
|
|
613
|
+
git_str *buf,
|
|
614
614
|
git_http_client *client,
|
|
615
615
|
git_http_request *request)
|
|
616
616
|
{
|
|
@@ -621,7 +621,7 @@ GIT_INLINE(int) apply_server_credentials(
|
|
|
621
621
|
}
|
|
622
622
|
|
|
623
623
|
GIT_INLINE(int) apply_proxy_credentials(
|
|
624
|
-
|
|
624
|
+
git_str *buf,
|
|
625
625
|
git_http_client *client,
|
|
626
626
|
git_http_request *request)
|
|
627
627
|
{
|
|
@@ -631,54 +631,54 @@ GIT_INLINE(int) apply_proxy_credentials(
|
|
|
631
631
|
request->proxy_credentials);
|
|
632
632
|
}
|
|
633
633
|
|
|
634
|
-
static int puts_host_and_port(
|
|
634
|
+
static int puts_host_and_port(git_str *buf, git_net_url *url, bool force_port)
|
|
635
635
|
{
|
|
636
636
|
bool ipv6 = git_net_url_is_ipv6(url);
|
|
637
637
|
|
|
638
638
|
if (ipv6)
|
|
639
|
-
|
|
639
|
+
git_str_putc(buf, '[');
|
|
640
640
|
|
|
641
|
-
|
|
641
|
+
git_str_puts(buf, url->host);
|
|
642
642
|
|
|
643
643
|
if (ipv6)
|
|
644
|
-
|
|
644
|
+
git_str_putc(buf, ']');
|
|
645
645
|
|
|
646
646
|
if (force_port || !git_net_url_is_default_port(url)) {
|
|
647
|
-
|
|
648
|
-
|
|
647
|
+
git_str_putc(buf, ':');
|
|
648
|
+
git_str_puts(buf, url->port);
|
|
649
649
|
}
|
|
650
650
|
|
|
651
|
-
return
|
|
651
|
+
return git_str_oom(buf) ? -1 : 0;
|
|
652
652
|
}
|
|
653
653
|
|
|
654
654
|
static int generate_connect_request(
|
|
655
655
|
git_http_client *client,
|
|
656
656
|
git_http_request *request)
|
|
657
657
|
{
|
|
658
|
-
|
|
658
|
+
git_str *buf;
|
|
659
659
|
int error;
|
|
660
660
|
|
|
661
|
-
|
|
661
|
+
git_str_clear(&client->request_msg);
|
|
662
662
|
buf = &client->request_msg;
|
|
663
663
|
|
|
664
|
-
|
|
664
|
+
git_str_puts(buf, "CONNECT ");
|
|
665
665
|
puts_host_and_port(buf, &client->server.url, true);
|
|
666
|
-
|
|
666
|
+
git_str_puts(buf, " HTTP/1.1\r\n");
|
|
667
667
|
|
|
668
|
-
|
|
668
|
+
git_str_puts(buf, "User-Agent: ");
|
|
669
669
|
git_http__user_agent(buf);
|
|
670
|
-
|
|
670
|
+
git_str_puts(buf, "\r\n");
|
|
671
671
|
|
|
672
|
-
|
|
672
|
+
git_str_puts(buf, "Host: ");
|
|
673
673
|
puts_host_and_port(buf, &client->server.url, true);
|
|
674
|
-
|
|
674
|
+
git_str_puts(buf, "\r\n");
|
|
675
675
|
|
|
676
676
|
if ((error = apply_proxy_credentials(buf, client, request) < 0))
|
|
677
677
|
return -1;
|
|
678
678
|
|
|
679
|
-
|
|
679
|
+
git_str_puts(buf, "\r\n");
|
|
680
680
|
|
|
681
|
-
return
|
|
681
|
+
return git_str_oom(buf) ? -1 : 0;
|
|
682
682
|
}
|
|
683
683
|
|
|
684
684
|
static bool use_connect_proxy(git_http_client *client)
|
|
@@ -690,53 +690,53 @@ static int generate_request(
|
|
|
690
690
|
git_http_client *client,
|
|
691
691
|
git_http_request *request)
|
|
692
692
|
{
|
|
693
|
-
|
|
693
|
+
git_str *buf;
|
|
694
694
|
size_t i;
|
|
695
695
|
int error;
|
|
696
696
|
|
|
697
697
|
GIT_ASSERT_ARG(client);
|
|
698
698
|
GIT_ASSERT_ARG(request);
|
|
699
699
|
|
|
700
|
-
|
|
700
|
+
git_str_clear(&client->request_msg);
|
|
701
701
|
buf = &client->request_msg;
|
|
702
702
|
|
|
703
703
|
/* GET|POST path HTTP/1.1 */
|
|
704
|
-
|
|
705
|
-
|
|
704
|
+
git_str_puts(buf, name_for_method(request->method));
|
|
705
|
+
git_str_putc(buf, ' ');
|
|
706
706
|
|
|
707
707
|
if (request->proxy && strcmp(request->url->scheme, "https"))
|
|
708
708
|
git_net_url_fmt(buf, request->url);
|
|
709
709
|
else
|
|
710
710
|
git_net_url_fmt_path(buf, request->url);
|
|
711
711
|
|
|
712
|
-
|
|
712
|
+
git_str_puts(buf, " HTTP/1.1\r\n");
|
|
713
713
|
|
|
714
|
-
|
|
714
|
+
git_str_puts(buf, "User-Agent: ");
|
|
715
715
|
git_http__user_agent(buf);
|
|
716
|
-
|
|
716
|
+
git_str_puts(buf, "\r\n");
|
|
717
717
|
|
|
718
|
-
|
|
718
|
+
git_str_puts(buf, "Host: ");
|
|
719
719
|
puts_host_and_port(buf, request->url, false);
|
|
720
|
-
|
|
720
|
+
git_str_puts(buf, "\r\n");
|
|
721
721
|
|
|
722
722
|
if (request->accept)
|
|
723
|
-
|
|
723
|
+
git_str_printf(buf, "Accept: %s\r\n", request->accept);
|
|
724
724
|
else
|
|
725
|
-
|
|
725
|
+
git_str_puts(buf, "Accept: */*\r\n");
|
|
726
726
|
|
|
727
727
|
if (request->content_type)
|
|
728
|
-
|
|
728
|
+
git_str_printf(buf, "Content-Type: %s\r\n",
|
|
729
729
|
request->content_type);
|
|
730
730
|
|
|
731
731
|
if (request->chunked)
|
|
732
|
-
|
|
732
|
+
git_str_puts(buf, "Transfer-Encoding: chunked\r\n");
|
|
733
733
|
|
|
734
734
|
if (request->content_length > 0)
|
|
735
|
-
|
|
735
|
+
git_str_printf(buf, "Content-Length: %"PRIuZ "\r\n",
|
|
736
736
|
request->content_length);
|
|
737
737
|
|
|
738
738
|
if (request->expect_continue)
|
|
739
|
-
|
|
739
|
+
git_str_printf(buf, "Expect: 100-continue\r\n");
|
|
740
740
|
|
|
741
741
|
if ((error = apply_server_credentials(buf, client, request)) < 0 ||
|
|
742
742
|
(!use_connect_proxy(client) &&
|
|
@@ -748,13 +748,13 @@ static int generate_request(
|
|
|
748
748
|
const char *hdr = request->custom_headers->strings[i];
|
|
749
749
|
|
|
750
750
|
if (hdr)
|
|
751
|
-
|
|
751
|
+
git_str_printf(buf, "%s\r\n", hdr);
|
|
752
752
|
}
|
|
753
753
|
}
|
|
754
754
|
|
|
755
|
-
|
|
755
|
+
git_str_puts(buf, "\r\n");
|
|
756
756
|
|
|
757
|
-
if (
|
|
757
|
+
if (git_str_oom(buf))
|
|
758
758
|
return -1;
|
|
759
759
|
|
|
760
760
|
return 0;
|
|
@@ -1077,7 +1077,7 @@ GIT_INLINE(int) client_read(git_http_client *client)
|
|
|
1077
1077
|
client->proxy.stream : client->server.stream;
|
|
1078
1078
|
|
|
1079
1079
|
/*
|
|
1080
|
-
* We use a
|
|
1080
|
+
* We use a git_str for convenience, but statically allocate it and
|
|
1081
1081
|
* don't resize. Limit our consumption to INT_MAX since calling
|
|
1082
1082
|
* functions use an int return type to return number of bytes read.
|
|
1083
1083
|
*/
|
|
@@ -1198,7 +1198,7 @@ GIT_INLINE(int) client_read_and_parse(git_http_client *client)
|
|
|
1198
1198
|
return -1;
|
|
1199
1199
|
}
|
|
1200
1200
|
|
|
1201
|
-
|
|
1201
|
+
git_str_consume_bytes(&client->read_buf, parsed_len);
|
|
1202
1202
|
|
|
1203
1203
|
return (int)parsed_len;
|
|
1204
1204
|
}
|
|
@@ -1235,7 +1235,7 @@ static void complete_response_body(git_http_client *client)
|
|
|
1235
1235
|
}
|
|
1236
1236
|
|
|
1237
1237
|
done:
|
|
1238
|
-
|
|
1238
|
+
git_str_clear(&client->read_buf);
|
|
1239
1239
|
}
|
|
1240
1240
|
|
|
1241
1241
|
int git_http_client_send_request(
|
|
@@ -1257,12 +1257,12 @@ int git_http_client_send_request(
|
|
|
1257
1257
|
return 0;
|
|
1258
1258
|
|
|
1259
1259
|
if (git_trace_level() >= GIT_TRACE_DEBUG) {
|
|
1260
|
-
|
|
1260
|
+
git_str url = GIT_STR_INIT;
|
|
1261
1261
|
git_net_url_fmt(&url, request->url);
|
|
1262
1262
|
git_trace(GIT_TRACE_DEBUG, "Sending %s request to %s",
|
|
1263
1263
|
name_for_method(request->method),
|
|
1264
1264
|
url.ptr ? url.ptr : "<invalid>");
|
|
1265
|
-
|
|
1265
|
+
git_str_dispose(&url);
|
|
1266
1266
|
}
|
|
1267
1267
|
|
|
1268
1268
|
if ((error = http_client_connect(client, request)) < 0 ||
|
|
@@ -1314,7 +1314,7 @@ int git_http_client_send_body(
|
|
|
1314
1314
|
size_t buffer_len)
|
|
1315
1315
|
{
|
|
1316
1316
|
git_http_server *server;
|
|
1317
|
-
|
|
1317
|
+
git_str hdr = GIT_STR_INIT;
|
|
1318
1318
|
int error;
|
|
1319
1319
|
|
|
1320
1320
|
GIT_ASSERT_ARG(client);
|
|
@@ -1341,7 +1341,7 @@ int git_http_client_send_body(
|
|
|
1341
1341
|
|
|
1342
1342
|
client->request_body_remain -= buffer_len;
|
|
1343
1343
|
} else {
|
|
1344
|
-
if ((error =
|
|
1344
|
+
if ((error = git_str_printf(&hdr, "%" PRIxZ "\r\n", buffer_len)) < 0 ||
|
|
1345
1345
|
(error = stream_write(server, hdr.ptr, hdr.size)) < 0 ||
|
|
1346
1346
|
(error = stream_write(server, buffer, buffer_len)) < 0 ||
|
|
1347
1347
|
(error = stream_write(server, "\r\n", 2)) < 0)
|
|
@@ -1349,7 +1349,7 @@ int git_http_client_send_body(
|
|
|
1349
1349
|
}
|
|
1350
1350
|
|
|
1351
1351
|
done:
|
|
1352
|
-
|
|
1352
|
+
git_str_dispose(&hdr);
|
|
1353
1353
|
return error;
|
|
1354
1354
|
}
|
|
1355
1355
|
|
|
@@ -1422,8 +1422,8 @@ int git_http_client_read_response(
|
|
|
1422
1422
|
GIT_ASSERT(client->state == READING_BODY || client->state == DONE);
|
|
1423
1423
|
|
|
1424
1424
|
done:
|
|
1425
|
-
|
|
1426
|
-
|
|
1425
|
+
git_str_dispose(&parser_context.parse_header_name);
|
|
1426
|
+
git_str_dispose(&parser_context.parse_header_value);
|
|
1427
1427
|
|
|
1428
1428
|
return error;
|
|
1429
1429
|
}
|
|
@@ -1531,7 +1531,7 @@ int git_http_client_new(
|
|
|
1531
1531
|
client = git__calloc(1, sizeof(git_http_client));
|
|
1532
1532
|
GIT_ERROR_CHECK_ALLOC(client);
|
|
1533
1533
|
|
|
1534
|
-
|
|
1534
|
+
git_str_init(&client->read_buf, GIT_READ_BUFFER_SIZE);
|
|
1535
1535
|
GIT_ERROR_CHECK_ALLOC(client->read_buf.ptr);
|
|
1536
1536
|
|
|
1537
1537
|
if (opts)
|
|
@@ -1560,7 +1560,7 @@ static void http_client_close(git_http_client *client)
|
|
|
1560
1560
|
http_server_close(&client->server);
|
|
1561
1561
|
http_server_close(&client->proxy);
|
|
1562
1562
|
|
|
1563
|
-
|
|
1563
|
+
git_str_dispose(&client->request_msg);
|
|
1564
1564
|
|
|
1565
1565
|
client->state = 0;
|
|
1566
1566
|
client->request_count = 0;
|
|
@@ -1574,6 +1574,6 @@ void git_http_client_free(git_http_client *client)
|
|
|
1574
1574
|
return;
|
|
1575
1575
|
|
|
1576
1576
|
http_client_close(client);
|
|
1577
|
-
|
|
1577
|
+
git_str_dispose(&client->read_buf);
|
|
1578
1578
|
git__free(client);
|
|
1579
1579
|
}
|