- fixed memory handling problems when using TLS

pull/162/head
Michael Zillgith 6 years ago
parent 9b7a2f086e
commit dabea5cc4c

@ -474,23 +474,23 @@ TLSSocket_write(TLSSocket self, uint8_t* buf, int size)
void
TLSSocket_close(TLSSocket self)
{
int ret;
//TODO add timeout?
if (self) {
int ret;
while ((ret = mbedtls_ssl_close_notify(&(self->ssl))) < 0)
{
if ((ret != MBEDTLS_ERR_SSL_WANT_READ) && (ret != MBEDTLS_ERR_SSL_WANT_WRITE))
while ((ret = mbedtls_ssl_close_notify(&(self->ssl))) < 0)
{
DEBUG_PRINT("TLS", "mbedtls_ssl_close_notify returned %d\n", ret);
break;
if ((ret != MBEDTLS_ERR_SSL_WANT_READ) && (ret != MBEDTLS_ERR_SSL_WANT_WRITE))
{
DEBUG_PRINT("TLS", "mbedtls_ssl_close_notify returned %d\n", ret);
break;
}
}
}
Thread_sleep(10);
Thread_sleep(10);
mbedtls_ssl_config_free(&(self->conf));
mbedtls_ssl_free(&(self->ssl));
mbedtls_ssl_config_free(&(self->conf));
mbedtls_ssl_free(&(self->ssl));
GLOBAL_FREEMEM(self);
GLOBAL_FREEMEM(self);
}
}

@ -92,15 +92,16 @@ struct sIsoConnection
static void
IsoConnection_releaseAllocatedMemory(IsoConnection self)
{
if (self->socket)
Socket_destroy(self->socket);
#if (CONFIG_MMS_SUPPORT_TLS == 1)
if (IsoServer_getTLSConfiguration(self->isoServer) != NULL) {
TLSSocket_close(self->tlsSocket);
self->tlsSocket = NULL;
}
#endif /* (CONFIG_MMS_SUPPORT_TLS == 1) */
if (self->socket)
Socket_destroy(self->socket);
GLOBAL_FREEMEM(self->session);
GLOBAL_FREEMEM(self->presentation);
AcseConnection_destroy(self->acseConnection);
@ -662,8 +663,10 @@ IsoConnection_close(IsoConnection self)
self->socket = NULL;
#if (CONFIG_MMS_SUPPORT_TLS == 1)
if (self->tlsSocket)
if (self->tlsSocket) {
TLSSocket_close(self->tlsSocket);
self->tlsSocket = NULL;
}
#endif
Socket_destroy(socket);

Loading…
Cancel
Save