Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package weechat for openSUSE:Factory checked in at 2026-03-10 17:53:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/weechat (Old) and /work/SRC/openSUSE:Factory/.weechat.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "weechat" Tue Mar 10 17:53:28 2026 rev:91 rq:1337822 version:4.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/weechat/weechat.changes 2025-12-02 13:21:40.594681299 +0100 +++ /work/SRC/openSUSE:Factory/.weechat.new.8177/weechat.changes 2026-03-10 17:53:43.824582357 +0100 @@ -1,0 +2,8 @@ +Mon Mar 9 14:55:24 UTC 2026 - Hunter Wardlaw <[email protected]> + +- Update to 4.8.2: + * irc: ignore self join if the channel is already joined (#2291) + * relay/api: fix memory leaks in resources "ping" and "sync" + * relay/api: fix memory leak in receive of message from remote WeeChat + +------------------------------------------------------------------- Old: ---- weechat-4.8.1.tar.xz weechat-4.8.1.tar.xz.asc New: ---- weechat-4.8.2.tar.xz weechat-4.8.2.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ weechat.spec ++++++ --- /var/tmp/diff_new_pack.rIR6Nb/_old 2026-03-10 17:53:44.384605479 +0100 +++ /var/tmp/diff_new_pack.rIR6Nb/_new 2026-03-10 17:53:44.388605644 +0100 @@ -1,7 +1,7 @@ # # spec file for package weechat # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: weechat -Version: 4.8.1 +Version: 4.8.2 Release: 0 Summary: Multi-protocol extensible Chat Client License: GPL-3.0-or-later ++++++ weechat-4.8.1.tar.xz -> weechat-4.8.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/CHANGELOG.md new/weechat-4.8.2/CHANGELOG.md --- old/weechat-4.8.1/CHANGELOG.md 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/CHANGELOG.md 2026-03-06 23:15:44.000000000 +0100 @@ -6,6 +6,14 @@ # WeeChat ChangeLog +## Version 4.8.2 (2026-03-06) + +### Fixed + +- irc: ignore self join if the channel is already joined ([#2291](https://github.com/weechat/weechat/issues/2291)) +- relay/api: fix memory leaks in resources "ping" and "sync" +- relay/api: fix memory leak in receive of message from remote WeeChat + ## Version 4.8.1 (2025-12-01) ### Fixed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/po/de.po new/weechat-4.8.2/po/de.po --- old/weechat-4.8.1/po/de.po 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/po/de.po 2026-03-06 23:15:44.000000000 +0100 @@ -28,8 +28,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: [email protected]\n" -"POT-Creation-Date: 2025-11-28 18:41+0100\n" -"PO-Revision-Date: 2025-11-09 11:00+0100\n" +"POT-Creation-Date: 2026-01-30 13:45+0100\n" +"PO-Revision-Date: 2026-02-04 23:06+0100\n" "Last-Translator: Nils Görs <[email protected]>\n" "Language-Team: German <[email protected]>\n" "Language: de_DE\n" @@ -2257,7 +2257,7 @@ "> - use \"\\t\" to separate prefix from message, special chars like \"|\" " "must be escaped: \"\\|\"" msgstr "" -"> - das Präfix (z.B. Nick) wird mittels '\t' von der Nachricht getrennt. " +"> - das Präfix (z.B. Nick) wird mittels '\\t' von der Nachricht getrennt. " "Sonderzeichen wie '|' müssen mit einer Escapesequenz : '\\|' eingebunden " "werden" @@ -7986,7 +7986,7 @@ msgstr "" "fügt einen Zeilenumbruch zwischen die einzelnen Buffer hinzu um pro Zeile " "einen Buffer anzuzeigen (empfohlen); falls deaktiviert muss ein " -"Zeilenumbruch manuell hinzugefügt werden, \"${\\\\n}\", des Weiteren ist die " +"Zeilenumbruch manuell hinzugefügt werden, \"${\\n}\", des Weiteren ist die " "Mausunterstützung nicht mehr gegeben" msgid "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/src/plugins/irc/irc-protocol.c new/weechat-4.8.2/src/plugins/irc/irc-protocol.c --- old/weechat-4.8.1/src/plugins/irc/irc-protocol.c 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/src/plugins/irc/irc-protocol.c 2026-03-06 23:15:44.000000000 +0100 @@ -1753,6 +1753,9 @@ ptr_channel = irc_channel_search (ctxt->server, ctxt->params[0]); if (ptr_channel) { + /* ignore self join if the channel is already joined */ + if (ctxt->nick_is_me && ptr_channel->nicks) + return WEECHAT_RC_OK; ptr_channel->part = 0; } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/src/plugins/relay/api/relay-api-protocol.c new/weechat-4.8.2/src/plugins/relay/api/relay-api-protocol.c --- old/weechat-4.8.1/src/plugins/relay/api/relay-api-protocol.c 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/src/plugins/relay/api/relay-api-protocol.c 2026-03-06 23:15:44.000000000 +0100 @@ -1056,13 +1056,15 @@ cJSON_CreateString ((ptr_data) ? ptr_data : "")); relay_api_msg_send_json (client, RELAY_HTTP_200_OK, NULL, "ping", json); cJSON_Delete (json); - cJSON_Delete (json_body); } else { relay_api_msg_send_json (client, RELAY_HTTP_204_NO_CONTENT, NULL, NULL, NULL); } + if (json_body) + cJSON_Delete (json_body); + return RELAY_API_PROTOCOL_RC_OK; } @@ -1121,6 +1123,9 @@ relay_api_msg_send_json (client, RELAY_HTTP_204_NO_CONTENT, NULL, NULL, NULL); + if (json_body) + cJSON_Delete (json_body); + return RELAY_API_PROTOCOL_RC_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/src/plugins/relay/api/remote/relay-remote-event.c new/weechat-4.8.2/src/plugins/relay/api/remote/relay-remote-event.c --- old/weechat-4.8.1/src/plugins/relay/api/remote/relay-remote-event.c 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/src/plugins/relay/api/remote/relay-remote-event.c 2026-03-06 23:15:44.000000000 +0100 @@ -1283,7 +1283,15 @@ json = cJSON_Parse (data); if (!json) - goto error_data; + { + weechat_printf ( + NULL, + _("%sremote[%s]: invalid data received from remote relay: \"%s\""), + weechat_prefix ("error"), + remote->name, + data); + return; + } event.remote = remote; event.name = NULL; @@ -1296,7 +1304,7 @@ json_body = cJSON_GetObjectItem (json, "body"); if (!body_type && ((code == 200) || (code == 204))) - return; + goto end; JSON_GET_STR(json, event_name); event.name = event_name; @@ -1352,7 +1360,15 @@ rc = (callback) (&event); } if (rc == WEECHAT_RC_ERROR) - goto error_cb; + { + weechat_printf ( + NULL, + _("%sremote[%s]: callback failed for body type \"%s\""), + weechat_prefix ("error"), + remote->name, + body_type); + goto end; + } } if (!remote->synced && initial_sync) @@ -1361,23 +1377,6 @@ weechat_bar_item_update ("input_prompt"); } - return; - -error_data: - weechat_printf ( - NULL, - _("%sremote[%s]: invalid data received from remote relay: \"%s\""), - weechat_prefix ("error"), - remote->name, - data); - return; - -error_cb: - weechat_printf ( - NULL, - _("%sremote[%s]: callback failed for body type \"%s\""), - weechat_prefix ("error"), - remote->name, - body_type); - return; +end: + cJSON_Delete (json); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/src/plugins/relay/api/remote/relay-remote-network.c new/weechat-4.8.2/src/plugins/relay/api/remote/relay-remote-network.c --- old/weechat-4.8.1/src/plugins/relay/api/remote/relay-remote-network.c 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/src/plugins/relay/api/remote/relay-remote-network.c 2026-03-06 23:15:44.000000000 +0100 @@ -156,6 +156,7 @@ int accept_ok, hash_size; http_resp = NULL; + json_body = NULL; msg_error = NULL; msg_resp_error = NULL; accept_ok = 0; @@ -225,6 +226,9 @@ relay_http_response_free (http_resp); + if (json_body) + cJSON_Delete (json_body); + return 1; error: @@ -238,6 +242,8 @@ (msg_resp_error) ? msg_resp_error : "", (msg_resp_error) ? ")" : ""); relay_http_response_free (http_resp); + if (json_body) + cJSON_Delete (json_body); return 0; } @@ -1200,6 +1206,8 @@ remote->hook_url_handshake = NULL; + json_body = NULL; + ptr_resp_code = weechat_hashtable_get (output, "response_code"); if (ptr_resp_code && ptr_resp_code[0] && (strcmp (ptr_resp_code, "200") != 0)) { @@ -1211,7 +1219,7 @@ weechat_config_string (remote->options[RELAY_REMOTE_OPTION_URL]), ptr_resp_code); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } ptr_error = weechat_hashtable_get (output, "error"); @@ -1225,7 +1233,7 @@ weechat_config_string (remote->options[RELAY_REMOTE_OPTION_URL]), ptr_error); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } ptr_output = weechat_hashtable_get (output, "output"); @@ -1262,7 +1270,7 @@ weechat_config_string (remote->options[RELAY_REMOTE_OPTION_URL]), _("hash algorithm not found")); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } if (remote->password_hash_iterations < 0) @@ -1275,7 +1283,7 @@ weechat_config_string (remote->options[RELAY_REMOTE_OPTION_URL]), _("unknown number of hash iterations")); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } if (remote->totp < 0) @@ -1288,7 +1296,7 @@ weechat_config_string (remote->options[RELAY_REMOTE_OPTION_URL]), _("unknown TOTP status")); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } if (weechat_relay_plugin->debug >= 1) @@ -1325,7 +1333,7 @@ weechat_prefix ("error"), remote->name); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } snprintf (option_name, length, "weechat.proxy.%s.type", proxy); proxy_type = weechat_config_get (option_name); @@ -1343,7 +1351,7 @@ _("%sremote[%s]: proxy \"%s\" not found, cannot connect"), weechat_prefix ("error"), remote->name, proxy); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } str_proxy_type = weechat_config_string (proxy_type); str_proxy_address = weechat_config_string (proxy_address); @@ -1356,7 +1364,7 @@ "proxy \"%s\""), weechat_prefix ("error"), remote->name, proxy); relay_remote_network_disconnect (remote); - return WEECHAT_RC_OK; + goto end; } } @@ -1375,6 +1383,9 @@ remote, NULL); +end: + if (json_body) + cJSON_Delete (json_body); return WEECHAT_RC_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/tests/unit/plugins/irc/test-irc-protocol.cpp new/weechat-4.8.2/tests/unit/plugins/irc/test-irc-protocol.cpp --- old/weechat-4.8.1/tests/unit/plugins/irc/test-irc-protocol.cpp 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/tests/unit/plugins/irc/test-irc-protocol.cpp 2026-03-06 23:15:44.000000000 +0100 @@ -2070,7 +2070,6 @@ LONGS_EQUAL(0, ptr_channel->has_quit_server); LONGS_EQUAL(0, ptr_channel->cycle); LONGS_EQUAL(0, ptr_channel->part); - LONGS_EQUAL(0, ptr_channel->part); STRCMP_EQUAL(NULL, ptr_channel->pv_remote_nick_color); POINTERS_EQUAL(NULL, ptr_channel->hook_autorejoin); @@ -2090,6 +2089,10 @@ CHECK(ptr_channel->buffer); + /* second self JOIN should be ignored if already joined */ + RECV(":alice!user@host JOIN #test "); + CHECK_NO_MSG; + RECV(":bob!user@host JOIN #test * : "); CHECK_CHAN("-->", "bob ( ) (user@host) has joined #test", "irc_join,irc_smart_filter,nick_bob,host_user@host,log4"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/weechat-4.8.1/version.sh new/weechat-4.8.2/version.sh --- old/weechat-4.8.1/version.sh 2025-12-01 19:43:41.000000000 +0100 +++ new/weechat-4.8.2/version.sh 2026-03-06 23:15:44.000000000 +0100 @@ -41,8 +41,8 @@ # devel-number the devel version as hex number ("0x04010000" for "4.1.0-dev") # -weechat_stable="4.8.1" -weechat_devel="4.8.1" +weechat_stable="4.8.2" +weechat_devel="4.8.2" stable_major=$(echo "${weechat_stable}" | cut -d"." -f1) stable_minor=$(echo "${weechat_stable}" | cut -d"." -f2)
