<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/methods/connect.cc, branch 1.8.1</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.8.1</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.8.1'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2018-05-24T12:26:16Z</updated>
<entry>
<title>Handle a missed case of timed out ip addresses</title>
<updated>2018-05-24T12:26:16Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2018-05-24T12:16:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=71b65b3563d223f6cd69261918ec06d10da48e6c'/>
<id>urn:sha1:71b65b3563d223f6cd69261918ec06d10da48e6c</id>
<content type='text'>
Correctly register timed out IP addresses from a timed out
select() call as a bad address so we do not try it again.

LP: #1766542
</content>
</entry>
<entry>
<title>Reword error for timed out read/write on SOCKS proxy</title>
<updated>2018-05-19T19:39:08Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2018-05-19T19:05:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=dd23021f588f5d50171cfb0d54108f594b139b26'/>
<id>urn:sha1:dd23021f588f5d50171cfb0d54108f594b139b26</id>
<content type='text'>
Closes: #898886
</content>
</entry>
<entry>
<title>Remove obsolete RCS keywords</title>
<updated>2018-05-07T11:41:31Z</updated>
<author>
<name>Guillem Jover</name>
<email>guillem@debian.org</email>
</author>
<published>2018-05-06T20:32:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=164f1b78d1849a0f33df7352875f86e28f5de06a'/>
<id>urn:sha1:164f1b78d1849a0f33df7352875f86e28f5de06a</id>
<content type='text'>
Prompted-by: Jakub Wilk &lt;jwilk@debian.org&gt;
</content>
</entry>
<entry>
<title>Correctly report transient errors again</title>
<updated>2018-01-03T15:33:36Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2018-01-03T15:28:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5b197e9de5376e191018562309e2d42123c27a1d'/>
<id>urn:sha1:5b197e9de5376e191018562309e2d42123c27a1d</id>
<content type='text'>
Commit 47c0bdc310c8cd62374ca6e6bb456dd183bdfc07 ("report transient
errors as transient error") accidentally changed some connection
failures to become non-transient, because the result of the error
checks where being ignored and then fatal error was returned if an
error was pending - even if that error was trivial.

After the merge of pu/happy-eyeballs2a this becomes a lot clearer,
and easy to fix.

Gbp-Dch: ignore
Regression-Of: 47c0bdc310c8cd62374ca6e6bb456dd183bdfc07
</content>
</entry>
<entry>
<title>Add rapid "happy eyeballs" connection fallback (RFC 8305)</title>
<updated>2018-01-03T14:31:36Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2018-01-02T21:15:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3bbd328396745d0dd6c5585935040082a2c41e3e'/>
<id>urn:sha1:3bbd328396745d0dd6c5585935040082a2c41e3e</id>
<content type='text'>
Try establishing connections in alternating address families in
rapid intervals of 250 ms, adding more connections to the wait
list until one succeeds (RFC 8305, happy eyeballs 2).

It is important that WaitAndCheckErrors() waits until it has
a successful connection, a time out, or all connections failed
- otherwise the timing between tries might be wrong, and the
final long wait might exit early because one connection failed
without trying the others. Timing wise, this only works correctly
on Linux, as select() counts down there. But we rely on that in
some other places too, so this is not the time to fix that.

Timeouts are only reported in the final long wait - the short
inner waits are expected to time out more often, and multiple
times, we do not want to report them.

Closes: #668948
LP: #1308200
Gbp-Dch: paragraph
</content>
</entry>
<entry>
<title>connect: Extract Connection::CheckError() method</title>
<updated>2018-01-03T14:26:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2018-01-02T20:59:02Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=53bdec3ebea66153b320ee497871355eb526e0f2'/>
<id>urn:sha1:53bdec3ebea66153b320ee497871355eb526e0f2</id>
<content type='text'>
Extracting the error checking method allows us to reuse it
in different places, so we can move the waiting and checking
out of DoConnect() eventually.

Gbp-Dch: ignore
</content>
</entry>
<entry>
<title>connect: Store the IP used when picking a connection</title>
<updated>2018-01-03T14:26:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2018-01-02T20:56:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c9a5a6f2140758c0ed08764a07dd454a8f3ff986'/>
<id>urn:sha1:c9a5a6f2140758c0ed08764a07dd454a8f3ff986</id>
<content type='text'>
There's no real point in storing the IP address while resolving
it - failure messages include the IP address in any case. Do this
when picking the connection for actual use instead.
</content>
</entry>
<entry>
<title>connect: Extract a Connection struct</title>
<updated>2018-01-03T14:26:47Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2018-01-02T20:53:46Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2369d1249ce7119abb30b616182454a56f124f8d'/>
<id>urn:sha1:2369d1249ce7119abb30b616182454a56f124f8d</id>
<content type='text'>
This struct holds information about a connection attempt, like
the addrinfo, the resolved address, the fd for the connection,
and so on.

Gbp-Dch: ignore
</content>
</entry>
<entry>
<title>connect: Alternate address families for addresses</title>
<updated>2018-01-03T14:23:55Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2018-01-02T20:43:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=23ddea7485ea5d28b8ad1a0d35e0d8c4de7ad54b'/>
<id>urn:sha1:23ddea7485ea5d28b8ad1a0d35e0d8c4de7ad54b</id>
<content type='text'>
As a first step to implementing Happy Eyeballs version 2, we
need to order the list of hosts getaddrinfo() gave us so it
alternates between preferred and other address families.

RFC: https://tools.ietf.org/html/rfc8305
Gbp-Dch: ignore
</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>
