@@ -116,10 +116,34 @@ template <typename T> static void dlsym_default(T &ptr, const char *name)
116116 dlsym_handle (ptr, name, RTLD_DEFAULT);
117117}
118118
119- # define XLIO_TLS_API_FIND ( __name ) dlsym_default(s_tls_api.__name, #__name) ;
119+ static void *openssl_handle = nullptr ;
120120
121- void xlio_tls_api_setup ()
121+ #define XLIO_TLS_API_FIND (__name ) dlsym_handle(s_tls_api.__name, #__name, openssl_handle);
122+
123+ inline bool check_openssl_loaded ()
124+ {
125+ openssl_handle = dlopen (" libssl.so.3" , RTLD_NOW | RTLD_GLOBAL);
126+ if (!openssl_handle) {
127+ vlog_printf (VLOG_DEBUG, " Failed to dlopen libssl.so.3: %s" , dlerror ());
128+ return false ;
129+ } else {
130+ vlog_printf (VLOG_DEBUG, " Successfully loaded libssl.so.3" );
131+ return true ;
132+ }
133+ }
134+
135+ inline void xlio_tls_api_setup ()
122136{
137+ if (openssl_handle) {
138+ // OpenSSL symbols is already loaded
139+ return ;
140+ }
141+
142+ if (!check_openssl_loaded ()) {
143+ vlog_printf (VLOG_DEBUG, " OpenSSL library not found or failed to load" );
144+ return ;
145+ }
146+
123147 XLIO_TLS_API_FIND (EVP_CIPHER_CTX_new);
124148 XLIO_TLS_API_FIND (EVP_CIPHER_CTX_free);
125149 XLIO_TLS_API_FIND (EVP_CIPHER_CTX_reset);
@@ -132,6 +156,7 @@ void xlio_tls_api_setup()
132156 XLIO_TLS_API_FIND (EVP_EncryptInit_ex);
133157 XLIO_TLS_API_FIND (EVP_EncryptUpdate);
134158 XLIO_TLS_API_FIND (EVP_EncryptFinal_ex);
159+
135160 if (s_tls_api.EVP_CIPHER_CTX_new && s_tls_api.EVP_CIPHER_CTX_free &&
136161 s_tls_api.EVP_CIPHER_CTX_reset && s_tls_api.EVP_aes_128_gcm && s_tls_api.EVP_aes_256_gcm &&
137162 s_tls_api.EVP_DecryptInit_ex && s_tls_api.EVP_DecryptUpdate &&
@@ -508,6 +533,9 @@ int sockinfo_tcp_ops_tls::setsockopt(int __level, int __optname, const void *__o
508533 return -1 ;
509534 }
510535 } else {
536+ #ifdef DEFINED_UTLS
537+ xlio_tls_api_setup ();
538+ #endif /* DEFINED_UTLS */
511539 /* RX offload checks. */
512540 if (unlikely (!m_p_sock->is_utls_supported (UTLS_MODE_RX))) {
513541 si_ulp_logdbg (" TLS_RX is not supported." );
0 commit comments