mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-15 16:36:52 +01:00
Bugfix of DISCONNECT and ClientSend error message
Close the Connection after sending DISCONNECT. Separate multicast error message. Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
@@ -41,7 +41,7 @@ BrokerSendTask::BrokerSendTask(Gateway* gateway)
|
|||||||
|
|
||||||
BrokerSendTask::~BrokerSendTask()
|
BrokerSendTask::~BrokerSendTask()
|
||||||
{
|
{
|
||||||
|
WRITELOG("BrokerSendTask is deleted normally.\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,6 +121,11 @@ void BrokerSendTask::run()
|
|||||||
{
|
{
|
||||||
client->connectSended();
|
client->connectSended();
|
||||||
}
|
}
|
||||||
|
else if ( packet->getType() == DISCONNECT )
|
||||||
|
{
|
||||||
|
client->getNetwork()->close();
|
||||||
|
client->disconnected();
|
||||||
|
}
|
||||||
log(client, packet);
|
log(client, packet);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ ClientSendTask::ClientSendTask(Gateway* gateway)
|
|||||||
|
|
||||||
ClientSendTask::~ClientSendTask()
|
ClientSendTask::~ClientSendTask()
|
||||||
{
|
{
|
||||||
|
WRITELOG("ClientSendTask is deleted normally.\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientSendTask::run()
|
void ClientSendTask::run()
|
||||||
@@ -49,35 +49,44 @@ void ClientSendTask::run()
|
|||||||
{
|
{
|
||||||
Event* ev = _gateway->getClientSendQue()->wait();
|
Event* ev = _gateway->getClientSendQue()->wait();
|
||||||
|
|
||||||
if (ev->getEventType() == EtStop)
|
if (ev->getEventType() == EtStop || _gateway->IsStopping() )
|
||||||
{
|
{
|
||||||
WRITELOG("\n%s ClientSendTask stopped.", currentDateTime());
|
WRITELOG("\n%s ClientSendTask stopped.", currentDateTime());
|
||||||
delete ev;
|
delete ev;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ev->getEventType() == EtClientSend)
|
|
||||||
{
|
|
||||||
client = ev->getClient();
|
|
||||||
packet = ev->getMQTTSNPacket();
|
|
||||||
rc = adpMgr->unicastToClient(client, packet, this);
|
|
||||||
}
|
|
||||||
else if (ev->getEventType() == EtBroadcast)
|
|
||||||
{
|
|
||||||
packet = ev->getMQTTSNPacket();
|
|
||||||
log(client, packet);
|
|
||||||
rc = packet->broadcast(_sensorNetwork);
|
|
||||||
}
|
|
||||||
else if (ev->getEventType() == EtSensornetSend)
|
|
||||||
{
|
|
||||||
packet = ev->getMQTTSNPacket();
|
|
||||||
log(client, packet);
|
|
||||||
rc = packet->unicast(_sensorNetwork, ev->getSensorNetAddress());
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( rc < 0 )
|
if (ev->getEventType() == EtBroadcast)
|
||||||
{
|
{
|
||||||
WRITELOG("%s ClientSendTask can't send a packet to the client %s. Error=%d%s\n",
|
packet = ev->getMQTTSNPacket();
|
||||||
ERRMSG_HEADER, (client ? (const char*)client->getClientId() : UNKNOWNCL ), errno, ERRMSG_FOOTER);
|
log(client, packet);
|
||||||
|
|
||||||
|
if ( packet->broadcast(_sensorNetwork) < 0 )
|
||||||
|
{
|
||||||
|
WRITELOG("%s ClientSendTask can't multicast a packet Error=%d%s\n",
|
||||||
|
ERRMSG_HEADER, errno, ERRMSG_FOOTER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ev->getEventType() == EtClientSend)
|
||||||
|
{
|
||||||
|
client = ev->getClient();
|
||||||
|
packet = ev->getMQTTSNPacket();
|
||||||
|
rc = adpMgr->unicastToClient(client, packet, this);
|
||||||
|
}
|
||||||
|
else if (ev->getEventType() == EtSensornetSend)
|
||||||
|
{
|
||||||
|
packet = ev->getMQTTSNPacket();
|
||||||
|
log(client, packet);
|
||||||
|
rc = packet->unicast(_sensorNetwork, ev->getSensorNetAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( rc < 0 )
|
||||||
|
{
|
||||||
|
WRITELOG("%s ClientSendTask can't send a packet to the client %s. Error=%d%s\n",
|
||||||
|
ERRMSG_HEADER, (client ? (const char*)client->getClientId() : UNKNOWNCL ), errno, ERRMSG_FOOTER);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
delete ev;
|
delete ev;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user