Skip to content

Commit f67b048

Browse files
author
Tarja Sundqvist
committed
Merge tag 'v6.5.5-lts' into tqtc/lts-6.5-opensource
Qt 6.5.5-lts release Conflicts solved: dependencies.yaml Change-Id: I0e59e4757737324eb92ed4ea6d9a4be38ac1ba59
2 parents cbb5f88 + 444e3eb commit f67b048

File tree

5 files changed

+44
-5
lines changed

5 files changed

+44
-5
lines changed

.cmake.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
set(QT_REPO_MODULE_VERSION "6.5.4")
1+
set(QT_REPO_MODULE_VERSION "6.5.5")
22
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
33
set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1")

dependencies.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
dependencies:
22
../tqtc-qtbase:
3-
ref: 8ff0b254e4c3db81254782262d827f7831d15f6b
3+
ref: fdf57f5df57e7d12cf871699d857a71acf272e0c
44
required: true
55
../tqtc-qtdeclarative:
6-
ref: 9edb471d3a35b3dc40def86c395789086edaa983
6+
ref: 7ac842cba18be081ac835bf40ac475ec4c47d30b
77
required: true

src/mqtt/qmqtttopicfilter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ bool QMqttTopicFilter::isValid() const
173173
|| (singleLevelPosition < size - 1 && d->filter.at(singleLevelPosition + 1) != QLatin1Char('/'))) {
174174
return false;
175175
}
176-
singleLevelPosition = d->filter.indexOf(QLatin1Char('#'), singleLevelPosition + 1);
176+
singleLevelPosition = d->filter.indexOf(QLatin1Char('+'), singleLevelPosition + 1);
177177
}
178178

179179
// Shared Subscription syntax
@@ -223,7 +223,7 @@ bool QMqttTopicFilter::match(const QMqttTopicName &name, MatchOptions matchOptio
223223
return false;
224224

225225
for (int i = 0; i < filterLevels.size(); ++i) {
226-
if (filterLevels.at(i) != topicLevels.at(i))
226+
if (filterLevels.at(i) != topicLevels.at(i) && filterLevels.at(i) != QLatin1Char('+'))
227227
return false;
228228
}
229229
return true;

tests/auto/qmqttsubscription/tst_qmqttsubscription.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ private Q_SLOTS:
3030
void noLocal_data();
3131
void noLocal();
3232
void qtbug_106203();
33+
void qtbug_104478();
3334
private:
3435
void createAndSubscribe(QMqttClient *c, QMqttSubscription **sub, const QString &topic);
3536
QProcess m_brokerProcess;
@@ -450,6 +451,37 @@ void Tst_QMqttSubscription::qtbug_106203()
450451
QTRY_VERIFY2(client.state() == QMqttClient::Disconnected, "Could not disconnect from broker.");
451452
}
452453

454+
void Tst_QMqttSubscription::qtbug_104478()
455+
{
456+
QMqttClient client;
457+
client.setHostname(m_testBroker);
458+
client.setPort(m_port);
459+
460+
client.connectToHost();
461+
QTRY_VERIFY2(client.state() == QMqttClient::Connected, "Could not connect to broker.");
462+
463+
auto singleWildcardSub = client.subscribe(QLatin1String("test/+/+/test2"));
464+
QTRY_VERIFY2(singleWildcardSub->state() == QMqttSubscription::Subscribed, "Could not subscribe to topic.");
465+
QSignalSpy singleSpy(singleWildcardSub, SIGNAL(messageReceived(QMqttMessage)));
466+
467+
auto mixedWildcardSub = client.subscribe(QLatin1String("test/+/#"));
468+
QTRY_VERIFY2(mixedWildcardSub->state() == QMqttSubscription::Subscribed, "Could not subscribe to topic.");
469+
QSignalSpy mixedSpy(mixedWildcardSub, SIGNAL(messageReceived(QMqttMessage)));
470+
471+
472+
const QString topic(QLatin1String("test/foo/bar/test2"));
473+
474+
QSignalSpy pubSpy(&client, SIGNAL(messageSent(qint32)));
475+
client.publish(topic, "Wildcard checks", 1);
476+
QTRY_VERIFY2(pubSpy.size() == 1, "Could not publish message.");
477+
478+
QTRY_VERIFY2(singleSpy.count() == 1, "Did not receive message");
479+
QTRY_VERIFY2(mixedSpy.count() == 1, "Did not receive message");
480+
481+
client.disconnectFromHost();
482+
QTRY_VERIFY2(client.state() == QMqttClient::Disconnected, "Could not disconnect from broker.");
483+
}
484+
453485
QTEST_MAIN(Tst_QMqttSubscription)
454486

455487
#include "tst_qmqttsubscription.moc"

tests/auto/qmqtttopicfilter/tst_qmqtttopicfilter.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ void Tst_QMqttTopicFilter::checkValidity()
4747
QVERIFY(!QMqttTopicFilter("a+").isValid());
4848
QVERIFY(!QMqttTopicFilter("+a").isValid());
4949
QVERIFY(!QMqttTopicFilter("++").isValid());
50+
QVERIFY(!QMqttTopicFilter("a/+/b/++/c").isValid());
5051

5152
QVERIFY(!QMqttTopicFilter(QString(3, QChar(QChar::Null))).isValid());
5253

@@ -83,6 +84,12 @@ void Tst_QMqttTopicFilter::matches()
8384
QVERIFY(QMqttTopicFilter("/+").match(QMqttTopicName("/finance")));
8485
QVERIFY(!QMqttTopicFilter("+").match(QMqttTopicName("/finance")));
8586

87+
// QTBUG-104478
88+
filter = QMqttTopicFilter("sport/+/player1/#");
89+
QVERIFY(filter.match(QMqttTopicName("sport/tennis/player1/ranking")));
90+
filter = QMqttTopicFilter("sport/+/+");
91+
QVERIFY(filter.match(QMqttTopicName("sport/tennis/player2")));
92+
8693
// Non normative comment's examples [4.7.2]
8794
QVERIFY(QMqttTopicFilter("#").match(QMqttTopicName("$SYS/foo")));
8895
QVERIFY(!QMqttTopicFilter("#").match(QMqttTopicName("$SYS/foo"), QMqttTopicFilter::WildcardsDontMatchDollarTopicMatchOption));

0 commit comments

Comments
 (0)