From c65d66e3d365793357b727c37415ca89d52a4ab5 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Thu, 13 May 2021 20:45:54 +0900 Subject: [PATCH] Bugfix of #230 Signed-off-by: tomoaki --- MQTTSNGateway/src/MQTTSNGWPublishHandler.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/MQTTSNGateway/src/MQTTSNGWPublishHandler.cpp b/MQTTSNGateway/src/MQTTSNGWPublishHandler.cpp index 6c3a8be..25e0628 100644 --- a/MQTTSNGateway/src/MQTTSNGWPublishHandler.cpp +++ b/MQTTSNGateway/src/MQTTSNGWPublishHandler.cpp @@ -240,16 +240,25 @@ void MQTTSNPublishHandler::handleRegAck(Client* client, MQTTSNPacket* packet) return; } + /* get PUBLISH message */ MQTTSNPacket* regAck = client->getWaitREGACKPacketList()->getPacket( msgId); if (regAck != nullptr) { client->getWaitREGACKPacketList()->erase(msgId); - Event* ev = new Event(); - ev->setClientSendEvent(client, regAck); - _gateway->getClientSendQue()->post(ev); + if (rc != MQTTSN_RC_ACCEPTED) + { + delete regAck; + } + else + { + Event* ev = new Event(); + ev->setClientSendEvent(client, regAck); + _gateway->getClientSendQue()->post(ev); + } } + if (client->isHoldPingReqest() && client->getWaitREGACKPacketList()->getCount() == 0) {