Return TypeFunction nameArguments
intSNI_Callback(SSL*,int*,void*,)

Declared and defined in file: hzIpServer.cpp

Function Logic:

0:START 1:SSL_get_servername_type type SSL_get_servername svrName 2:!svrName 3:Return SSL_TLSEXT_ERR_OK 4:pSSL_Regime 5:!pSSL_Regime 6:Return SSL_TLSEXT_ERR_OK 7:pSSL_Regime==s_SSL_svrRegime 8:Return SSL_TLSEXT_ERR_OK 9:SSL_set_tlsext_host_name SSL_set_SSL_CTX 10:Return SSL_TLSEXT_ERR_OK

Function body:

int SNI_Callback (SSL* pSSL, int* al, void* arg)
{
   _hzfunc("SNI_Callback") ;
   _hz_SSL_Regime* pSSL_Regime ;
   hzString        svrName ;
   int32_t         type ;
   type = SSL_get_servername_type(pSSL);
   svrName = SSL_get_servername(pSSL, type) ;
   if (!svrName)
   {
       threadLog("Server name req by client: NULL (type %d)\n", type) ;
       return SSL_TLSEXT_ERR_OK ;
   }
   threadLog("Server name req by client: %s (type %d)\n", *svrName, type) ;
   pSSL_Regime = s_mapSSLDoms[svrName] ;
   if (!pSSL_Regime)
   {
       threadLog("Server name %s not found\n", *svrName) ;
       return SSL_TLSEXT_ERR_OK ;
   }
   if (pSSL_Regime == s_SSL_svrRegime)
   {
       threadLog("Selecting default\n") ;
       return SSL_TLSEXT_ERR_OK ;
   }
   threadLog("Swaping CTX to %s\n", *pSSL_Regime->m_Domain) ;
   SSL_set_tlsext_host_name(pSSL, *pSSL_Regime->m_Domain);
   SSL_set_SSL_CTX(pSSL, pSSL_Regime->m_svrCTX);
   return SSL_TLSEXT_ERR_OK ;
}