diff --git a/src/TinyMqtt.cpp b/src/TinyMqtt.cpp index 24d1c5c..05cf2dd 100644 --- a/src/TinyMqtt.cpp +++ b/src/TinyMqtt.cpp @@ -347,12 +347,18 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag break; case MqttMessage::Type::Connack: - // if (!mqtt_connected) break; // TODO what more on connack ? mqtt_connected = true; bclose = false; break; + case MqttMessage::Type::Suback: + case MqttMessage::Type::Puback: + if (!mqtt_connected) break; + // Ignore acks + bclose = false; + break; + case MqttMessage::Type::PingResp: // TODO: no PingResp is suspicious (server dead) bclose = false; @@ -409,11 +415,15 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag if (qos) payload+=2; // ignore packet identifier if any // TODO reset DUP // TODO reset RETAIN - debug("publishing to parent"); if (parent) + { + debug("publishing to parent"); parent->publish(this, published, message); + } else if (callback && subscriptions.find(published)!=subscriptions.end()) + { callback(this, published, nullptr, 0); // TODO send the real payload + } // TODO should send PUBACK bclose = false; } diff --git a/src/TinyMqtt.h b/src/TinyMqtt.h index 8109942..996a5da 100644 --- a/src/TinyMqtt.h +++ b/src/TinyMqtt.h @@ -45,6 +45,7 @@ class MqttMessage Publish = 0x30, PubAck = 0x40, Subscribe = 0x80, + Suback = 0x90, PingReq = 0xC0, PingResp = 0xD0, };