summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Goldschmidt <[email protected]>2018-12-03 07:14:02 +0100
committerSimon Goldschmidt <[email protected]>2019-02-18 13:12:42 +0100
commitff14bbb3c1f044abaac32945b905156be07d60ff (patch)
treec9d84d2a07f641238579a22c9254322319c29ab8
parent89be04ce7a4feca4db0e6b8a4c18cda18b913bd9 (diff)
altcp_tls_mbedtls: listen: free members of the ssl context
The ssl context is not used on listening pcbs. This includes freeing input/output buffers, so saves ~32KByte by default. (cherry picked from commit 282389a3325d71e8c6ce7dbe1ceb3fd6875d9051)
-rw-r--r--src/apps/altcp_tls/altcp_tls_mbedtls.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/apps/altcp_tls/altcp_tls_mbedtls.c b/src/apps/altcp_tls/altcp_tls_mbedtls.c
index 574fcb93..ba8cce49 100644
--- a/src/apps/altcp_tls/altcp_tls_mbedtls.c
+++ b/src/apps/altcp_tls/altcp_tls_mbedtls.c
@@ -985,6 +985,11 @@ altcp_mbedtls_listen(struct altcp_pcb *conn, u8_t backlog, err_t *err)
}
lpcb = altcp_listen_with_backlog_and_err(conn->inner_conn, backlog, err);
if (lpcb != NULL) {
+ altcp_mbedtls_state_t *state = (altcp_mbedtls_state_t *)conn->state;
+ /* Free members of the ssl context (not used on listening pcb). This
+ includes freeing input/output buffers, so saves ~32KByte by default */
+ mbedtls_ssl_free(&state->ssl_context);
+
conn->inner_conn = lpcb;
altcp_accept(lpcb, altcp_mbedtls_lower_accept);
return conn;