aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-09-29 15:38:21 +0200
committerLinus Jahn <lnj@kaidan.im>2021-09-29 16:37:41 +0200
commit8e77649e2c29fd65d826852b99ff150cbe3bc337 (patch)
treefdef48020648cf77674f4ca984641374c80a3cff
parentc37d95ea5c2e89642cc17cda3de29d1001cadffd (diff)
downloadqxmpp-8e77649e2c29fd65d826852b99ff150cbe3bc337.tar.gz
PubSubIq: Fix data form type for create/publish
-rw-r--r--src/base/QXmppPubSubIq.cpp8
-rw-r--r--tests/qxmpppubsubmanager/tst_qxmpppubsubmanager.cpp4
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 "<publish-options>" + QString::fromUtf8(packetToXml(publishOptions->toDataForm())) + "</publish-options>";
+ auto form = publishOptions->toDataForm();
+ form.setType(QXmppDataForm::Submit);
+ return "<publish-options>" + QString::fromUtf8(packetToXml(form)) + "</publish-options>";
}
return {};
}();