From 8e77649e2c29fd65d826852b99ff150cbe3bc337 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Wed, 29 Sep 2021 15:38:21 +0200 Subject: PubSubIq: Fix data form type for create/publish --- src/base/QXmppPubSubIq.cpp | 8 ++++---- tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/base/QXmppPubSubIq.cpp b/src/base/QXmppPubSubIq.cpp index 38d432df..367b0ec0 100644 --- a/src/base/QXmppPubSubIq.cpp +++ b/src/base/QXmppPubSubIq.cpp @@ -632,18 +632,18 @@ void QXmppPubSubIqBase::toXmlElementFromChild(QXmlStreamWriter *writer) const }; // make sure form type is 'submit' - form->setType(QXmppDataForm::Submit); + form->setType(type() == QXmppIq::Result ? QXmppDataForm::Result : QXmppDataForm::Submit); switch (d->queryType) { case Create: - writeForm(writer, *d->dataForm, QStringLiteral("configure")); + writeForm(writer, *form, QStringLiteral("configure")); break; case Publish: - writeForm(writer, *d->dataForm, QStringLiteral("publish-options")); + writeForm(writer, *form, QStringLiteral("publish-options")); break; case Subscribe: case Subscription: - writeForm(writer, *d->dataForm, QStringLiteral("options")); + writeForm(writer, *form, QStringLiteral("options")); break; default: break; diff --git a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp index efe3b865..9da709d8 100644 --- a/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp +++ b/tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp @@ -277,7 +277,9 @@ void tst_QXmppPubSubManager::testPublishItems() }(); const auto publishOptionsXml = [&]() -> QString { if (publishOptions) { - return "" + QString::fromUtf8(packetToXml(publishOptions->toDataForm())) + ""; + auto form = publishOptions->toDataForm(); + form.setType(QXmppDataForm::Submit); + return "" + QString::fromUtf8(packetToXml(form)) + ""; } return {}; }(); -- cgit v1.2.3