diff --git a/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp b/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp index 33b3ef8..76367ce 100644 --- a/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp +++ b/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp @@ -1,5 +1,5 @@ /************************************************************************************** - * Copyright (c) 2016, Tomoaki Yamaguchi + * Copyright (c) 2016, 2020 Tomoaki Yamaguchi and others * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -104,10 +104,14 @@ void MQTTSNConnectionHandler::handleConnect(Client* client, MQTTSNPacket* packet connectData->keepAliveTimer = data.duration; connectData->flags.bits.will = data.willFlag; - if ((const char*) _gateway->getGWParams()->loginId != nullptr && (const char*) _gateway->getGWParams()->password != 0) + if ((const char*) _gateway->getGWParams()->loginId != nullptr) + { + connectData->flags.bits.username = 1; + } + + if ((const char*) _gateway->getGWParams()->password != 0) { connectData->flags.bits.password = 1; - connectData->flags.bits.username = 1; } client->setSessionStatus(false); diff --git a/MQTTSNGateway/src/linux/Network.cpp b/MQTTSNGateway/src/linux/Network.cpp index 4f6f5a9..5c5e88d 100644 --- a/MQTTSNGateway/src/linux/Network.cpp +++ b/MQTTSNGateway/src/linux/Network.cpp @@ -541,6 +541,15 @@ loop: case SSL_ERROR_WANT_WRITE: readBlockedOnWrite = true; break; + case SSL_ERROR_SYSCALL: + SSL_free(_ssl); + _ssl = 0; + _numOfInstance--; + //TCPStack::close(); + _busy = false; + _mutex.unlock(); + return -1; + break; default: ERR_error_string_n(ERR_get_error(), errmsg, sizeof(errmsg)); WRITELOG("Network::recv() %s\n", errmsg);