<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/methods/basehttp.cc, branch 3.1.2</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.2</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.2'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-11-18T12:44:49Z</updated>
<entry>
<title>http: use Retry-After HTTP header to optimize retries</title>
<updated>2024-11-18T12:44:49Z</updated>
<author>
<name>Felix Moessbauer</name>
<email>felix.moessbauer@siemens.com</email>
</author>
<published>2024-11-08T14:04:17Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7b9dea5a7c43fd91bcd23d1585d39a726d098285'/>
<id>urn:sha1:7b9dea5a7c43fd91bcd23d1585d39a726d098285</id>
<content type='text'>
Some mirrors like snapshot.debian.org apply strict http rate limits.
While apt already has an exponential backoff mechanism implemented, this
is not sufficient due to the following reasons:

1. all retries happen roughly at the same time
2. the retry-after information from the server is not used

We fix this by improving the algorithm: First, if present, the timestamp
or duration of the Retry-After header is added to the exponential
backoff, optimizing for success-on-second-try. Second, a random delay is
added (delay += [0, delay]) to distribute the retries to not immediately
run into the limit again. To avoid super-long delays, this is capped by
the configured maximum delay. This logic only becomes active if the
option Acquire::Retries::HandleRetryAfter is enabled.

Signed-off-by: Felix Moessbauer &lt;felix.moessbauer@siemens.com&gt;
</content>
</entry>
<entry>
<title>Modernize standard library includes</title>
<updated>2024-02-20T12:49:04Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-02-20T12:43:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=40a75722c43ae24cb9a99d6730a3b25b65819c49'/>
<id>urn:sha1:40a75722c43ae24cb9a99d6730a3b25b65819c49</id>
<content type='text'>
This was automated with sed and git-clang-format, and then I had to
fix up the top of policy.cc by hand as git-clang-format accidentally
indented it by two spaces.
</content>
</entry>
<entry>
<title>basehttp: Rename HaveContent's Tristate</title>
<updated>2021-11-23T19:19:23Z</updated>
<author>
<name>Cameron Katri</name>
<email>me@cameronkatri.com</email>
</author>
<published>2021-11-23T19:19:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6f35750118a06e9d11e6aa7ab29f4ef01b75898b'/>
<id>urn:sha1:6f35750118a06e9d11e6aa7ab29f4ef01b75898b</id>
<content type='text'>
Darwin systems define TRUE and FALSE as preprocessor macros for use with
bool. This conflicts with the enum values causing the compilation to
fail.
</content>
</entry>
<entry>
<title>Merge branch 'pu/content-length-0' into 'main'</title>
<updated>2021-10-18T13:42:56Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2021-10-18T13:42:56Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ad7bae309a827592aa228af9470c1aa7abdd189e'/>
<id>urn:sha1:ad7bae309a827592aa228af9470c1aa7abdd189e</id>
<content type='text'>
basehttp: Turn HaveContent into a TriState

See merge request apt-team/apt!179</content>
</entry>
<entry>
<title>Disable HTTP Range usage if varnish &lt; 6.4 is involved</title>
<updated>2021-09-16T20:40:00Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2021-09-16T17:48:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=d013f8957c0d464e0059cc107ca79d887cf9f8aa'/>
<id>urn:sha1:d013f8957c0d464e0059cc107ca79d887cf9f8aa</id>
<content type='text'>
Debian buster (oldstable) ships 6.1 while bullseye (stable) ships 6.5
and so the later is 'fixed'. Upstream declares 6.0 still as supported.
It might be still a while we encounter "bad" versions in the wild, so
if we can detect and work around the issue at runtime automatically we
can save some users from running into "persistent" partial files.

References: https://varnish-cache.org/docs/6.4/whats-new/changes-6.4.html#changes-in-behavior
</content>
</entry>
<entry>
<title>Add AllowRange option to disable HTTP Range usage</title>
<updated>2021-09-16T20:38:46Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2021-09-16T17:33:24Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=61c1d7d3658fdcd4b32f8b071cef7941120f8abc'/>
<id>urn:sha1:61c1d7d3658fdcd4b32f8b071cef7941120f8abc</id>
<content type='text'>
apt makes heavy usage of HTTP1.1 features including Range and If-Range.
Sadly it is not obvious if the involved server(s) (and proxies) actually
support them all. The Acquire::http::AllowRange option defaults to true
as before, but now a user can disable Range usage if it is known that
the involved server is not dealing with such requests correctly.
</content>
</entry>
<entry>
<title>Set haveContent to FALSE on `Content-Length: 0`</title>
<updated>2021-07-01T13:47:48Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-07-01T13:38:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=fe4201380bd377aebd25bd96a06a7eda6c74a533'/>
<id>urn:sha1:fe4201380bd377aebd25bd96a06a7eda6c74a533</id>
<content type='text'>
Set haveContent to HaveContent::FALSE when Content-Length is 0,
and change remaining code to only set it to TRUE if it has not
been set so far.

Closes: #990281
</content>
</entry>
<entry>
<title>basehttp: Turn HaveContent into a TriState</title>
<updated>2021-07-01T13:35:21Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-07-01T13:35:21Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f9e2e914996ce8f0af33d5bfed52e814e0f4a861'/>
<id>urn:sha1:f9e2e914996ce8f0af33d5bfed52e814e0f4a861</id>
<content type='text'>
We need to be able to set HaveContent to false if the Content-Length
is 0, and not have that overriden just because a later header is
Content-Type.
</content>
</entry>
<entry>
<title>Fix downloads of unsized files that are largest in pipeline</title>
<updated>2021-04-13T14:00:41Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-04-09T16:11:02Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=27a4fb3a9ac67a13ed516c75feefdc1fd426520a'/>
<id>urn:sha1:27a4fb3a9ac67a13ed516c75feefdc1fd426520a</id>
<content type='text'>
The maximum request size is accidentally set to any sized file,
so if an unsized file is present, and it turns out to be larger
than the maximum size we set, we'd error out when checking if
its size is smaller than the maximum request size.

LP: #1921626
</content>
</entry>
<entry>
<title>Ensure HTTP status code text has sensible content</title>
<updated>2021-02-04T10:00:00Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2020-06-28T18:59:27Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3e53dbbe758a4e2da378ebf0296d8105d4a5804c'/>
<id>urn:sha1:3e53dbbe758a4e2da378ebf0296d8105d4a5804c</id>
<content type='text'>
We use the code in error messages, so at least for that edgecase we
should ensure that it has sensible content. Note that the acquire
system aborts on non-sensible message content in SendMessage, so you
can't really exploit this.
</content>
</entry>
</feed>
