Merge pull request #71 from eclipse/develop

Bugfix of Gateway can't receive MQTT packets with no payload.
This commit is contained in:
Tomoaki Yamaguchi
2017-07-30 09:10:29 +09:00
committed by GitHub
3 changed files with 22 additions and 18 deletions

View File

@@ -204,23 +204,26 @@ int MQTTGWPacket::recv(Network* network)
multiplier *= 128; multiplier *= 128;
} while ((c & 128) != 0); } while ((c & 128) != 0);
/* allocate buffer */ if ( _remainingLength > 0 )
_data = (unsigned char*)calloc(_remainingLength, 1);
if ( !_data )
{ {
return -3; /* allocate buffer */
} _data = (unsigned char*)calloc(_remainingLength, 1);
if ( !_data )
{
return -3;
}
/* read Payload */ /* read Payload */
int remlen = network->recv(_data, _remainingLength); int remlen = network->recv(_data, _remainingLength);
if (remlen == -1 ) if (remlen == -1 )
{ {
return -1; return -1;
} }
else if ( remlen != _remainingLength ) else if ( remlen != _remainingLength )
{ {
return -2; return -2;
}
} }
return 1 + len + _remainingLength; return 1 + len + _remainingLength;
} }

View File

@@ -100,8 +100,8 @@ void BrokerSendTask::run()
if ( !rc ) if ( !rc )
{ {
/* disconnect the broker and the client */ /* disconnect the broker and the client */
WRITELOG("%s BrokerSendTask can't connect to the broker. %s%s\n", WRITELOG("%s BrokerSendTask: %s can't connect to the broker. errno=%d %s %s\n",
ERRMSG_HEADER, client->getClientId(), ERRMSG_FOOTER); ERRMSG_HEADER, client->getClientId(), errno, strerror(errno), ERRMSG_FOOTER);
delete ev; delete ev;
client->getNetwork()->close(); client->getNetwork()->close();
continue; continue;
@@ -120,8 +120,8 @@ void BrokerSendTask::run()
} }
else else
{ {
WRITELOG("%s BrokerSendTask can't send a packet to the broker errno=%d %s%s\n", WRITELOG("%s BrokerSendTask: %s can't send a packet to the broker. errno=%d %s %s\n",
ERRMSG_HEADER, rc == -1 ? errno : 0, client->getClientId(), ERRMSG_FOOTER); ERRMSG_HEADER, client->getClientId(), rc == -1 ? errno : 0, strerror(errno), ERRMSG_FOOTER);
client->getNetwork()->close(); client->getNetwork()->close();
/* Disconnect the client */ /* Disconnect the client */

View File

@@ -306,6 +306,7 @@ bool Network::connect(const char* host, const char* port, const char* caPath, co
throw false; throw false;
} }
if (!SSL_CTX_load_verify_locations(_ctx, caFile, caPath)) if (!SSL_CTX_load_verify_locations(_ctx, caFile, caPath))
{ {
ERR_error_string_n(ERR_get_error(), errmsg, sizeof(errmsg)); ERR_error_string_n(ERR_get_error(), errmsg, sizeof(errmsg));