<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/methods/basehttp.cc, branch feature/rred</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=feature%2Frred</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=feature%2Frred'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2020-08-10T09:39:30Z</updated>
<entry>
<title>Do not retry on failure to fetch</title>
<updated>2020-08-10T09:39:30Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-08-10T09:39:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=fa375493c5a4ed9c10d4e5257ac82c6e687862d3'/>
<id>urn:sha1:fa375493c5a4ed9c10d4e5257ac82c6e687862d3</id>
<content type='text'>
While we fixed the infinite retrying earlier, we still have
problems if we retry in the middle of a transfer, we might
end up resuming downloads that are already done and read
more than we should (removing the IsOpen() check so that
it always retries makes test-ubuntu-bug-1098738-apt-get-source-md5sum
fail with wrong file sizes).

I think the retrying was added to fixup pipelining messups,
but we have better solutions now, so let's get rid of it,
until we have implemented this properly.
</content>
</entry>
<entry>
<title>basehttp: Correctly handle non-transient failure from RunData()</title>
<updated>2020-08-05T12:15:49Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-08-05T12:14:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4b439208203cd584e158fd240a3a4a72d1248099'/>
<id>urn:sha1:4b439208203cd584e158fd240a3a4a72d1248099</id>
<content type='text'>
When we failed after a retry, we only communicated failure as
transient, but this seems wrong, especially given that the code
now always triggers a retry when Die() is called, as Die() closes
the server fd.

Instead, remove the error handling in that code path, and reuse
the existing fatal-ish error code handling path.
</content>
</entry>
<entry>
<title>http: Fix infinite loop on read errors</title>
<updated>2020-08-05T09:08:16Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-08-05T09:04:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ded246bb61b9b0f4ca658be45c1691844e1dc122'/>
<id>urn:sha1:ded246bb61b9b0f4ca658be45c1691844e1dc122</id>
<content type='text'>
If there was a transient error and the server fd was closed, the
code would infinitely retry - it never reached FailCounter &gt;= 2
because it falls through to the end of the loop, which sets
FailCounter = 0.

Add a continue just like the DNS rotation code has, so that the
retry actually fails after 2 attempts.

Also rework the error logic to forward the actual error message.
</content>
</entry>
<entry>
<title>Apply various suggestions by cppcheck</title>
<updated>2019-07-08T13:51:17Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2019-07-08T13:48:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2b734a7ec429825c7007c1093883229e069d36c7'/>
<id>urn:sha1:2b734a7ec429825c7007c1093883229e069d36c7</id>
<content type='text'>
Reported-By: cppcheck
</content>
</entry>
<entry>
<title>RFC1123StrToTime: Accept const std::string&amp; as first argument</title>
<updated>2019-06-17T16:28:52Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-06-17T16:28:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=97553e635d2265ec4aad96b00b1fd72d98437f15'/>
<id>urn:sha1:97553e635d2265ec4aad96b00b1fd72d98437f15</id>
<content type='text'>
We are converting to std::string anyway by passing to
istringstream, and this removes the need for .c_str()
in callers.
</content>
</entry>
<entry>
<title>apt-pkg: URI: Add 'explicit' to single argument constructor</title>
<updated>2019-04-30T15:43:56Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-04-30T10:32:54Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=af74a9e2d55d6a9532eb3fbb9b96c65b7ddc1e4d'/>
<id>urn:sha1:af74a9e2d55d6a9532eb3fbb9b96c65b7ddc1e4d</id>
<content type='text'>
This needs a fair amount of changes elsewhere in the code,
hence this is separate from the previous commits.
</content>
</entry>
<entry>
<title>http: Stop pipeline after close only if it was not filled before</title>
<updated>2018-09-18T14:07:24Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2018-08-31T14:07:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=df696650b7a8c58bbd92e0e1619e956f21010a96'/>
<id>urn:sha1:df696650b7a8c58bbd92e0e1619e956f21010a96</id>
<content type='text'>
It is perfectly valid behavior for a server to respond with
Connection: close eventually, even when pipelining. Turning
off pipelining due to that is wrong. For example, some Ubuntu
mirrors close the connection after 101 requests. If I have
more packages to install, only the first 101 would benefit
from pipelining.

This commit introduces a new check to only turn of pipelining
for future connections if the pipeline for this connection did
not have 3 successful fetches before, that should work quite well to
detect broken server/proxy combinations like in bug 832113.
</content>
</entry>
<entry>
<title>Lower default timeout from 120s to 30s</title>
<updated>2018-05-24T12:31:31Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2018-05-24T12:31:31Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=329a4a6159f1972ff5ec7bc2db26430f26dc61f3'/>
<id>urn:sha1:329a4a6159f1972ff5ec7bc2db26430f26dc61f3</id>
<content type='text'>
120s is an insanely high default time out, lower it to 30s
to make things a bit nicer.
</content>
</entry>
<entry>
<title>use 127.0.0.1 instead of localhost as default Tor proxy</title>
<updated>2018-05-11T12:51:50Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2018-05-11T12:51:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b0283a5aeee428c9f2567b81ae78c9da68f6f4af'/>
<id>urn:sha1:b0283a5aeee428c9f2567b81ae78c9da68f6f4af</id>
<content type='text'>
This shouldn't make a practical difference for most people, but for edge
cases it avoids DNS lookups and additionally prevents us from perfoming
unneeded SRV requests, too.
</content>
</entry>
<entry>
<title>report transient errors as transient errors</title>
<updated>2017-12-13T22:56:29Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2017-10-25T22:57:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=47c0bdc310c8cd62374ca6e6bb456dd183bdfc07'/>
<id>urn:sha1:47c0bdc310c8cd62374ca6e6bb456dd183bdfc07</id>
<content type='text'>
The Fail method for acquire methods has a boolean parameter indicating
the transient-nature of a reported error. The problem with this is that
Fail is called very late at a point where it is no longer easily
identifiable if an error is indeed transient or not, so some calls were
and some weren't and the acquire system would later mostly ignore the
transient flag and guess by using the FailReason instead.

Introducing a tri-state enum we can pass the information about fatal or
transient errors through the callstack to generate the correct fails.
</content>
</entry>
</feed>
