Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libqxmpp for openSUSE:Factory checked in at 2025-10-24 17:24:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqxmpp (Old) and /work/SRC/openSUSE:Factory/.libqxmpp.new.1980 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqxmpp" Fri Oct 24 17:24:23 2025 rev:41 rq:1313386 version:1.11.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libqxmpp/libqxmpp.changes 2025-09-18 21:09:36.692758626 +0200 +++ /work/SRC/openSUSE:Factory/.libqxmpp.new.1980/libqxmpp.changes 2025-10-24 17:26:02.225978906 +0200 @@ -1,0 +2,11 @@ +Fri Oct 24 10:59:58 UTC 2025 - Christophe Marin <[email protected]> + +- Update to 1.11.3 + * JmiManager: Fix ID is not set when calling proceed() + * HttpUploadManager: Add header containing content type to HTTP + request + * Fix crash on upload cancellation + * Client: e2ee: Fix parsing unencrypted messages as + SceSensitive only + +------------------------------------------------------------------- Old: ---- qxmpp-1.11.2.tar.xz qxmpp-1.11.2.tar.xz.sig New: ---- qxmpp-1.11.3.tar.xz qxmpp-1.11.3.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqxmpp.spec ++++++ --- /var/tmp/diff_new_pack.HVXMV7/_old 2025-10-24 17:26:03.654038895 +0200 +++ /var/tmp/diff_new_pack.HVXMV7/_new 2025-10-24 17:26:03.686040239 +0200 @@ -18,7 +18,7 @@ %define sover 6 Name: libqxmpp -Version: 1.11.2 +Version: 1.11.3 Release: 0 Summary: Qt XMPP Library License: LGPL-2.1-or-later @@ -59,6 +59,7 @@ Development package for qxmpp. # No need to build it twice + %package -n libqxmpp-doc Summary: Qxmpp library documentation BuildArch: noarch ++++++ qxmpp-1.11.2.tar.xz -> qxmpp-1.11.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/.gitlab-ci.yml new/qxmpp-1.11.3/.gitlab-ci.yml --- old/qxmpp-1.11.2/.gitlab-ci.yml 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/.gitlab-ci.yml 2025-10-13 15:11:58.000000000 +0200 @@ -13,3 +13,7 @@ - /gitlab-templates/alpine-qt6.yml - /gitlab-templates/freebsd-qt6.yml - /gitlab-templates/windows-qt6.yml + - /gitlab-templates/craft-macos-arm64-qt6.yml + - /gitlab-templates/craft-macos-x86-64-qt6.yml + - /gitlab-templates/craft-windows-mingw64-qt6.yml + - /gitlab-templates/craft-windows-x86-64-qt6.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/CHANGELOG.md new/qxmpp-1.11.3/CHANGELOG.md --- old/qxmpp-1.11.2/CHANGELOG.md 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/CHANGELOG.md 2025-10-13 15:11:58.000000000 +0200 @@ -4,6 +4,13 @@ SPDX-License-Identifier: CC0-1.0 --> +QXmpp 1.11.3 (October 13, 2025) +------------------------------- + + - Fixes for Apple Clang (@lnj, !719) + - HttpUploadManager: Add Content-Type header when uploading via HTTP (@melvo, !721) + - EncryptedFileSharingProvider: Fix crash on cancellation (@fazevedo, !720) + QXmpp 1.11.2 (September 2, 2025) -------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/CMakeLists.txt new/qxmpp-1.11.3/CMakeLists.txt --- old/qxmpp-1.11.2/CMakeLists.txt 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/CMakeLists.txt 2025-10-13 15:11:58.000000000 +0200 @@ -3,7 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 cmake_minimum_required(VERSION 3.16) -project(qxmpp VERSION 1.11.2) +project(qxmpp VERSION 1.11.3) set(SO_VERSION 6) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/doc/doap.xml new/qxmpp-1.11.3/doc/doap.xml --- old/qxmpp-1.11.2/doc/doap.xml 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/doc/doap.xml 2025-10-13 15:11:58.000000000 +0200 @@ -751,6 +751,13 @@ </implements> <release> <Version> + <revision>1.11.3</revision> + <created>2025-10-13</created> + <file-release rdf:resource='https://download.kde.org/unstable/qxmpp/qxmpp-1.11.3.tar.xz'/> + </Version> + </release> + <release> + <Version> <revision>1.11.2</revision> <created>2025-09-02</created> <file-release rdf:resource='https://download.kde.org/unstable/qxmpp/qxmpp-1.11.2.tar.xz'/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/base/QXmppArchiveIq.h new/qxmpp-1.11.3/src/base/QXmppArchiveIq.h --- old/qxmpp-1.11.2/src/base/QXmppArchiveIq.h 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/base/QXmppArchiveIq.h 2025-10-13 15:11:58.000000000 +0200 @@ -64,7 +64,8 @@ /// \cond static constexpr std::tuple XmlTag = { u"chat", QXmpp::Private::ns_archive }; void parse(const QDomElement &element); - void toXml(QXmlStreamWriter *writer, const QXmppResultSetReply &rsm = QXmppResultSetReply()) const; + void toXml(QXmlStreamWriter *writer) const { toXml(writer, {}); } + void toXml(QXmlStreamWriter *writer, const QXmppResultSetReply &rsm) const; /// \endcond private: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/base/QXmppUtils.cpp new/qxmpp-1.11.3/src/base/QXmppUtils.cpp --- old/qxmpp-1.11.2/src/base/QXmppUtils.cpp 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/base/QXmppUtils.cpp 2025-10-13 15:11:58.000000000 +0200 @@ -469,7 +469,7 @@ return {}; } -QByteArray QXmpp::Private::serializeXml(std::function<void(XmlWriter &)> toXml) +QByteArray QXmpp::Private::serializeXmlWriter(std::function<void(XmlWriter &)> toXml) { QByteArray data; QXmlStreamWriter xmlStream(&data); @@ -478,7 +478,7 @@ return data; } -QByteArray QXmpp::Private::serializeXml(std::function<void(QXmlStreamWriter *)> toXml) +QByteArray QXmpp::Private::serializeQXmlStream(std::function<void(QXmlStreamWriter *)> toXml) { QByteArray data; QXmlStreamWriter xmlStream(&data); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/base/QXmppUtils_p.h new/qxmpp-1.11.3/src/base/QXmppUtils_p.h --- old/qxmpp-1.11.2/src/base/QXmppUtils_p.h 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/base/QXmppUtils_p.h 2025-10-13 15:11:58.000000000 +0200 @@ -14,6 +14,7 @@ #include <functional> #include <optional> #include <stdint.h> +#include <type_traits> #include <QByteArray> #include <QDomElement> @@ -244,28 +245,34 @@ }); } -QByteArray serializeXml(std::function<void(XmlWriter &)>); -QByteArray serializeXml(std::function<void(QXmlStreamWriter *)>); +QByteArray serializeXmlWriter(std::function<void(XmlWriter &)>); +QByteArray serializeQXmlStream(std::function<void(QXmlStreamWriter *)>); template<typename T> -concept XmlWriterSerializeable = requires(T packet, XmlWriter &writer) { - { packet.toXml(writer) } -> std::same_as<void>; -}; -template<typename T> -concept QXmlStreamSerializeable = requires(T packet, QXmlStreamWriter *writer) { - { packet.toXml(writer) } -> std::same_as<void>; -}; +concept XmlWriterSerializeable = + std::same_as< + decltype(static_cast<void (std::remove_cvref_t<T>::*)(XmlWriter &)>(&std::remove_cvref_t<T>::toXml)), + void (std::remove_cvref_t<T>::*)(XmlWriter &)> || + std::same_as< + decltype(static_cast<void (std::remove_cvref_t<T>::*)(XmlWriter &) const>(&std::remove_cvref_t<T>::toXml)), + void (std::remove_cvref_t<T>::*)(XmlWriter &) const>; + +template<typename T> +concept QXmlStreamSerializeable = + std::same_as< + decltype(static_cast<void (std::remove_cvref_t<T>::*)(QXmlStreamWriter *) const>(&std::remove_cvref_t<T>::toXml)), + void (std::remove_cvref_t<T>::*)(QXmlStreamWriter *) const>; template<typename T> inline QByteArray serializeXml(const T &packet) requires XmlWriterSerializeable<T> || QXmlStreamSerializeable<T> { if constexpr (XmlWriterSerializeable<T>) { - return serializeXml([&](XmlWriter &w) { + return serializeXmlWriter([&](XmlWriter &w) { packet.toXml(w); }); } else if constexpr (QXmlStreamSerializeable<T>) { - return serializeXml([&](QXmlStreamWriter *w) { + return serializeQXmlStream([&](QXmlStreamWriter *w) { packet.toXml(w); }); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/base/QXmppVisitHelper_p.h new/qxmpp-1.11.3/src/base/QXmppVisitHelper_p.h --- old/qxmpp-1.11.2/src/base/QXmppVisitHelper_p.h 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/base/QXmppVisitHelper_p.h 2025-10-13 15:11:58.000000000 +0200 @@ -13,6 +13,10 @@ using Ts::operator()...; }; +// explicit deduction guide (not needed as of C++20) +template<class... Ts> +overloaded(Ts...) -> overloaded<Ts...>; + } // namespace QXmpp::Private #endif // QXMPPVISITHELPER_P_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/base/XmlWriter.h new/qxmpp-1.11.3/src/base/XmlWriter.h --- old/qxmpp-1.11.2/src/base/XmlWriter.h 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/base/XmlWriter.h 2025-10-13 15:11:58.000000000 +0200 @@ -345,6 +345,11 @@ } }; +template<IsOptionalStringSerializable Enum> +OptionalEnumElement(Enum) -> OptionalEnumElement<Enum>; +template<IsOptionalStringSerializable Enum, std::convertible_to<QStringView> StringView> +OptionalEnumElement(Enum, StringView) -> OptionalEnumElement<Enum>; + template<typename Tag, typename Value> struct TextElement { Tag tag; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/client/QXmppClient.cpp new/qxmpp-1.11.3/src/client/QXmppClient.cpp --- old/qxmpp-1.11.2/src/client/QXmppClient.cpp 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/client/QXmppClient.cpp 2025-10-13 15:11:58.000000000 +0200 @@ -193,7 +193,7 @@ } QXmppMessage message; if (e2eeExt) { - message.parse(element, e2eeExt->isEncrypted(element) ? ScePublic : SceSensitive); + message.parse(element, e2eeExt->isEncrypted(element) ? ScePublic : SceAll); } else { message.parse(element); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/client/QXmppEncryptedFileSharingProvider.cpp new/qxmpp-1.11.3/src/client/QXmppEncryptedFileSharingProvider.cpp --- old/qxmpp-1.11.2/src/client/QXmppEncryptedFileSharingProvider.cpp 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/client/QXmppEncryptedFileSharingProvider.cpp 2025-10-13 15:11:58.000000000 +0200 @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2022 Jonah BrĂ¼chert <[email protected]> // SPDX-FileCopyrightText: 2022 Linus Jahn <[email protected]> +// SPDX-FileCopyrightText: 2025 Filipe AZevedo <[email protected]> // // SPDX-License-Identifier: LGPL-2.1-or-later @@ -111,17 +112,23 @@ metadata, std::move(reportProgress), [=, reportFinished = std::move(reportFinished)](UploadResult result) { - auto encryptedResult = map<UploadResult>( - [&](std::any httpSourceAny) { - QXmppEncryptedFileSource encryptedSource; - encryptedSource.setCipher(ENCRYPTION_DEFAULT_CIPHER); - encryptedSource.setKey(key); - encryptedSource.setIv(iv); - encryptedSource.setHttpSources({ std::any_cast<QXmppHttpFileSource>(std::move(httpSourceAny)) }); - - return encryptedSource; - }, - std::move(result)); - reportFinished(std::move(encryptedResult)); + if (std::holds_alternative<std::any>(result)) { + auto encryptedResult = map<UploadResult>( + [&](std::any httpSourceAny) { + QXmppEncryptedFileSource encryptedSource; + encryptedSource.setCipher(ENCRYPTION_DEFAULT_CIPHER); + encryptedSource.setKey(key); + encryptedSource.setIv(iv); + encryptedSource.setHttpSources({ std::any_cast<QXmppHttpFileSource>(std::move(httpSourceAny)) }); + + return encryptedSource; + }, + std::move(result)); + reportFinished(std::move(encryptedResult)); + } else if (std::holds_alternative<Cancelled>(result)) { + reportFinished(Cancelled {}); + } else if (std::holds_alternative<QXmppError>(result)) { + reportFinished(std::get<QXmppError>(std::move(result))); + } }); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/client/QXmppHttpUploadManager.cpp new/qxmpp-1.11.3/src/client/QXmppHttpUploadManager.cpp --- old/qxmpp-1.11.2/src/client/QXmppHttpUploadManager.cpp 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/client/QXmppHttpUploadManager.cpp 2025-10-13 15:11:58.000000000 +0200 @@ -301,7 +301,7 @@ auto future = client()->findExtension<QXmppUploadRequestManager>()->requestSlot(filename, fileSize, mimeType, uploadServiceJid); // TODO: rawSourceDevice: could this lead to a memory leak if the "then lambda" is never executed? - future.then(this, [this, upload, rawSourceDevice = data.release()](SlotResult result) mutable { + future.then(this, [this, upload, rawSourceDevice = data.release(), mimeType](SlotResult result) mutable { // first check whether upload was cancelled in the meantime if (upload->d->cancelled) { upload->d->reportFinished(); @@ -324,6 +324,7 @@ upload->d->getUrl = slot.getUrl(); QNetworkRequest request(slot.putUrl()); + request.setHeader(QNetworkRequest::ContentTypeHeader, mimeType.name()); auto headers = slot.putHeaders(); for (auto itr = headers.cbegin(); itr != headers.cend(); ++itr) { request.setRawHeader(itr.key().toUtf8(), itr.value().toUtf8()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qxmpp-1.11.2/src/client/QXmppJingleMessageInitiationManager.cpp new/qxmpp-1.11.3/src/client/QXmppJingleMessageInitiationManager.cpp --- old/qxmpp-1.11.2/src/client/QXmppJingleMessageInitiationManager.cpp 2025-09-02 17:13:51.000000000 +0200 +++ new/qxmpp-1.11.3/src/client/QXmppJingleMessageInitiationManager.cpp 2025-10-13 15:11:58.000000000 +0200 @@ -86,7 +86,7 @@ { QXmppJingleMessageInitiationElement jmiElement; jmiElement.setType(JmiType::Proceed); - + jmiElement.setId(d->id); return d->request(std::move(jmiElement)); }
