Revision 3680f16f9d6832dc78c6b80f1e8a546385d946f9 authored by Jeff King on 06 December 2016, 18:25:39 UTC, committed by Junio C Hamano on 06 December 2016, 20:43:34 UTC
Since commit 17966c0a6 (http: avoid disconnecting on 404s
for loose objects, 2016-07-11), we turn off curl's
FAILONERROR option and instead manually deal with failing
HTTP codes.

However, the logic to do so only recognizes HTTP 404 as a
failure. This is probably the most common result, but if we
were to get another code, the curl result remains CURLE_OK,
and we treat it as success. We still end up detecting the
failure when we try to zlib-inflate the object (which will
fail), but instead of reporting the HTTP error, we just
claim that the object is corrupt.

Instead, let's catch anything in the 300's or above as an
error (300's are redirects which are not an error at the
HTTP level, but are an indication that we've explicitly
disabled redirects, so we should treat them as such; we
certainly don't have the resulting object content).

Note that we also fill in req->errorstr, which we didn't do
before. Without FAILONERROR, curl will not have filled this
in, and it will remain a blank string. This never mattered
for the 404 case, because in the logic below we hit the
"missing_target()" branch and print nothing. But for other
errors, we'd want to say _something_, if only to fill in the
blank slot in the error message.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 43ec089
History
File Mode Size
Documentation
block-sha1
builtin
ci
compat
contrib
ewah
git-gui
gitk-git
gitweb
mergetools
perl
po
ppc
refs
t
templates
vcs-svn
xdiff
.gitattributes -rw-r--r-- 114 bytes
.gitignore -rw-r--r-- 3.1 KB
.mailmap -rw-r--r-- 14.0 KB
.travis.yml -rw-r--r-- 3.5 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 762 bytes
INSTALL -rw-r--r-- 8.9 KB
LGPL-2.1 -rw-r--r-- 26.2 KB
Makefile -rw-r--r-- 75.8 KB
README.md -rw-r--r-- 2.9 KB
RelNotes l--------- 32 bytes
abspath.c -rw-r--r-- 4.4 KB
aclocal.m4 -rw-r--r-- 1.4 KB
advice.c -rw-r--r-- 3.5 KB
advice.h -rw-r--r-- 967 bytes
alias.c -rw-r--r-- 1.5 KB
alloc.c -rw-r--r-- 2.6 KB
archive-tar.c -rw-r--r-- 11.3 KB
archive-zip.c -rw-r--r-- 15.2 KB
archive.c -rw-r--r-- 14.7 KB
archive.h -rw-r--r-- 1.3 KB
argv-array.c -rw-r--r-- 1.7 KB
argv-array.h -rw-r--r-- 689 bytes
attr.c -rw-r--r-- 19.8 KB
attr.h -rw-r--r-- 1.6 KB
base85.c -rw-r--r-- 2.8 KB
bisect.c -rw-r--r-- 24.8 KB
bisect.h -rw-r--r-- 713 bytes
blob.c -rw-r--r-- 389 bytes
blob.h -rw-r--r-- 664 bytes
branch.c -rw-r--r-- 9.3 KB
branch.h -rw-r--r-- 2.5 KB
builtin.h -rw-r--r-- 9.0 KB
bulk-checkin.c -rw-r--r-- 7.1 KB
bulk-checkin.h -rw-r--r-- 323 bytes
bundle.c -rw-r--r-- 12.3 KB
bundle.h -rw-r--r-- 707 bytes
cache-tree.c -rw-r--r-- 17.4 KB
cache-tree.h -rw-r--r-- 1.6 KB
cache.h -rw-r--r-- 65.6 KB
check-builtins.sh -rwxr-xr-x 596 bytes
check-racy.c -rw-r--r-- 523 bytes
check_bindir -rwxr-xr-x 374 bytes
color.c -rw-r--r-- 8.1 KB
color.h -rw-r--r-- 3.1 KB
column.c -rw-r--r-- 9.7 KB
column.h -rw-r--r-- 1.4 KB
combine-diff.c -rw-r--r-- 40.2 KB
command-list.txt -rw-r--r-- 8.9 KB
commit-slab.h -rw-r--r-- 4.8 KB
commit.c -rw-r--r-- 41.0 KB
commit.h -rw-r--r-- 13.3 KB
common-main.c -rw-r--r-- 1.1 KB
config.c -rw-r--r-- 57.3 KB
config.mak.in -rw-r--r-- 540 bytes
config.mak.uname -rw-r--r-- 16.6 KB
configure.ac -rw-r--r-- 35.1 KB
connect.c -rw-r--r-- 19.6 KB
connect.h -rw-r--r-- 676 bytes
connected.c -rw-r--r-- 3.2 KB
connected.h -rw-r--r-- 930 bytes
convert.c -rw-r--r-- 32.2 KB
convert.h -rw-r--r-- 2.6 KB
copy.c -rw-r--r-- 1.3 KB
credential-cache--daemon.c -rw-r--r-- 6.9 KB
credential-cache.c -rw-r--r-- 2.9 KB
credential-store.c -rw-r--r-- 5.0 KB
credential.c -rw-r--r-- 7.8 KB
credential.h -rw-r--r-- 833 bytes
csum-file.c -rw-r--r-- 4.0 KB
csum-file.h -rw-r--r-- 1.3 KB
ctype.c -rw-r--r-- 2.6 KB
daemon.c -rw-r--r-- 31.7 KB
date.c -rw-r--r-- 27.1 KB
decorate.c -rw-r--r-- 1.8 KB
decorate.h -rw-r--r-- 400 bytes
delta.h -rw-r--r-- 3.4 KB
diff-delta.c -rw-r--r-- 15.4 KB
diff-lib.c -rw-r--r-- 14.1 KB
diff-no-index.c -rw-r--r-- 6.9 KB
diff.c -rw-r--r-- 138.7 KB
diff.h -rw-r--r-- 12.5 KB
diffcore-break.c -rw-r--r-- 9.0 KB
diffcore-delta.c -rw-r--r-- 5.4 KB
diffcore-order.c -rw-r--r-- 2.4 KB
diffcore-pickaxe.c -rw-r--r-- 6.1 KB
diffcore-rename.c -rw-r--r-- 17.7 KB
diffcore.h -rw-r--r-- 4.8 KB
dir.c -rw-r--r-- 69.7 KB
dir.h -rw-r--r-- 9.7 KB
editor.c -rw-r--r-- 1.5 KB
entry.c -rw-r--r-- 7.3 KB
environment.c -rw-r--r-- 9.2 KB
exec_cmd.c -rw-r--r-- 3.0 KB
exec_cmd.h -rw-r--r-- 547 bytes
fast-import.c -rw-r--r-- 88.0 KB
fetch-pack.c -rw-r--r-- 26.7 KB
fetch-pack.h -rw-r--r-- 1.0 KB
fmt-merge-msg.h -rw-r--r-- 187 bytes
fsck.c -rw-r--r-- 21.6 KB
fsck.h -rw-r--r-- 1.7 KB
generate-cmdlist.sh -rwxr-xr-x 929 bytes
gettext.c -rw-r--r-- 5.1 KB
gettext.h -rw-r--r-- 2.2 KB
git-add--interactive.perl -rwxr-xr-x 36.6 KB
git-archimport.perl -rwxr-xr-x 36.0 KB
git-bisect.sh -rwxr-xr-x 15.6 KB
git-compat-util.h -rw-r--r-- 27.1 KB
git-cvsexportcommit.perl -rwxr-xr-x 12.6 KB
git-cvsimport.perl -rwxr-xr-x 31.3 KB
git-cvsserver.perl -rwxr-xr-x 158.5 KB
git-difftool--helper.sh -rwxr-xr-x 2.2 KB
git-difftool.perl -rwxr-xr-x 12.2 KB
git-filter-branch.sh -rwxr-xr-x 12.5 KB
git-instaweb.sh -rwxr-xr-x 18.1 KB
git-merge-octopus.sh -rwxr-xr-x 2.4 KB
git-merge-one-file.sh -rwxr-xr-x 3.6 KB
git-merge-resolve.sh -rwxr-xr-x 944 bytes
git-mergetool--lib.sh -rw-r--r-- 7.8 KB
git-mergetool.sh -rwxr-xr-x 9.5 KB
git-p4.py -rwxr-xr-x 136.2 KB
git-parse-remote.sh -rw-r--r-- 2.6 KB
git-quiltimport.sh -rwxr-xr-x 3.5 KB
git-rebase--am.sh -rw-r--r-- 2.4 KB
git-rebase--interactive.sh -rw-r--r-- 33.4 KB
git-rebase--merge.sh -rw-r--r-- 3.8 KB
git-rebase.sh -rwxr-xr-x 15.7 KB
git-relink.perl -rwxr-xr-x 4.0 KB
git-remote-testgit.sh -rwxr-xr-x 2.9 KB
git-request-pull.sh -rwxr-xr-x 3.8 KB
git-send-email.perl -rwxr-xr-x 48.4 KB
git-sh-i18n.sh -rw-r--r-- 2.0 KB
git-sh-setup.sh -rw-r--r-- 8.2 KB
git-stash.sh -rwxr-xr-x 13.8 KB
git-submodule.sh -rwxr-xr-x 26.5 KB
git-svn.perl -rwxr-xr-x 62.4 KB
git-web--browse.sh -rwxr-xr-x 4.3 KB
git.c -rw-r--r-- 18.9 KB
git.rc -rw-r--r-- 566 bytes
gpg-interface.c -rw-r--r-- 6.5 KB
gpg-interface.h -rw-r--r-- 1.2 KB
graph.c -rw-r--r-- 34.5 KB
graph.h -rw-r--r-- 4.0 KB
grep.c -rw-r--r-- 43.5 KB
grep.h -rw-r--r-- 4.7 KB
hashmap.c -rw-r--r-- 6.3 KB
hashmap.h -rw-r--r-- 2.5 KB
help.c -rw-r--r-- 11.7 KB
help.h -rw-r--r-- 1.1 KB
hex.c -rw-r--r-- 2.6 KB
http-backend.c -rw-r--r-- 15.7 KB
http-fetch.c -rw-r--r-- 2.2 KB
http-push.c -rw-r--r-- 49.7 KB
http-walker.c -rw-r--r-- 14.0 KB
http.c -rw-r--r-- 53.4 KB
http.h -rw-r--r-- 6.4 KB
ident.c -rw-r--r-- 12.1 KB
imap-send.c -rw-r--r-- 35.7 KB
khash.h -rw-r--r-- 12.6 KB
kwset.c -rw-r--r-- 20.5 KB
kwset.h -rw-r--r-- 2.6 KB
levenshtein.c -rw-r--r-- 2.5 KB
levenshtein.h -rw-r--r-- 203 bytes
line-log.c -rw-r--r-- 30.5 KB
line-log.h -rw-r--r-- 1.8 KB
line-range.c -rw-r--r-- 6.5 KB
line-range.h -rw-r--r-- 1.3 KB
list-objects.c -rw-r--r-- 6.0 KB
list-objects.h -rw-r--r-- 381 bytes
list.h -rw-r--r-- 4.6 KB
ll-merge.c -rw-r--r-- 10.6 KB
ll-merge.h -rw-r--r-- 567 bytes
lockfile.c -rw-r--r-- 5.4 KB
lockfile.h -rw-r--r-- 10.2 KB
log-tree.c -rw-r--r-- 24.4 KB
log-tree.h -rw-r--r-- 1.2 KB
mailinfo.c -rw-r--r-- 23.4 KB
mailinfo.h -rw-r--r-- 955 bytes
mailmap.c -rw-r--r-- 8.9 KB
mailmap.h -rw-r--r-- 271 bytes
match-trees.c -rw-r--r-- 8.1 KB
merge-blobs.c -rw-r--r-- 1.9 KB
merge-blobs.h -rw-r--r-- 194 bytes
merge-recursive.c -rw-r--r-- 58.1 KB
merge-recursive.h -rw-r--r-- 1.6 KB
merge.c -rw-r--r-- 2.4 KB
mergesort.c -rw-r--r-- 1.5 KB
mergesort.h -rw-r--r-- 574 bytes
name-hash.c -rw-r--r-- 5.9 KB
notes-cache.c -rw-r--r-- 2.2 KB
notes-cache.h -rw-r--r-- 500 bytes
notes-merge.c -rw-r--r-- 22.6 KB
notes-merge.h -rw-r--r-- 2.8 KB
notes-utils.c -rw-r--r-- 4.9 KB
notes-utils.h -rw-r--r-- 1.4 KB
notes.c -rw-r--r-- 36.6 KB
notes.h -rw-r--r-- 11.7 KB
object.c -rw-r--r-- 9.6 KB
object.h -rw-r--r-- 4.5 KB
pack-bitmap-write.c -rw-r--r-- 12.3 KB
pack-bitmap.c -rw-r--r-- 24.9 KB
pack-bitmap.h -rw-r--r-- 1.7 KB
pack-check.c -rw-r--r-- 5.4 KB
pack-objects.c -rw-r--r-- 2.1 KB
pack-objects.h -rw-r--r-- 1.9 KB
pack-revindex.c -rw-r--r-- 5.7 KB
pack-revindex.h -rw-r--r-- 323 bytes
pack-write.c -rw-r--r-- 10.3 KB
pack.h -rw-r--r-- 3.2 KB
pager.c -rw-r--r-- 3.6 KB
parse-options-cb.c -rw-r--r-- 4.9 KB
parse-options.c -rw-r--r-- 17.4 KB
parse-options.h -rw-r--r-- 9.8 KB
patch-delta.c -rw-r--r-- 2.2 KB
patch-ids.c -rw-r--r-- 2.4 KB
patch-ids.h -rw-r--r-- 591 bytes
path.c -rw-r--r-- 29.4 KB
pathspec.c -rw-r--r-- 14.1 KB
pathspec.h -rw-r--r-- 3.2 KB
pkt-line.c -rw-r--r-- 5.4 KB
pkt-line.h -rw-r--r-- 3.0 KB
preload-index.c -rw-r--r-- 2.5 KB
pretty.c -rw-r--r-- 44.4 KB
prio-queue.c -rw-r--r-- 1.9 KB
prio-queue.h -rw-r--r-- 1.5 KB
progress.c -rw-r--r-- 6.3 KB
progress.h -rw-r--r-- 504 bytes
prompt.c -rw-r--r-- 1.4 KB
prompt.h -rw-r--r-- 168 bytes
quote.c -rw-r--r-- 10.6 KB
quote.h -rw-r--r-- 2.8 KB
reachable.c -rw-r--r-- 4.8 KB
reachable.h -rw-r--r-- 304 bytes
read-cache.c -rw-r--r-- 61.7 KB
ref-filter.c -rw-r--r-- 44.3 KB
ref-filter.h -rw-r--r-- 3.3 KB
reflog-walk.c -rw-r--r-- 8.5 KB
reflog-walk.h -rw-r--r-- 792 bytes
refs.c -rw-r--r-- 29.3 KB
refs.h -rw-r--r-- 19.7 KB
remote-curl.c -rw-r--r-- 25.8 KB
remote-testsvn.c -rw-r--r-- 8.3 KB
remote.c -rw-r--r-- 58.5 KB
remote.h -rw-r--r-- 8.0 KB
replace_object.c -rw-r--r-- 3.0 KB
rerere.c -rw-r--r-- 30.9 KB
rerere.h -rw-r--r-- 1.2 KB
resolve-undo.c -rw-r--r-- 4.3 KB
resolve-undo.h -rw-r--r-- 612 bytes
revision.c -rw-r--r-- 91.1 KB
revision.h -rw-r--r-- 7.8 KB
run-command.c -rw-r--r-- 25.6 KB
run-command.h -rw-r--r-- 7.0 KB
send-pack.c -rw-r--r-- 14.0 KB
send-pack.h -rw-r--r-- 774 bytes
sequencer.c -rw-r--r-- 31.7 KB
sequencer.h -rw-r--r-- 1.1 KB
server-info.c -rw-r--r-- 5.7 KB
setup.c -rw-r--r-- 27.4 KB
sh-i18n--envsubst.c -rw-r--r-- 10.3 KB
sha1-array.c -rw-r--r-- 1.2 KB
sha1-array.h -rw-r--r-- 583 bytes
sha1-lookup.c -rw-r--r-- 9.2 KB
sha1-lookup.h -rw-r--r-- 403 bytes
sha1_file.c -rw-r--r-- 90.7 KB
sha1_name.c -rw-r--r-- 36.7 KB
shallow.c -rw-r--r-- 17.2 KB
shell.c -rw-r--r-- 4.8 KB
shortlog.h -rw-r--r-- 463 bytes
show-index.c -rw-r--r-- 2.2 KB
sideband.c -rw-r--r-- 3.1 KB
sideband.h -rw-r--r-- 259 bytes
sigchain.c -rw-r--r-- 1.1 KB
sigchain.h -rw-r--r-- 247 bytes
split-index.c -rw-r--r-- 9.0 KB
split-index.h -rw-r--r-- 1.1 KB
strbuf.c -rw-r--r-- 18.2 KB
strbuf.h -rw-r--r-- 19.1 KB
streaming.c -rw-r--r-- 11.8 KB
streaming.h -rw-r--r-- 504 bytes
string-list.c -rw-r--r-- 7.3 KB
string-list.h -rw-r--r-- 5.1 KB
submodule-config.c -rw-r--r-- 13.2 KB
submodule-config.h -rw-r--r-- 980 bytes
submodule.c -rw-r--r-- 31.9 KB
submodule.h -rw-r--r-- 2.7 KB
symlinks.c -rw-r--r-- 9.3 KB
tag.c -rw-r--r-- 4.4 KB
tag.h -rw-r--r-- 608 bytes
tar.h -rw-r--r-- 644 bytes
tempfile.c -rw-r--r-- 8.2 KB
tempfile.h -rw-r--r-- 9.5 KB
thread-utils.c -rw-r--r-- 1.7 KB
thread-utils.h -rw-r--r-- 241 bytes
trace.c -rw-r--r-- 10.4 KB
trace.h -rw-r--r-- 3.6 KB
trailer.c -rw-r--r-- 22.6 KB
trailer.h -rw-r--r-- 170 bytes
transport-helper.c -rw-r--r-- 35.0 KB
transport.c -rw-r--r-- 28.8 KB
transport.h -rw-r--r-- 7.6 KB
tree-diff.c -rw-r--r-- 17.9 KB
tree-walk.c -rw-r--r-- 26.7 KB
tree-walk.h -rw-r--r-- 2.8 KB
tree.c -rw-r--r-- 6.2 KB
tree.h -rw-r--r-- 1.0 KB
unicode_width.h -rw-r--r-- 6.6 KB
unimplemented.sh -rw-r--r-- 101 bytes
unix-socket.c -rw-r--r-- 2.4 KB
unix-socket.h -rw-r--r-- 158 bytes
unpack-trees.c -rw-r--r-- 51.4 KB
unpack-trees.h -rw-r--r-- 2.2 KB
update_unicode.sh -rwxr-xr-x 1.0 KB
upload-pack.c -rw-r--r-- 21.3 KB
url.c -rw-r--r-- 2.7 KB
url.h -rw-r--r-- 492 bytes
urlmatch.c -rw-r--r-- 16.5 KB
urlmatch.h -rw-r--r-- 1.9 KB
usage.c -rw-r--r-- 3.7 KB
userdiff.c -rw-r--r-- 9.2 KB
userdiff.h -rw-r--r-- 780 bytes
utf8.c -rw-r--r-- 15.9 KB
utf8.h -rw-r--r-- 2.2 KB
varint.c -rw-r--r-- 660 bytes
varint.h -rw-r--r-- 168 bytes
version.c -rw-r--r-- 651 bytes
version.h -rw-r--r-- 180 bytes
versioncmp.c -rw-r--r-- 3.4 KB
walker.c -rw-r--r-- 7.3 KB
walker.h -rw-r--r-- 1.1 KB
wildmatch.c -rw-r--r-- 7.8 KB
wildmatch.h -rw-r--r-- 346 bytes
worktree.c -rw-r--r-- 7.4 KB
worktree.h -rw-r--r-- 1.6 KB
wrap-for-bin.sh -rw-r--r-- 819 bytes
wrapper.c -rw-r--r-- 15.0 KB
write_or_die.c -rw-r--r-- 2.0 KB
ws.c -rw-r--r-- 9.6 KB
wt-status.c -rw-r--r-- 47.7 KB
wt-status.h -rw-r--r-- 2.9 KB
xdiff-interface.c -rw-r--r-- 7.1 KB
xdiff-interface.h -rw-r--r-- 1.1 KB
zlib.c -rw-r--r-- 6.1 KB

README.md

back to top