<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/methods/connect.cc, branch 2.9.19</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.19</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.19'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-12-22T22:45:15Z</updated>
<entry>
<title>Remove GnuTLS and gcrypt support</title>
<updated>2024-12-22T22:45:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-21T14:26:34Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7b1fb90b93ced7c0772d726e512da01fad456852'/>
<id>urn:sha1:7b1fb90b93ced7c0772d726e512da01fad456852</id>
<content type='text'>
OpenSSL is mandatory now, it is no longer possible to build
without https support either.
</content>
</entry>
<entry>
<title>hashes, methods: Add OpenSSL backends</title>
<updated>2024-12-22T21:55:39Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-18T18:37:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=90270f0959d490d56db891809d83c91b3d4b9bf0'/>
<id>urn:sha1:90270f0959d490d56db891809d83c91b3d4b9bf0</id>
<content type='text'>
Introduce an OpenSSL::Crypto backend for the hashes library
and an OpenSSL::SSL backend for the TLS support in our https
method.

Many thanks to curl for showing the way with how to handle
a CRL file. There are some memory leaks here with the
TlsFd itself as well as the proxy support; and we should
reorganize the code to generate the ssl object as late
as possible.

A peculiar aspect of OpenSSL is that SSL_has_pending() returns
1 even if SSL_read() will fail to read anything and return the
equivalent of EAGAIN. We work around this here by also peeking
ahead 1 byte. I was running a very high RTT connection from
Germany to Australia for testing, and with the peeking it's
using negligible amounts of CPU; before that, it was busy
looping at 100%. Bad OpenSSL!
</content>
</entry>
<entry>
<title>Tag hidden acquire classes as final for devirtualization</title>
<updated>2024-11-22T12:13:25Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-11-19T22:42:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8c760266c8c736bff62055c008ab74d78f3ed82a'/>
<id>urn:sha1:8c760266c8c736bff62055c008ab74d78f3ed82a</id>
<content type='text'>
gcc reports `warning: Declaring type ‘class X’ final would
enable devirtualization of Y calls [-Wsuggest-final-types]`.
Not that this would massively improve performance, but it
shouldn't hurt telling the compiler what is obvious for a human.
</content>
</entry>
<entry>
<title>Support building without gnutls</title>
<updated>2024-03-03T07:23:51Z</updated>
<author>
<name>Steve Langasek</name>
<email>steve.langasek@canonical.com</email>
</author>
<published>2024-03-03T07:10:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9044806c2adc6118399349c70a6c5746cedcc374'/>
<id>urn:sha1:9044806c2adc6118399349c70a6c5746cedcc374</id>
<content type='text'>
Once in a generation, it may be necessary to bootstrap apt in an
environment where gnutls is not yet available.  This makes gnutls
support in apt optional.

You may also want a configure flag to force gnutls to be required from
outside the buildsystem (e.g. debian/rules).
</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>Use https config on https proxies for http servers</title>
<updated>2021-09-13T14:09:19Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2021-09-12T22:54:38Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4e04cbafe7db326b52ee650a4f4ccc3444da6890'/>
<id>urn:sha1:4e04cbafe7db326b52ee650a4f4ccc3444da6890</id>
<content type='text'>
The settings used for unwrapping TLS connections depend on the access
and hostname we connect to more than what we eventually unwrap. The
bugreport mentions CaInfo, but all other https-settings should also
apply (regardless of generic or hostname specific) to an https proxy,
even if the connection we proxy through it is http-only.

Closes: #990555
</content>
</entry>
<entry>
<title>Turn TLS handshake issues into transient errors</title>
<updated>2021-05-12T11:06:11Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-05-11T14:04:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2129ffecc084ca772af75418225c5551631e6278'/>
<id>urn:sha1:2129ffecc084ca772af75418225c5551631e6278</id>
<content type='text'>
This makes them retriable, and brings them more into line with
TCP, where handshake is also a transient error.

LP: #1928100
</content>
</entry>
<entry>
<title>connect: use ServiceNameOrPort, not Port, as the cache key</title>
<updated>2020-12-22T23:54:14Z</updated>
<author>
<name>Faidon Liambotis</name>
<email>paravoid@debian.org</email>
</author>
<published>2020-12-22T23:54:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=1663774bf309fbd196fd2b9c5c2afdd7a25fd288'/>
<id>urn:sha1:1663774bf309fbd196fd2b9c5c2afdd7a25fd288</id>
<content type='text'>
The "last connection" cache is currently being stored and looked up on
the combination of (LastHost, LastPort). However, these are not what the
arguments to getaddrinfo() were on the first try: the call is to
getaddrinfo(Host, ServiceNameOrPort, ...), i.e. with the port *or if 0,
the service name* (e.g. http).

Effectively this means that the connection cache lookup for:
   https://example.org/... i.e. Host = example.org, Port = 0, Service = http
would end up matching the "last" connection of (if existed):
   https://example.org/... i.e. Host = example.org, Port = 0, Service = https
...and thus performing a TLS request over an (unrelated) port 80
connection. Therefore, an HTTP request, followed up by an (unrelated)
HTTPS request to the same server, would always fail.

Address this by using as the cache key the ServiceNameOrPort, rather
than Port.
</content>
</entry>
<entry>
<title>connect: convert a C-style string to std::string</title>
<updated>2020-12-22T23:51:50Z</updated>
<author>
<name>Faidon Liambotis</name>
<email>paravoid@debian.org</email>
</author>
<published>2020-12-22T23:51:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8d4b3a4fcead0ca534b5d1c5a99ae2a4c95eee21'/>
<id>urn:sha1:8d4b3a4fcead0ca534b5d1c5a99ae2a4c95eee21</id>
<content type='text'>
Convert the fixed-size (300) char array "ServStr" to a std::string, and
simplify the code by removing snprintfs in the process.

While at it, rename to the more aptly named "ServiceNameOrPort" and
update the comment to reflect what this variable is meant to be.
</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>
</feed>
