git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Don't die in git-http-fetch when fetching packs.
@ 2007-01-10  1:04 Shawn O. Pearce
  2007-01-10  1:10 ` Junio C Hamano
  0 siblings, 1 reply; 3+ messages in thread
From: Shawn O. Pearce @ 2007-01-10  1:04 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

My sp/mmap changes to pack-check.c modified the function such that
it expects packed_git.pack_size to be populated with the total
bytecount of the packfile by the caller.

But that isn't the case for packs obtained by git-http-fetch as
pack_size was not initialized before being accessed.  This caused
verify_pack to think it had 2^32-21 bytes available when the
downloaded pack perhaps was only 305 bytes in length.  The use_pack
function then later dies with "offset beyond end of packfile"
when computing the overall file checksum.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---

 For the tip of my sp/mmap topic.  Without it HTTP fetch and push
 support is severely broken as it cannot deal with packs.

 http-fetch.c |    1 +
 http-push.c  |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/http-fetch.c b/http-fetch.c
index fe8cd7b..67dfb0a 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -809,6 +809,7 @@ static int fetch_pack(struct alt_base *repo, unsigned char *sha1)
 		return error("Unable to start request");
 	}
 
+	target->pack_size = ftell(packfile);
 	fclose(packfile);
 
 	ret = move_temp_to_file(tmpfile, filename);
diff --git a/http-push.c b/http-push.c
index 7e73eac..8eb448e 100644
--- a/http-push.c
+++ b/http-push.c
@@ -770,6 +770,7 @@ static void finish_request(struct transfer_request *request)
 				request->url, curl_errorstr);
 			remote->can_update_info_refs = 0;
 		} else {
+			target->pack_size = ftell(request->local_stream);
 			fclose(request->local_stream);
 			request->local_stream = NULL;
 			if (!move_temp_to_file(request->tmpfile,
-- 
1.4.4.4.gf198

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] Don't die in git-http-fetch when fetching packs.
  2007-01-10  1:04 [PATCH] Don't die in git-http-fetch when fetching packs Shawn O. Pearce
@ 2007-01-10  1:10 ` Junio C Hamano
  2007-01-10  1:28   ` Shawn O. Pearce
  0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2007-01-10  1:10 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: git

"Shawn O. Pearce" <spearce@spearce.org> writes:

> My sp/mmap changes to pack-check.c modified the function such that
> it expects packed_git.pack_size to be populated with the total
> bytecount of the packfile by the caller.
>
> But that isn't the case for packs obtained by git-http-fetch as
> pack_size was not initialized before being accessed.  This caused
> verify_pack to think it had 2^32-21 bytes available when the
> downloaded pack perhaps was only 305 bytes in length.  The use_pack
> function then later dies with "offset beyond end of packfile"
> when computing the overall file checksum.
>
> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
> ---
>
>  For the tip of my sp/mmap topic.  Without it HTTP fetch and push
>  support is severely broken as it cannot deal with packs.

Ah, thanks.  I've seen this today and a repeated fetch after
that fixed it and thought it was a mirroring lag.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Don't die in git-http-fetch when fetching packs.
  2007-01-10  1:10 ` Junio C Hamano
@ 2007-01-10  1:28   ` Shawn O. Pearce
  0 siblings, 0 replies; 3+ messages in thread
From: Shawn O. Pearce @ 2007-01-10  1:28 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Junio C Hamano <junkio@cox.net> wrote:
> "Shawn O. Pearce" <spearce@spearce.org> writes:
> >  For the tip of my sp/mmap topic.  Without it HTTP fetch and push
> >  support is severely broken as it cannot deal with packs.
> 
> Ah, thanks.  I've seen this today and a repeated fetch after
> that fixed it and thought it was a mirroring lag.

Me too.  I have actually been fighting with it on and off since we
got sp/mmap reasonably stable.  I just always kept attributing it
to kernel.org mirroring lag until I realized it was just happening
way too often.

-- 
Shawn.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-01-10  1:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-10  1:04 [PATCH] Don't die in git-http-fetch when fetching packs Shawn O. Pearce
2007-01-10  1:10 ` Junio C Hamano
2007-01-10  1:28   ` Shawn O. Pearce

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).