## PurpleI2P/i2pd — 2.58.0…2.59.0

_255+ commits._

### Features
- **check version before trying to add to NetDb** (52dffb8)
- **Add space in log message** (648fddf)
- **support b32 addresses in datagrams** (85466e8)
- **switch to regular ECIES_X25519 crypto if post quantum section if too short in new session message** (87cd333)
- **add endpoint to recently connected list after successive peer test** (08aa515)
- **Add missing HTML tags <tr> </tr> in tables headers** (b611f6e)
- **Add missing HTML tags </div>** (686bb5c)
- **post quantum support for incoming NTCP2 connections** (3b845b8)
- **check conns per minute before new stream** (eb54762)
- **feat: change published port if full-cone** (76a481a)
- **send only one packet at the start before session is created, stop sending datagrams if no ack, clear window and send new datagrams after path change** (e54a542)

### Fixes
- **Do not translate - small fix** (c05a863)
- **Small webconsole html fix** (fea26da)
- **Fix webconsole: add 'http.webroot' in some buttons** (236862c)
- **Fix transit tunnels limit setting (config)** (60cb119)
- **Fix transit tunnels limit setting** (dd9c176)
- **Fix language selection** (82f36c4)
- **Fix thread-unsafe localtime()** (b8a5628)
- **Fix buffer overflow in HTTPServer.cpp** (d9a4aef)
- **Merge pull request #2275 from HardenedSteel/fix-dev** (55f9928)
- **fix: update ports separately for NTCP2 and SSU2** (c9fd560)
- **Merge pull request #2272 from HardenedSteel/fix** (890dedb)
- **fix: dont set as firewalled if full-cone** (5a00252)
- **Merge pull request #2271 from slrslr/patch-1** (90f143a)

### Backend
- **2.59.0** (896f548)
- **[i18n] Added Esperanto, Filipino, Finnish** (406df7b)
- **[gha] include git version to linux cmake builds** (5ea6851)
- **2.59.0** (0ee7eaf)
- **don't select random router with older version** (e084894)
- **don't load routers with older versions** (9bd39c0)
- **remove routers with older version from NetDb** (f72d22b)
- **don't communicate with low bandwidth routers of version < 0.9.58** (de0c5c0)
- **check min peer test version for Charlie** (c93cf9b)
- **stop accepting SSU2 session if queue is too big** (1a5847c)
- **[i18n] Update Hebrew localization strings (#2308)** (82e35ed)
- **Migrate /var/run/ to /run/** (1e7ab7f)
- **increase default transit tunnels limit to 25000** (026aad5)
- **throttle continious tunnel build messages** (d2ba567)
- **fixed typo** (a34e699)
- **ban by IP list** (9080fcf)
- **typo in config** (279d59b)
- **[reseed] follow redirects** (003fd8d)
- **fixed possible negative index** (32a250a)
- **increase min tunnel build messages interval. don't count if from the same millisecond** (bb30a42)
- **drop tunnel build message continiously** (c63f87e)
- **let few first tunnel build messages go through before drop** (b0543df)
- **Merge pull request #2314 from chadf/sanitizer-1** (ca08b58)
- **Added undefined behavior sanitizer.** (de10e6e)
- **bump min version for floodfill and high banwidth tunnels** (96064db)
- **count number of dropped tunnel build messages** (ebcc390)
- **Merge pull request #2313 from LLE8/one_space** (5f00447)
- **wake up tunnel build queue if a message gets dropped** (6ec128e)
- **delete inactive transit tunnels after 1 minute** (edf2828)
- **drop tunnel build message from the same peer if comes too often** (9c1ffba)
- **increase max transit tunnels to 10000000** (c66adab)
- **drop transit tunnel build request if queue exceeds 100** (3d54e46)
- **fixed typo** (e894c87)
- **Added FROM_PORT and TO_PORT datagram options** (3a42d2a)
- **use LeaseSet from session for follow on datagrams** (7876383)
- **set preferred crypto if i2cp.leaseSetEncType is not specified** (2f8480f)
- **return base64 of ident instead full address for datagram3** (a1b0f2a)
- **Merge pull request #2311 from LLE8/dont_translate** (3bbd661)
- **compatibility with older versions for v1 datagrams** (6dc6804)
- **fixed v1 datagrams** (6d9d648)
- **Do not translate KiB/s** (ec951c3)
- **Do not translate KiB, MiB, GiB** (dc3518e)
- **don't accept transit tunnel if limited connectivity** (ea705bc)
- **Merge pull request #2302 from LLE8/little_decoration_page_transports** (e3bab0e)
- **Webcosole: a little decoration transports page** (f75433b)
- **Merge pull request #2301 from LLE8/better_transittunnels** (7c8fddc)
- **send ratchet session response for unidirectional traffic for I2CP** (8a177b2)
- **Better transit tunnels page rendering** (7e174fc)
- **check if ratchets session is ready before sending follow on messages** (45b518f)
- **check ML-KEM encaps_key and ciphertext section length** (97bbfc3)
- **reply with relay tag only if accept tunnels** (7b43e10)
- **Merge pull request #2300 from LLE8/one_byte** (c87e656)
- **added lookuplocal and ping to help** (67cacb5)
- **allow next hop from the same subnet if reservedrange=false** (974846b)
- **Revert one byte** (7726caa)
- **added stan param** (6b7ce16)
- **returned back previous SSU2 and NTCP2 names** (6c339a0)
- **returned back previous SSU2 and NTCP2 names** (be8575c)
- **Merge pull request #2299 from LLE8/better_display_addresses** (e0ad224)
- **don't publish router with limited connectivity** (bbc10c9)
- **Webconsole: small decoration** (c639623)
- **Webconsole: Better display addresses** (622ab3b)
- **print correct directories in help depending on operating system** (7e45981)
- **exclude routers from the same subnet from next hop** (fef25d7)
- **Merge pull request #2296 from LLE8/fix_webconsole_main_page** (a7378a3)
- **Merge pull request #2295 from LLE8/fix_tables** (45b6a23)
- **Decorative changes in webconsole** (4a99e8d)
- **fixed typo** (3423f9b)
- **replace const char * by string_view** (0dfe3c7)
- **store explicit peers instead pointer** (e67b72b)
- **implemented trustedRouters tunnel param** (0518d8f)
- **Merge pull request #2293 from LLE8/fix_webroot** (837b0db)
- **Changing the network congestion detection algorithm** (9b896c8)
- **check protocol version for SessionRequest** (1881a09)
- **Merge pull request #2292 from LLE8/small_fix_webiface** (a4e76bb)
- **added reseed.sahil.world and i2p.diyarciftci.xyz reseeds** (3e324fc)
- **Merge pull request #2263 from fkobi/init-descriptions** (e9eff0c)
- **increased number of floodfills threshold** (4551f20)
- **Merge pull request #2291 from LLE8/fix_pid** (137cead)
- **common code to extract routers hashes from param** (60cc526)
- **Increase PID string length** (e893036)
- **Merge pull request #2289 from LLE8/fix_html** (68c6852)
- **Merge branch 'PurpleI2P:openssl' into fix_html** (98571da)
- **update NTCP2 address if version has changed** (2734bc4)
- **check if tunnels.conf exists before open** (08bee4e)
- **replace deadline_timer by steady_timer** (2ad30e5)
- **use std::array instead std::vector for priority** (1caadf2)
- **always set verson to 2 in SessionRequest** (dc061ad)
- **handle and publish NTCP2's pq param** (3a1fd9f)
- **get current floodfill flag from router.info** (a1b3030)
- **common buffer for SessionRequest and SessionCreated** (883f0bb)
- **Merge pull request #2288 from LLE8/fix_lang_selection** (4db9203)
- **choose version for handshake on Alice side** (86d0770)
- **handle ntcp2.version param in config** (a4839bf)
- **MixHash right after  encryption/decryption for SessionCreated and SessionConfirmed** (1737674)
- **Merge pull request #2287 from LLE8/fix_localtime_thread_unsafe** (27c765a)
- **Merge pull request #2285 from LLE8/fix_overflow** (ef8f5f1)
- **i2p.streaming.maxResends param** (4542f4b)
- **always try to build inbound tunnel through existing connection if limited connectivity** (b5e9c41)
- **check if post quantum requested in SessionRequest message** (d11d312)
- **Merge pull request #2282 from asciimoth/openssl** (46adb04)
- **Update dates range in licence** (ecb4854)
- **publish own RoterInfo through tunnels if limited connectivity** (5e19574)
- **implement i2p.streaming.maxConnsPerMinute tunnel param** (316e507)
- **disable introducer for floodfill after network status change** (ac39f12)
- **disable introducer for floodfill** (4193f1b)
- **Unify service descriptions** (4eafb86)
- **apply padding in establisher thread** (69c49dc)
- **handle post quantum frame in SessionCreated message** (2ddd4db)
- **apply MixHash right after Encrypt/Decrypt operations** (e587513)
- **Post quantum SessionRequest message** (4277fcc)
- **init XK state with ML-KEM for NTCP2** (9bd226e)
- **decode %00 in url** (5db88a4)
- **allow versions 2,3,4,5 in v param of address** (04ac2ca)
- **set number of generated tags to 800 for datagram destination if not specfied** (da8901d)
- **initalize index for SymmetricKeyTagSet** (94560ec)
- **ignore first ack after path change** (ce4aab8)
- **destroy memory pool after routers** (5d61232)
- **use std::from_chars in UrlDecode** (15e5921)
- **don't restart acceptor after stop** (8da012b)
- **Datagram3 by default** (8462e66)
- **fixed incorrect params length calculation if follow on data** (d52ad52)
- **Revert "remove logprint for incorrect port number"** (cd39da0)
- **don't check port if  zero** (e081b4b)
- **send repliable datagram every rtt/10 milliseconds** (a70f2df)
- **remove logprint for incorrect port number** (786ccc1)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/PurpleI2P/i2pd?utm_source=github-action)._