Hi Thomas / All,

Thanks for the info - I was able to add the function as suggested however I see that the structure in concern has a lot of other member variable like as mentioned below and I actually cannot find code reference in mbedtls_ssl_free to free all of them - please confirm if calling mbedtls_ssl_free is enough such that all allocated memory for all variables in mbedtls_ssl_context is released:
..........................................................

mbedtls_ssl_config
mbedtls_ssl_send_t
mbedtls_ssl_recv_t
mbedtls_ssl_recv_timeout_t
p_bio
mbedtls_ssl_session *session_in;            /*!<  current session data (in)   */
mbedtls_ssl_session *session_out;           /*!<  current session data (out)  */
mbedtls_ssl_session *session;               /*!<  negotiated session data     */
mbedtls_ssl_session *session_negotiate;     /*!<  session data in negotiation */
mbedtls_ssl_handshake_params *handshake;    /*!<  params required only during
                                             the handshake process        */
mbedtls_ssl_transform *transform_in;        /*!<  current transform params (in)   */
mbedtls_ssl_transform *transform_out;       /*!<  current transform params (in)   */
mbedtls_ssl_transform *transform;           /*!<  negotiated transform params     */
mbedtls_ssl_transform *transform_negotiate; /*!<  transform params in negotiation */
unsigned char *in_buf;      /*!< input buffer                     */
unsigned char *in_ctr;      /*!< 64-bit incoming message counter
                                   TLS: maintained by us
                                    DTLS: read from peer             */
unsigned char *in_hdr;      /*!< start of record header           */
unsigned char *in_len;      /*!< two-bytes message length field   */
unsigned char *in_iv;       /*!< ivlen-byte IV                    */
unsigned char *in_msg;      /*!< message contents (in_iv+ivlen)   */
unsigned char *in_offt;     /*!< read offset in application data  */
..........................................................................................

Regards,
Prakash

On Tue, Feb 27, 2024 at 8:43 PM Thomas Daubney via mbed-tls <mbed-tls@lists.trustedfirmware.org> wrote:
Hi Prakash,

Thanks for getting in touch.

I think what you are after is the function:
void mbedtls_ssl_free(mbedtls_ssl_context *ssl)

You can find it's implementation in ssl_tls.c.

I hope that helps you out.

Thanks,
Tom

On Tue, 2024-02-27 at 20:19 +0530, Satya Prakash Prasad via mbed-tls
wrote:
> Hi,
>
> We are writing a client code which can accept or decline connection
> to the server - so for each connection I understand there is
> a mbedtls_ssl_context data established. Once the same is closed or
> not required we need to do deinitialize or free memory allocated to
> its member variables like - we need to free all memory allocated
> since we need it back else our application will run out of memory
> like:
>
>         os_free(mbed_ctx->handshake);
>         os_free(mbed_ctx->transform_negotiate);
>         os_free(mbed_ctx->session_negotiate);
>         os_free(mbed_ctx->in_buf);
>         os_free(mbed_ctx->out_buf);
>
> But there are many member variables which also need to free memory if
> allocated and assigned to it.
>
> Is there a function / method that can free all memory
> for mbedtls_ssl_context instance variable?
>
> Thanks in advance.
>
> Regards,
> Prakash
--
mbed-tls mailing list -- mbed-tls@lists.trustedfirmware.org
To unsubscribe send an email to mbed-tls-leave@lists.trustedfirmware.org