<feed xmlns='http://www.w3.org/2005/Atom'>
<title>opentracker/tests, branch v2.2.0</title>
<subtitle>An open and free bittorrent tracker
</subtitle>
<id>https://erdgeist.org/gitweb/opentracker/atom?h=v2.2.0</id>
<link rel='self' href='https://erdgeist.org/gitweb/opentracker/atom?h=v2.2.0'/>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/'/>
<updated>2026-11-08T19:08:44Z</updated>
<entry>
<title>Retire the busy network tracker. /24 networks don't say anything anymore in 2026 and in v6 it was broken from the beginning</title>
<updated>2026-11-08T19:08:44Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-08T19:08:44Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=1c2af535eb3052405503f136578e30b24a8e18ae'/>
<id>urn:sha1:1c2af535eb3052405503f136578e30b24a8e18ae</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Unify the peerlists for v4 and v6</title>
<updated>2026-11-07T18:39:01Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-07T18:39:01Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=589cb500fa5a6df13fa9634d0071922ec11fce17'/>
<id>urn:sha1:589cb500fa5a6df13fa9634d0071922ec11fce17</id>
<content type='text'>
This commit finishes what started with unifying v4 and v6 trackers, from then on, torrents
carried a peer list per family, with obvious redundancies. With the race to save memory,
these became burdening enough that now these peerlist pointers have been moved into a
single struct, holding both v4 and v6 peers in their respective ot_vectors, so the per-
torrent cost shrunk by another pointer's size.

Each peerlist also lost its peer count cache, as in most cases, it's trivial to load it
directly from the ot_vector's entry count. The seed counts that were kept per family only
to be aggregated later for every consumer, are also merged now.

Total savings depend on the tracker's actual load. In some corner cases, where only one
address family dominates the torrents, we actually use a few bytes more in the ot_vector
for the absent family, but even that mostly becomes noise: before it actually adds to the
memory load, the peer payload will be the deciding factor.

Most wins are on what often is experienced on trackers: A long tail of abandoned torrents
now needs eight fewer bytes, slipping into a smaller allocation unit on glibc's allocator.
</content>
</entry>
<entry>
<title>Add a knob to help reducing memory consumption. This time: empty torrents may expire sooner</title>
<updated>2026-11-07T15:54:36Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-07T15:54:36Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=1e7248b330bde4c70528ccf91535391e19294dc3'/>
<id>urn:sha1:1e7248b330bde4c70528ccf91535391e19294dc3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix s24s stats to ensure no unallocated vector is dereferenced. Drive-by fix for the ip= scanner in the http parser</title>
<updated>2026-11-07T12:30:17Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-07T12:30:17Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=cfbe53da5d9ef8dad1bb3276c0b33ec2ab6e974b'/>
<id>urn:sha1:cfbe53da5d9ef8dad1bb3276c0b33ec2ab6e974b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Start to opentracker's memory requirements</title>
<updated>2026-11-07T02:55:27Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-07T02:55:27Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=bbfd674e08c6b1fa4081f9c678fd220bead749d7'/>
<id>urn:sha1:bbfd674e08c6b1fa4081f9c678fd220bead749d7</id>
<content type='text'>
* peer lists for v4 and v6 are now lazily allocated and, more importantly, will be freed once there are no more peers
* The downloaded count is now per torrent and not per peer list anymore, moving in what was alignment loss, anyway
* The (now) per torrent downloaded and the per peer list peer and seed count shrunk from size_t to uint32_t
* A helper guards accesses to the peer and seed count to prevent null pointer dereferences
* The base time also shrank from time_t to uint32_t, minutes since the epoch currently fits in 25 bits
</content>
</entry>
<entry>
<title>Fix a theoretical bug where a short request packet yields an oob read</title>
<updated>2026-11-06T20:17:54Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-06T20:17:54Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=a29e606b6f97c00d0b7e80cb0592bca54f92f2c9'/>
<id>urn:sha1:a29e606b6f97c00d0b7e80cb0592bca54f92f2c9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix an accesslist reload issue where an empty-but-present changeset after a reload could potentially walk a NULL array</title>
<updated>2026-11-06T19:25:39Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-06T19:25:39Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=97e58519bc946daabcadc531510497c3598961a1'/>
<id>urn:sha1:97e58519bc946daabcadc531510497c3598961a1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix: livesync watermark used sizeof(ot_peer) which is a byte. Clamping on copy length now</title>
<updated>2026-11-06T17:31:07Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-06T17:31:07Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=c965744e09a24270bb26e3e008dc2ede76544c98'/>
<id>urn:sha1:c965744e09a24270bb26e3e008dc2ede76544c98</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Gives urlencoded_parse a destination bound</title>
<updated>2026-11-06T17:27:44Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-06T17:27:44Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=92c27bbda9e809683537e5cc48adad0d5c390587'/>
<id>urn:sha1:92c27bbda9e809683537e5cc48adad0d5c390587</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a wall clock helper so that statedumps can be written and re-read</title>
<updated>2026-11-06T13:24:04Z</updated>
<author>
<name>Dirk Engling</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-11-06T13:24:04Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/opentracker/commit/?id=355c8ae57d582974f4f6a4ba42f635f2253b84a7'/>
<id>urn:sha1:355c8ae57d582974f4f6a4ba42f635f2253b84a7</id>
<content type='text'>
</content>
</entry>
</feed>
