Hi, I have recently started developing using OpenSSL and i am confused/unclear about below topic. Request you to help me. I am running a DTLS Server which handles more than 1000 connections.The problem i am facing is every time I close connections and also connect again I see there is some RAM memory utilization increases. I wonder there is a leak in memory from my below approach of calling functions"Initialize_Sever_Context" , "create_connexion" and "close_connexion". The exact code is too big to create actual scenario, so i just outlined the steps. Pls let me know if any extra information is required? I am using OpenSSL version 1.1.1k on Linux. //connect_info structure user defined{ void* sll; void* bio; ....}array_of_connections *connect_info = &array_of_connections;// globalSSL_CTX* server_ctx; Initialize_Sever_Context(){ // server_ctx is global server_ctx = SSL_CTX_new(DTLS_server_method()); X509_VERIFY_PARAM *local_vpm = X509_VERIFY_PARAM_new() //setting verify flags, cookie flags and cypher lists etc.. //.... SSL_CTX_set1_param(server_ctx, local_vpm); X509_VERIFY_PARAM_free(local_vpm);} create_connexion(connect_info){ // server_ctx is global ssl = SSL_new(server_ctx); bio = BIO_new_dgram(handler, BIO_NOCLOSE); //not sure it is ok to use BIO_CLOSE .. .. SSL_set_bio(ssl, bio, bio); connect_info->ssl = ssl; connect_info->bio = bio; }//pre connection closehandle_closed_connexions(){ for(conn = 1; conn<MAX_CONN;conn++) { close_connexion(connect_info[conn]); }}// frees the existing closed connections and make SSL ready to handle new connectionsclose_connexion(connect_info){ // store prev ssl objects SLL *local_ssl = connect_info -> ssl; // make setup ready for the next connexions // and start listening create_connexion(connect_info) // free the previous closed connections // frees the server_ctx also from inside SSL_free(local_ssl);} Inside SSL_free we have BIO_free_all(s->rbio), BIO_free_all(s->rbio) and BIO_CTX_free(s->ctx) and finally OPENSSL_free(s) As far as i understand when we do SSL_free, all the members(pointers) inside SLL object are freed.So i expect the application to crash.(because "server_ctx" is a global pointer which will be set to "s->ctx" through function SSL_new and also freed by SLL_free and after free i am not settingserver_ctx = NULL also not calling SSL_CTX_new(DTLS_server_method());) But my application is working fine. My doubt is , does OpenSSL cache the context detail inside SSL, some where? or I Should set server_context to NULL and allocate memory for every new connection which was closed before?
Regards,Chand