Fix bug in unsubscription list

This commit is contained in:
hsaturn
2021-04-10 16:51:56 +02:00
parent afc9370e3e
commit ad602194cf

View File

@@ -469,25 +469,27 @@ if (mesg->type() != MqttMessage::Type::PingReq && mesg->type() != MqttMessage::T
if (!mqtt_connected) break; if (!mqtt_connected) break;
payload = header+2; payload = header+2;
debug("subscribe loop"); debug("un/subscribe loop");
while(payload < mesg->end()) while(payload < mesg->end())
{ {
mesg->getString(payload, len); // Topic mesg->getString(payload, len); // Topic
debug( " topic (" << std::string(payload, len) << ')'); debug( " topic (" << std::string(payload, len) << ')');
outstring("Subscribes", payload, len); outstring(" un/subscribes", payload, len);
// subscribe(Topic(payload, len)); // subscribe(Topic(payload, len));
Topic topic(payload, len); Topic topic(payload, len);
payload += len;
if ((mesg->type() & 0XF0) == MqttMessage::Type::Subscribe) if ((mesg->type() & 0XF0) == MqttMessage::Type::Subscribe)
{
uint8_t qos = *payload++;
if (qos != 0) debug("Unsupported QOS" << qos << endl);
subscriptions.insert(topic); subscriptions.insert(topic);
}
else else
{ {
auto it=subscriptions.find(topic); auto it=subscriptions.find(topic);
if (it != subscriptions.end()) if (it != subscriptions.end())
subscriptions.erase(it); subscriptions.erase(it);
} }
payload += len;
/* uint8_t qos =*/ *payload++;
debug(" qos=" << qos);
} }
debug("end loop"); debug("end loop");
bclose = false; bclose = false;