- fixed memory leak in reuse of client connection (related to socket extension buffer)

pull/396/head
Michael Zillgith 3 years ago
parent 25bcd14618
commit 10a4bc6e76

@ -193,15 +193,23 @@ IsoClientConnection_create(IsoConnectionParameters parameters, IsoIndicationCall
static bool
sendConnectionRequestMessage(IsoClientConnection self)
{
int socketExtensionBufferSize = CONFIG_MMS_MAXIMUM_PDU_SIZE + 1000;
uint8_t* socketExtensionBuffer = NULL;
if (self->cotpConnection) {
/* Destroy existing handle set when connection is reused */
if (self->cotpConnection->handleSet)
Handleset_destroy(self->cotpConnection->handleSet);
self->cotpConnection->handleSet = NULL;
socketExtensionBuffer = self->cotpConnection->socketExtensionBuffer;
}
int socketExtensionBufferSize = CONFIG_MMS_MAXIMUM_PDU_SIZE + 1000;
uint8_t* socketExtensionBuffer = (uint8_t*)GLOBAL_MALLOC(socketExtensionBufferSize);
if (socketExtensionBuffer == NULL) {
socketExtensionBuffer = (uint8_t*)GLOBAL_MALLOC(socketExtensionBufferSize);
}
if (socketExtensionBuffer) {
/* COTP (ISO transport) handshake */
CotpConnection_init(self->cotpConnection, self->socket, self->receiveBuffer, self->cotpReadBuffer, self->cotpWriteBuffer,
@ -236,6 +244,13 @@ sendConnectionRequestMessage(IsoClientConnection self)
else
return true;
}
else {
if (DEBUG_ISO_CLIENT)
printf("ISO_CLIENT: Failed to allocate socket extension buffer\n");
return false;
}
}
static void
sendAcseInitiateRequest(IsoClientConnection self)
@ -755,7 +770,6 @@ IsoClientConnection_close(IsoClientConnection self)
}
}
void
IsoClientConnection_destroy(IsoClientConnection self)
{

Loading…
Cancel
Save