From b87c8412f8828146f76d1f19f940304c1e2e8fe2 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Tue, 18 Oct 2016 10:06:02 +0900 Subject: [PATCH] Update: Add Client Address to CONNECT reject error message. Update: comment out the generating CONNACK reply. Signed-off-by: tomoaki --- MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp | 3 ++- .../src/MQTTSNGWConnectionHandler.cpp | 20 +++++++++---------- MQTTSNGateway/src/linux/udp/SensorNetwork.cpp | 9 +++++++++ MQTTSNGateway/src/linux/udp/SensorNetwork.h | 2 +- .../src/linux/xbee/SensorNetwork.cpp | 11 ++++++++++ MQTTSNGateway/src/linux/xbee/SensorNetwork.h | 2 +- 6 files changed, 34 insertions(+), 13 deletions(-) diff --git a/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp index a98102e..65961c2 100644 --- a/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp @@ -113,7 +113,8 @@ void ClientRecvTask::run() log(client, packet, &data.clientID); if (!client) { - WRITELOG("%s Client was rejected. CONNECT message has been discarded.%s\n", ERRMSG_HEADER, ERRMSG_FOOTER); + char buf[128]; + WRITELOG("%s Client(%s) was rejected. CONNECT message has been discarded.%s\n", ERRMSG_HEADER, _sensorNetwork->getSenderAddress()->sprint(buf), ERRMSG_FOOTER); delete packet; continue; } diff --git a/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp b/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp index 946a98d..5ef17b1 100644 --- a/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp +++ b/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp @@ -169,17 +169,17 @@ 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); + //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 to the client */ + // Event* evt = new Event(); + // evt->setClientSendEvent(client, connack); + // _gateway->getClientSendQue()->post(evt); + //} return; } diff --git a/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp b/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp index 263d3ce..2f820fe 100644 --- a/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp +++ b/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp @@ -101,6 +101,15 @@ SensorNetAddress& SensorNetAddress::operator =(SensorNetAddress& addr) return *this; } + +char* SensorNetAddress::sprint(char* buf) +{ + struct in_addr inaddr = { _IpAddr }; + char* ip = inet_ntoa(inaddr); + sprintf( buf, "%s:", ip); + sprintf( buf + strlen(buf), "%d", ntohs(_portNo)); + return buf; +} /*=========================================== Class SensorNetwork ============================================*/ diff --git a/MQTTSNGateway/src/linux/udp/SensorNetwork.h b/MQTTSNGateway/src/linux/udp/SensorNetwork.h index 021c9bc..07967f8 100644 --- a/MQTTSNGateway/src/linux/udp/SensorNetwork.h +++ b/MQTTSNGateway/src/linux/udp/SensorNetwork.h @@ -45,7 +45,7 @@ public: uint32_t getIpAddress(void); bool isMatch(SensorNetAddress* addr); SensorNetAddress& operator =(SensorNetAddress& addr); - + char* sprint(char* buf); private: uint16_t _portNo; uint32_t _IpAddr; diff --git a/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp b/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp index 75e90a0..9ee5d20 100644 --- a/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp +++ b/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp @@ -78,6 +78,17 @@ SensorNetAddress& SensorNetAddress::operator =(SensorNetAddress& addr) return *this; } +char* SensorNetAddress::sprint(char* buf) +{ + char* pbuf = buf; + for ( int i = 0; i < 8; i++ ) + { + sprintf(pbuf, "%02X", _address64[i]); + pbuf += 2; + } + return buf; +} + /*=========================================== Class SensorNetwork ============================================*/ diff --git a/MQTTSNGateway/src/linux/xbee/SensorNetwork.h b/MQTTSNGateway/src/linux/xbee/SensorNetwork.h index 4de0932..0861d2b 100644 --- a/MQTTSNGateway/src/linux/xbee/SensorNetwork.h +++ b/MQTTSNGateway/src/linux/xbee/SensorNetwork.h @@ -74,7 +74,7 @@ public: void setBroadcastAddress(void); bool isMatch(SensorNetAddress* addr); SensorNetAddress& operator =(SensorNetAddress& addr); - + char* sprint(char*); private: uint8_t _address16[2]; uint8_t _address64[8];