diff --git a/libnymea-mqtt/mqttpacket.cpp b/libnymea-mqtt/mqttpacket.cpp index 674a486..1710b60 100644 --- a/libnymea-mqtt/mqttpacket.cpp +++ b/libnymea-mqtt/mqttpacket.cpp @@ -111,7 +111,11 @@ void MqttPacket::setRetain(bool retain) void MqttPacket::setCleanSession(bool cleanSession) { - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagCleanSession, cleanSession); + if (cleanSession) { + d_ptr->connectFlags |= Mqtt::ConnectFlagCleanSession; + } else { + d_ptr->connectFlags &= ~Mqtt::ConnectFlagCleanSession; + } } bool MqttPacket::cleanSession() const @@ -157,7 +161,11 @@ QByteArray MqttPacket::willTopic() const void MqttPacket::setWillTopic(const QByteArray &willTopic) { d_ptr->willTopic = willTopic; - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagWill, !willTopic.isEmpty()); + if (!willTopic.isEmpty()) { + d_ptr->connectFlags |= Mqtt::ConnectFlagWill; + } else { + d_ptr->connectFlags &= ~Mqtt::ConnectFlagWill; + } } QByteArray MqttPacket::willMessage() const @@ -183,8 +191,13 @@ Mqtt::QoS MqttPacket::willQoS() const void MqttPacket::setWillQoS(Mqtt::QoS willQoS) { - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagWillQoS1, willQoS == Mqtt::QoS1); - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagWillQoS2, willQoS == Mqtt::QoS2); + d_ptr->connectFlags &= ~Mqtt::ConnectFlagWillQoS1; + d_ptr->connectFlags &= ~Mqtt::ConnectFlagWillQoS2; + if (willQoS == Mqtt::QoS1) { + d_ptr->connectFlags |= Mqtt::ConnectFlagWillQoS1; + } else if (willQoS == Mqtt::QoS2) { + d_ptr->connectFlags |= Mqtt::ConnectFlagWillQoS2; + } } bool MqttPacket::willRetain() const @@ -194,7 +207,11 @@ bool MqttPacket::willRetain() const void MqttPacket::setWillRetain(bool willRetain) { - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagWillRetain, willRetain); + if (willRetain) { + d_ptr->connectFlags |= Mqtt::ConnectFlagWillRetain; + } else { + d_ptr->connectFlags &= ~Mqtt::ConnectFlagWillRetain; + } } QByteArray MqttPacket::username() const @@ -205,7 +222,11 @@ QByteArray MqttPacket::username() const void MqttPacket::setUsername(const QByteArray &username) { d_ptr->username = username; - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagUsername, !username.isEmpty()); + if (!username.isEmpty()) { + d_ptr->connectFlags |= Mqtt::ConnectFlagUsername; + } else { + d_ptr->connectFlags &= ~Mqtt::ConnectFlagUsername; + } } QByteArray MqttPacket::password() const @@ -216,7 +237,11 @@ QByteArray MqttPacket::password() const void MqttPacket::setPassword(const QByteArray &password) { d_ptr->password = password; - d_ptr->connectFlags.setFlag(Mqtt::ConnectFlagPassword, !password.isEmpty()); + if (!password.isEmpty()) { + d_ptr->connectFlags |= Mqtt::ConnectFlagPassword; + } else { + d_ptr->connectFlags &= ~Mqtt::ConnectFlagPassword; + } } quint16 MqttPacket::keepAlive() const diff --git a/libnymea-mqtt/mqttserver.cpp b/libnymea-mqtt/mqttserver.cpp index 4d1a52d..be9820c 100644 --- a/libnymea-mqtt/mqttserver.cpp +++ b/libnymea-mqtt/mqttserver.cpp @@ -501,10 +501,10 @@ bool MqttServerPrivate::validateTopicFilter(const QString &topicFilter) QStringList parts = topicFilter.split('/'); for (int i = 0; i < parts.count(); i++) { const QString &part = parts.at(i); - if (part.contains('#') && (part != '#' || i != parts.count() - 1)) { + if (part.contains(QStringLiteral("#")) && (part != QStringLiteral("#") || i != parts.count() - 1)) { return false; } - if (part.contains('+') && part != '+') { + if (part.contains(QStringLiteral("+")) && part != QStringLiteral("+")) { return false; } } @@ -526,10 +526,10 @@ bool MqttServerPrivate::matchTopic(const QString &topicFilter, const QString &to } for (int i = 0; i < filterParts.count(); i++) { - if (filterParts.at(i) == '+') { + if (filterParts.at(i) == QStringLiteral("+")) { continue; } - if (filterParts.at(i) == '#') { + if (filterParts.at(i) == QStringLiteral("#")) { continue; } if (topicParts.at(i) == filterParts.at(i)) {