git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3] http.c: use CURLOPT_RANGE for range requests

From
David Turner <dturner@twopensource.com>
Date
Nov 2, 2015, 22:41 UTC
Message-ID
<1446504084.4131.33.camel@twopensource.com>
In-Reply-To
<20151102221027.GA13996@sigill.intra.peff.net>
On Mon, 2015-11-02 at 17:10 -0500, Jeff King wrote:
Show 29 quoted lines
> On Mon, Nov 02, 2015 at 10:50:10PM +0100, Andreas Schwab wrote:
> 
> > Jeff King <peff@peff.net> writes:
> > 
> > >   4. Fix all of the callers. I suspect this would involve calling
> > >      fstat(fileno(fh)) to get a real off_t.
> > 
> > You can also use ftello which returns off_t.
> 
> Thanks, I forgot about that function. That would probably be the sanest
> path forward.
> 
> I think it is as simple as this (on top of David's patch):
> 
> -- >8 --
> Subject: [PATCH] http: use off_t to store partial file size
> 
> When we try to resume transfer of a partially-downloaded
> object or pack, we fopen() the existing file for append,
> then use ftell() to get the current position. We use a
> "long", which can hold only 2GB on a 32-bit system, even
> though packfiles may be larger than that.
> 
> Let's switch to using off_t, which should hold any file size
> our system is capable of storing. We need to use ftello() to
> get the off_t. This is in POSIX and hopefully available
> everywhere; if not, we should be able to wrap it by falling
> back to ftell(), which would presumably return "-1" on such
> a large file (and we would simply skip resuming in that case).

It would skip resuming, but would still maybe write to the end of the existing file, right? So I think we would need to seek to the beginning of the file in that case.

(other than that, lgtm)
Previous: Jeff KingNext: Jeff King
Message 5 of 6 in “http.c: use CURLOPT_RANGE for range requests”
  1. http.c: use CURLOPT_RANGE for range requestsDavid Turner, Nov 2, 2015
  2. Jeff KingNov 2, 2015
  3. Andreas SchwabNov 2, 2015
  4. Jeff KingNov 2, 2015
  5. David TurnerNov 2, 2015
  6. Jeff KingNov 2, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.