mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-13 15:36:51 +01:00
BugFix: MQTTSNDeserialize_XXXX() functions don't return error code when
error occurs. Do not store the length of packet into rc. If the packet is incorrect, skip the processing that follows. Bugfix: Print out the value of TopicId in SUBACK and UNSUBACK. Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
@@ -185,7 +185,7 @@ struct LUdpConfig{
|
||||
/*=================================
|
||||
* Starting prompt
|
||||
==================================*/
|
||||
#define TESTER_VERSION " * Version: 0.1.0"
|
||||
#define TESTER_VERSION " * Version: 1.1.0"
|
||||
|
||||
#define PAHO_COPYRIGHT0 " * MQTT-SN Gateway Tester"
|
||||
#define PAHO_COPYRIGHT1 " * Part of Project Paho in Eclipse"
|
||||
|
||||
@@ -222,7 +222,7 @@ void LSubscribeManager::responce(const uint8_t* msg)
|
||||
{
|
||||
tt->add((char*) elm->topicName, topicId, elm->topicType, elm->callback);
|
||||
getElement(msgId)->done = SUB_DONE;
|
||||
DISPLAY("\033[0m\033[0;32m Topic \"%s\" Id : %d was Subscribed. \033[0m\033[0;37m\n\n", getElement(msgId)->topicName, getElement(msgId)->topicId);
|
||||
DISPLAY("\033[0m\033[0;32m Topic \"%s\" Id : %d was Subscribed. \033[0m\033[0;37m\n\n", getElement(msgId)->topicName, topicId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -239,7 +239,7 @@ void LSubscribeManager::responce(const uint8_t* msg)
|
||||
{
|
||||
LTopicTable* tt = theClient->getGwProxy()->getTopicTable();
|
||||
tt->setCallback(elm->topicName, 0);
|
||||
DISPLAY("\033[0m\033[0;32m Topic \"%s\" Id : %d was Unsubscribed. \033[0m\033[0;37m\n\n", getElement(msgId)->topicName, getElement(msgId)->topicId);
|
||||
DISPLAY("\033[0m\033[0;32m Topic \"%s\" was Unsubscribed. \033[0m\033[0;37m\n\n", getElement(msgId)->topicName);
|
||||
remove(getElement(msgId));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -69,7 +69,10 @@ void MQTTSNConnectionHandler::handleSearchgw(MQTTSNPacket* packet)
|
||||
void MQTTSNConnectionHandler::handleConnect(Client* client, MQTTSNPacket* packet)
|
||||
{
|
||||
MQTTSNPacket_connectData data;
|
||||
packet->getCONNECT(&data);
|
||||
if ( packet->getCONNECT(&data) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* clear ConnectData of Client */
|
||||
Connect* connectData = client->getConnectData();
|
||||
@@ -142,7 +145,10 @@ void MQTTSNConnectionHandler::handleWilltopic(Client* client, MQTTSNPacket* pack
|
||||
uint8_t willRetain;
|
||||
MQTTSNString willTopic;
|
||||
|
||||
packet->getWILLTOPIC(&willQos, &willRetain, &willTopic);
|
||||
if ( packet->getWILLTOPIC(&willQos, &willRetain, &willTopic) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
client->setWillTopic(willTopic);
|
||||
Connect* connectData = client->getConnectData();
|
||||
|
||||
@@ -168,17 +174,6 @@ void MQTTSNConnectionHandler::handleWillmsg(Client* client, MQTTSNPacket* packet
|
||||
if ( !client->isWaitWillMsg() )
|
||||
{
|
||||
DEBUGLOG(" MQTTSNConnectionHandler::handleWillmsg WaitWillMsgFlg is off.\n");
|
||||
//if ( !client->isSecureNetwork() )
|
||||
//{
|
||||
// /* create CONNACK message */
|
||||
// MQTTSNPacket* connack = new MQTTSNPacket();
|
||||
// connack->setCONNACK(MQTTSN_RC_REJECTED_CONGESTED);
|
||||
|
||||
// /* return to the client */
|
||||
// Event* evt = new Event();
|
||||
// evt->setClientSendEvent(client, connack);
|
||||
// _gateway->getClientSendQue()->post(evt);
|
||||
//}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -188,7 +183,10 @@ void MQTTSNConnectionHandler::handleWillmsg(Client* client, MQTTSNPacket* packet
|
||||
if( client->isConnectSendable() )
|
||||
{
|
||||
/* save WillMsg in the client */
|
||||
packet->getWILLMSG(&willmsg);
|
||||
if ( packet->getWILLMSG(&willmsg) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
client->setWillMsg(willmsg);
|
||||
|
||||
/* create CONNECT message */
|
||||
@@ -216,7 +214,10 @@ void MQTTSNConnectionHandler::handleDisconnect(Client* client, MQTTSNPacket* pac
|
||||
_gateway->getClientSendQue()->post(ev);
|
||||
|
||||
uint16_t duration = 0;
|
||||
packet->getDISCONNECT(&duration);
|
||||
if ( packet->getDISCONNECT(&duration) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if ( duration == 0 )
|
||||
{
|
||||
MQTTGWPacket* mqMsg = new MQTTGWPacket();
|
||||
|
||||
@@ -56,7 +56,10 @@ void MQTTSNPublishHandler::handlePublish(Client* client, MQTTSNPacket* packet)
|
||||
return;
|
||||
}
|
||||
|
||||
packet->getPUBLISH(&dup, &qos, &retained, &msgId, &topicid, &payload, &payloadlen);
|
||||
if ( packet->getPUBLISH(&dup, &qos, &retained, &msgId, &topicid, &payload, &payloadlen) ==0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
pub.msgId = msgId;
|
||||
pub.header.bits.dup = dup;
|
||||
pub.header.bits.qos = qos;
|
||||
@@ -180,7 +183,12 @@ void MQTTSNPublishHandler::handlePuback(Client* client, MQTTSNPacket* packet)
|
||||
return;
|
||||
}
|
||||
MQTTGWPacket* pubAck = new MQTTGWPacket();
|
||||
packet->getPUBACK(&topicId, &msgId, &rc);
|
||||
|
||||
if ( packet->getPUBACK(&topicId, &msgId, &rc) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( rc == MQTTSN_RC_ACCEPTED)
|
||||
{
|
||||
pubAck->setAck(PUBACK, msgId);
|
||||
@@ -202,7 +210,10 @@ void MQTTSNPublishHandler::handleAck(Client* client, MQTTSNPacket* packet, uint8
|
||||
{
|
||||
return;
|
||||
}
|
||||
packet->getACK(&msgId);
|
||||
if ( packet->getACK(&msgId) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
MQTTGWPacket* ackPacket = new MQTTGWPacket();
|
||||
ackPacket->setAck(packetType, msgId);
|
||||
Event* ev1 = new Event();
|
||||
@@ -223,7 +234,10 @@ void MQTTSNPublishHandler::handleRegister(Client* client, MQTTSNPacket* packet)
|
||||
return;
|
||||
}
|
||||
MQTTSNPacket* regAck = new MQTTSNPacket();
|
||||
packet->getREGISTER(&id, &msgId, &topicName);
|
||||
if ( packet->getREGISTER(&id, &msgId, &topicName) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
topicid.type = MQTTSN_TOPIC_TYPE_NORMAL;
|
||||
topicid.data.long_.len = topicName.lenstring.len;
|
||||
|
||||
@@ -41,7 +41,10 @@ void MQTTSNSubscribeHandler::handleSubscribe(Client* client, MQTTSNPacket* packe
|
||||
MQTTSN_topicid topicFilter;
|
||||
Topic* topic = 0;
|
||||
|
||||
packet->getSUBSCRIBE(&dup, &qos, &msgId, &topicFilter);
|
||||
if ( packet->getSUBSCRIBE(&dup, &qos, &msgId, &topicFilter) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (topicFilter.type <= MQTTSN_TOPIC_TYPE_SHORT)
|
||||
{
|
||||
@@ -139,7 +142,10 @@ void MQTTSNSubscribeHandler::handleUnsubscribe(Client* client, MQTTSNPacket* pac
|
||||
uint16_t msgId;
|
||||
MQTTSN_topicid topicFilter;
|
||||
|
||||
packet->getUNSUBSCRIBE(&msgId, &topicFilter);
|
||||
if ( packet->getUNSUBSCRIBE(&msgId, &topicFilter) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( topicFilter.type == MQTTSN_TOPIC_TYPE_PREDEFINED )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user