diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp index 83f1c05..787d5e5 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp @@ -109,7 +109,10 @@ void BrokerRecvTask::run(void) rc = packet->recv(client->getNetwork()); if ( rc > 0 ) { - log(client, packet); + if ( log(client, packet) == -1 ) + { + continue; + } /* post a BrokerRecvEvent */ ev = new Event(); @@ -161,10 +164,11 @@ void BrokerRecvTask::run(void) /** * write message content into stdout or Ringbuffer */ -void BrokerRecvTask::log(Client* client, MQTTGWPacket* packet) +int BrokerRecvTask::log(Client* client, MQTTGWPacket* packet) { char pbuf[SIZEOF_LOG_PACKET * 3]; char msgId[6]; + int rc = 0; switch (packet->getType()) { @@ -189,7 +193,8 @@ void BrokerRecvTask::log(Client* client, MQTTGWPacket* packet) WRITELOG(FORMAT_GR_NL, currentDateTime(), packet->getName(), LEFTARROW, client->getClientId(), packet->print(pbuf)); break; default: - WRITELOG(FORMAT_GR_NL, currentDateTime(), "UNKOWN_TYPE", LEFTARROW, client->getClientId(), packet->print(pbuf)); + rc = -1; break; } + return rc; } diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.h b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.h index e506e95..a5dd9a8 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.h +++ b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.h @@ -37,7 +37,7 @@ public: void run(void); private: - void log(Client*, MQTTGWPacket*); + int log(Client*, MQTTGWPacket*); Gateway* _gateway; LightIndicator* _light; diff --git a/MQTTSNGateway/src/linux/Network.cpp b/MQTTSNGateway/src/linux/Network.cpp index cde1d02..0ba5661 100644 --- a/MQTTSNGateway/src/linux/Network.cpp +++ b/MQTTSNGateway/src/linux/Network.cpp @@ -57,6 +57,7 @@ bool TCPStack::isValid() void TCPStack::close() { + _mutex.lock(); if (_sockfd > 0) { ::close(_sockfd); @@ -67,6 +68,7 @@ void TCPStack::close() _addrinfo = 0; } } + _mutex.unlock(); } diff --git a/MQTTSNGateway/src/linux/Network.h b/MQTTSNGateway/src/linux/Network.h index 5c6b79f..d8ed45b 100644 --- a/MQTTSNGateway/src/linux/Network.h +++ b/MQTTSNGateway/src/linux/Network.h @@ -59,6 +59,7 @@ public: private: int _sockfd; addrinfo* _addrinfo; + Mutex _mutex; }; /*========================================