diff --git a/ChangeLog b/ChangeLog index 7a5ea1f5cd..72a464665c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,48 @@ +# v 1.2.2 2022-02-25 [stable] + +This is a maintenance release with major bug fixes. + +There were several shortcomings with bandwidth management: capping was not +performed correctly and could overuse uploading bandwidth. Also when the DHT +is turned off or on, we need to recompute proper bandwidth stealing. + +Corruption of the DHT disk databases could also lead to a crash. + +There was a critical old bug in the Dynamic Querying layer that affected +Ultrapeers mostly: we could corrupt memory and/or crash when the current node +was removed and we were processing a Dynamic Query for that node. This is +more likely to happen when running as an Ultrapeer but it could also affect +nodes running as leaves, although the probability of that bug happening is +much less in that case. + +Finally, it is best to not iterate on a global list that could get changed +due to a node removal. This was the case when sending pongs to neighbouring +nodes, so we now take a private copy. + +Improvements: +- Extended "props" shell command with -e (exact) and -i (ignore missing). +- The "props" command now takes a set of properties, handled as one batch. + +Bug Fixes: +- Properly recompute bandwidth stealing on DHT changes. +- Avoid crashing in D-Bus lib when filename is improperly UTF-8 encoded. +- DHT: protect against corrupted database. +- bw_available(): fix invalid logic for I/O source capping. +- pong_all_neighbours_but_one(): iterate on local list. +- dq_node_removed(): must free dq object asynchronously. + +Under the Hood: +- Update IRC network information: moved from freenode to libera.chat +- Chunk size limiting for uploads accounts for bandwidth. +- Reduce memory footprint for statx_t if no data kept. +- CQ: defer freeing of dispatched event. +- watchdog: be more verbose within critical messages. +- node_parse(): signal to callers when we have BYE-ed the node. +- cq_event_called(): use better diagnostic on assert failure. +- dbus_util_send_message(): protect against invalid text. +- prepare_entry(): ensure entry invariant remains true. +- wd_expire(): do nothing if watchdog was asleep. + # v 1.2.1 2021-07-12 [stable] This is a maintenance release with minor bug fixes. @@ -21,7 +66,7 @@ to store the data. Add properties to track bytes exchanged by schedulers. These properties track the amount of bytes exchanged by session and are reset to 0 whenever a new user session starts. It allows users to see the actual amount of -data consumed by running gtk-gnutella sessions, programatically via the +data consumed by running gtk-gnutella sessions, programmatically via the shell interface. Add -t switch to shell "status" command: this displays the total amount diff --git a/debian/changelog b/debian/changelog index c6a1835032..317c4eac1b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +gtk-gnutella (1.2.2-1) unstable; urgency=high + + * New upstream release with major bug fixes. + + -- Raphael Manfredi Fri, 25 Feb 2022 07:32:37 +0000 + gtk-gnutella (1.2.1-1) unstable; urgency=high * New upstream release with important bug fixes. diff --git a/src/core/token.c b/src/core/token.c index 85f928825b..4e458f3e8a 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -348,6 +348,37 @@ static const char *keys_102_1[] = { "ce78 1809 89c0 3c80 e9dc ca22 0bef 71d0", }; +static const char *keys_102_2[] = { + "4b40 70f5 93fc 6998 e092 3ba5 6c6c b32b", + "d26e 1468 44de 417e c596 0397 389d 85b2", + "5105 6295 649d 6769 b1cf 8b95 c57d bdb7", + "6844 b056 c078 8a87 996b 495b fddc 174e", + "641e 9b8c ed8c f280 486f 4e12 ddba 8012", + "db43 c956 3f6e 5c1a a053 5b81 2067 e1b6", + "267b 8663 4dac 2ae1 72b2 2db2 5bd7 7db5", + "5ee2 7852 d7d4 ae52 e41e 4347 58d5 8429", + "351d 7969 ba9f e266 7a27 20a8 1f72 24f3", + "2d5e 1d43 5d61 7b5c 01f6 67c5 00f4 04e8", + "21f7 b850 7316 71ae 7558 aed8 f748 b419", + "a156 0466 f350 a8cf 6d94 b7c1 9d39 2142", + "4d46 e2ae 7709 c3e8 4237 d47f 0a85 a938", + "87e5 dcbb 63af 251e 3b07 b280 9389 bfaa", + "685a 2b0f 5001 65dc e04d d20b fc87 1617", + "70d3 56ee 5ac1 fa6c 7d21 e69f 5282 9bd1", + "64d3 4219 0a3b 233b 6845 00d0 38d2 171d", + "b3d9 73d4 3c51 1e4f 62fe 3a27 78b5 9de5", + "c4d1 8159 b2fc 6e4c 0b08 cf70 17f5 3419", + "af78 ec18 a7b6 c564 e97b 12ab 2ea2 a76f", + "55d2 e105 a20e cca6 4dfe cba1 9f45 bac0", + "2ce8 661c 251a 2e03 40dc 8f17 b496 5fca", + "3b72 0fa5 a31a d70f 0ae4 1fdb 8a2d 86b4", + "76a0 f3ea 702e b870 9bae 9ba5 d9bd a13f", + "e975 96bd 8627 23cb 7fb7 415f 41b5 8851", + "0c6f c649 f90b 47d4 3d98 24ac e8bb 3e6b", + "c19b 5529 0904 2f10 ede4 b0d6 c994 f31b", + "275a ca3e fee6 0882 401a 19b6 8014 cdfc", +}; + #define KEYS(x) keys_ ## x, N_ITEMS(keys_ ## x) /** @@ -368,6 +399,7 @@ struct tokkey { { { 1, 1, 15, '\0', 0, 0, 1563055200 }, KEYS(101_15) }, /* 2019-07-14 */ { { 1, 2, 0, '\0', 0, 0, 1594245600 }, KEYS(102_0) }, /* 2020-07-09 */ { { 1, 2, 1, '\0', 0, 0, 1626040800 }, KEYS(102_1) }, /* 2021-07-12 */ + { { 1, 2, 2, '\0', 0, 0, 1645743600 }, KEYS(102_2) }, /* 2022-02-25 */ }; #undef KEYS diff --git a/src/gtk-gnutella.h b/src/gtk-gnutella.h index 82eb1e143a..567febf713 100644 --- a/src/gtk-gnutella.h +++ b/src/gtk-gnutella.h @@ -40,10 +40,10 @@ #define GTA_PRODUCT_NAME "gtk-gnutella" /**< Normally "gtk-gnutella" */ #define GTA_VERSION 1 /**< major version */ #define GTA_SUBVERSION 2 /**< minor version */ -#define GTA_PATCHLEVEL 1 /**< patch level or teeny version */ +#define GTA_PATCHLEVEL 2 /**< patch level or teeny version */ #define GTA_REVISION "stable" /**< unstable, beta, stable */ #define GTA_REVCHAR "" /**< (u)nstable, (b)eta, "" -> stable */ -#define GTA_RELEASE "2021-07-11" /**< ISO 8601 format YYYY-MM-DD */ +#define GTA_RELEASE "2022-02-25" /**< ISO 8601 format YYYY-MM-DD */ #define GTA_WEBSITE "http://gtk-gnutella.sourceforge.net/" #define GTA_VENDOR_CODE "GTKG" #define GTA_PRODUCT_NICK "gtkg"