Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libqxmpp for openSUSE:Factory checked in at 2024-05-20 18:15:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqxmpp (Old) and /work/SRC/openSUSE:Factory/.libqxmpp.new.1880 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqxmpp" Mon May 20 18:15:18 2024 rev:23 rq:1175106 version:1.6.1 Changes: -------- --- /work/SRC/openSUSE:Factory/libqxmpp/libqxmpp.changes 2024-02-26 19:47:14.325916999 +0100 +++ /work/SRC/openSUSE:Factory/.libqxmpp.new.1880/libqxmpp.changes 2024-05-20 18:16:50.481722512 +0200 @@ -1,0 +2,13 @@ +Sun May 19 08:56:14 UTC 2024 - Michael Vetter <mvet...@suse.com> + +- Update to 1.6.1: + * Fix handling of XMPP redirects (introduced in aaa6497) + * Fix compilation with Qt 6 + C++17 (not C++20) in OmemoData + * Fix OMEMO decryption of group chat messages (#617) + * Fix stream resumption + This has been an issue since the initial implementation of + stream mangement. The xmlns was missing in the <resume/> + element and the stream ID was not parsed in the <enabled/> + element. + +------------------------------------------------------------------- Old: ---- libqxmpp-1.6.0.tar.gz New: ---- libqxmpp-1.6.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqxmpp.spec ++++++ --- /var/tmp/diff_new_pack.J2mrP0/_old 2024-05-20 18:16:50.965740134 +0200 +++ /var/tmp/diff_new_pack.J2mrP0/_new 2024-05-20 18:16:50.969740280 +0200 @@ -32,7 +32,7 @@ %endif %define sover 4 Name: libqxmpp%{?pkg_suffix} -Version: 1.6.0 +Version: 1.6.1 Release: 0 Summary: Qt XMPP Library License: LGPL-2.1-or-later ++++++ libqxmpp-1.6.0.tar.gz -> libqxmpp-1.6.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/CHANGELOG.md new/qxmpp-1.6.1/CHANGELOG.md --- old/qxmpp-1.6.0/CHANGELOG.md 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/CHANGELOG.md 2024-05-16 20:05:44.000000000 +0200 @@ -4,6 +4,18 @@ SPDX-License-Identifier: CC0-1.0 --> +QXmpp 1.6.1 (May 16, 2024) +-------------------------- + +Fixes: + - Fix handling of XMPP redirects (introduced in aaa6497) (@lnjX) + - Fix compilation with Qt 6 + C++17 (not C++20) in OmemoData (@lnjX) + - Fix OMEMO decryption of group chat messages (@melvo, #617) + - Fix stream resumption (@lnjX)<br/> + This has been an issue since the initial implementation of stream mangement. The xmlns was + missing in the <resume/> element and the stream ID was not parsed in the <enabled/> + element. + QXmpp 1.6.0 (Feb 6, 2024) ------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/CMakeLists.txt new/qxmpp-1.6.1/CMakeLists.txt --- old/qxmpp-1.6.0/CMakeLists.txt 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/CMakeLists.txt 2024-05-16 20:05:44.000000000 +0200 @@ -3,7 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 cmake_minimum_required(VERSION 3.7) -project(qxmpp VERSION 1.6.0) +project(qxmpp VERSION 1.6.1) set(SO_VERSION 4) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/doc/doap.xml new/qxmpp-1.6.1/doc/doap.xml --- old/qxmpp-1.6.0/doc/doap.xml 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/doc/doap.xml 2024-05-16 20:05:44.000000000 +0200 @@ -662,6 +662,13 @@ </implements> <release> <Version> + <revision>1.6.1</revision> + <created>2024-05-16</created> + <file-release rdf:resource='https://github.com/qxmpp-project/qxmpp/archive/refs/tags/v1.6.1.tar.gz'/> + </Version> + </release> + <release> + <Version> <revision>1.5.5</revision> <created>2023-04-30</created> <file-release rdf:resource='https://github.com/qxmpp-project/qxmpp/archive/refs/tags/v1.5.5.tar.gz'/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/src/base/QXmppStreamManagement.cpp new/qxmpp-1.6.1/src/base/QXmppStreamManagement.cpp --- old/qxmpp-1.6.0/src/base/QXmppStreamManagement.cpp 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/src/base/QXmppStreamManagement.cpp 2024-05-16 20:05:44.000000000 +0200 @@ -118,6 +118,7 @@ { QString resume = element.attribute(QStringLiteral("resume")); m_resume = resume == QStringLiteral("true") || resume == QStringLiteral("1"); + m_id = element.attribute(QStringLiteral("id")); m_max = element.attribute(QStringLiteral("max")).toUInt(); m_location = element.attribute(QStringLiteral("location")); } @@ -178,6 +179,7 @@ void QXmppStreamManagementResume::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement(QStringLiteral("resume")); + writer->writeDefaultNamespace(ns_stream_management); writer->writeAttribute(QStringLiteral("h"), QString::number(m_h)); writer->writeAttribute(QStringLiteral("previd"), m_previd); writer->writeEndElement(); @@ -223,6 +225,7 @@ void QXmppStreamManagementResumed::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement(QStringLiteral("resumed")); + writer->writeDefaultNamespace(ns_stream_management); writer->writeAttribute(QStringLiteral("h"), QString::number(m_h)); writer->writeAttribute(QStringLiteral("previd"), m_previd); writer->writeEndElement(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/src/client/QXmppOutgoingClient.cpp new/qxmpp-1.6.1/src/client/QXmppOutgoingClient.cpp --- old/qxmpp-1.6.0/src/client/QXmppOutgoingClient.cpp 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/src/client/QXmppOutgoingClient.cpp 2024-05-16 20:05:44.000000000 +0200 @@ -552,9 +552,15 @@ } else if (ns == ns_stream && nodeRecv.tagName() == "error") { // handle redirects const auto otherHost = nodeRecv.firstChildElement("see-other-host"); - if (!otherHost.isNull() && setResumeAddress(otherHost.text())) { - QXmppStream::disconnectFromHost(); - return; + if (!otherHost.isNull()) { + // try to parse address + if (auto [host, port] = parseHostAddress(otherHost.text()); !host.isEmpty()) { + d->redirectHost = host; + d->redirectPort = port > 0 ? port : 5222; + + QXmppStream::disconnectFromHost(); + return; + } } if (!nodeRecv.firstChildElement("conflict").isNull()) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/src/omemo/QXmppOmemoManager_p.cpp new/qxmpp-1.6.1/src/omemo/QXmppOmemoManager_p.cpp --- old/qxmpp-1.6.0/src/omemo/QXmppOmemoManager_p.cpp 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/src/omemo/QXmppOmemoManager_p.cpp 2024-05-16 20:05:44.000000000 +0200 @@ -1385,7 +1385,8 @@ if (const auto omemoEnvelope = omemoElement.searchEnvelope(ownBareJid(), ownDevice.id)) { QXmppPromise<std::optional<QXmppMessage>> interface; - const auto senderJid = QXmppUtils::jidToBareJid(stanza.from()); + const auto mixUserJid = stanza.mixUserJid(); + const auto senderJid = mixUserJid.isEmpty() ? QXmppUtils::jidToBareJid(stanza.from()) : mixUserJid; const auto senderDeviceId = omemoElement.senderDeviceId(); const auto omemoPayload = omemoElement.payload(); @@ -1505,13 +1506,14 @@ q->info("Sender '" % senderJid % "' of stanza does not match SCE 'from' affix element '" % sceEnvelopeReader.from() % "'"); } - if (const auto recipientJid = QXmppUtils::jidToBareJid(stanza.to()); isMessageStanza) { - if (const auto &message = dynamic_cast<const QXmppMessage &>(stanza); message.type() == QXmppMessage::GroupChat && (sceEnvelopeReader.to() != recipientJid)) { + if (isMessageStanza) { + // For messages from group chats, their "from" element corresponds to the SCE affix element "to". + if (const auto &message = dynamic_cast<const QXmppMessage &>(stanza); message.type() == QXmppMessage::GroupChat && (sceEnvelopeReader.to() != QXmppUtils::jidToBareJid(stanza.from()))) { warning("Recipient of group chat message does not match SCE affix element '<to/>'"); interface.finish(std::nullopt); return; } - } else if (sceEnvelopeReader.to() != recipientJid) { + } else if (sceEnvelopeReader.to() != QXmppUtils::jidToBareJid(stanza.to())) { q->info("Recipient of IQ does not match SCE affix element '<to/>'"); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.6.0/tests/qxmppomemodata/tst_qxmppomemodata.cpp new/qxmpp-1.6.1/tests/qxmppomemodata/tst_qxmppomemodata.cpp --- old/qxmpp-1.6.0/tests/qxmppomemodata/tst_qxmppomemodata.cpp 2024-02-06 22:42:56.000000000 +0100 +++ new/qxmpp-1.6.1/tests/qxmppomemodata/tst_qxmppomemodata.cpp 2024-05-16 20:05:44.000000000 +0200 @@ -251,7 +251,7 @@ "</prekeys>" "</bundle>")); - const auto xmls = QVector({ xml1, xml2 }); + QVector<QByteArray> xmls = { xml1, xml2 }; QHash<uint32_t, QByteArray> expectedPublicPreKeys = { { 1, QByteArray::fromBase64(QByteArrayLiteral("eDM2cnBiTmo4MmRGQ1RYTkZ0YnVwajJtNWdPdzkxZ0gK")) },