@@ -995,10 +995,14 @@ static thread_return_type WINAPI MQTTClient_run(void* n)
995995#if defined(OPENSSL )
996996 else if (m -> c -> connect_state == SSL_IN_PROGRESS )
997997 {
998+ const char * hostname ;
999+ size_t hostname_len ;
1000+
1001+ hostname = SSLSocket_getHostName (m -> serverURI , m -> c -> sslopts , & hostname_len );
9981002 rc = m -> c -> sslopts -> struct_version >= 3 ?
999- SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , m -> serverURI ,
1003+ SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , hostname , hostname_len ,
10001004 m -> c -> sslopts -> verify , m -> c -> sslopts -> ssl_error_cb , m -> c -> sslopts -> ssl_error_context ) :
1001- SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , m -> serverURI ,
1005+ SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , hostname , hostname_len ,
10021006 m -> c -> sslopts -> verify , NULL , NULL );
10031007 if (rc == 1 || rc == SSL_FATAL )
10041008 {
@@ -1282,7 +1286,7 @@ static MQTTResponse MQTTClient_connectURIVersion(MQTTClient handle, MQTTClient_c
12821286#if defined(OPENSSL )
12831287 if (m -> ssl )
12841288 {
1285- int port1 ;
1289+ const char * hostname ;
12861290 size_t hostname_len ;
12871291 const char * topic ;
12881292 int setSocketForSSLrc = 0 ;
@@ -1293,19 +1297,20 @@ static MQTTResponse MQTTClient_connectURIVersion(MQTTClient handle, MQTTClient_c
12931297 goto exit ;
12941298 }
12951299
1296- hostname_len = MQTTProtocol_addressPort (serverURI , & port1 , & topic , MQTT_DEFAULT_PORT );
1300+ hostname = SSLSocket_getHostName (m -> serverURI , m -> c -> sslopts , & hostname_len );
1301+
12971302 setSocketForSSLrc = SSLSocket_setSocketForSSL (& m -> c -> net , m -> c -> sslopts ,
1298- serverURI , hostname_len );
1303+ hostname , hostname_len );
12991304
13001305 if (setSocketForSSLrc != MQTTCLIENT_SUCCESS )
13011306 {
13021307 if (m -> c -> session != NULL )
13031308 if ((rc = SSL_set_session (m -> c -> net .ssl , m -> c -> session )) != 1 )
13041309 Log (TRACE_MIN , -1 , "Failed to set SSL session with stored data, non critical" );
13051310 rc = m -> c -> sslopts -> struct_version >= 3 ?
1306- SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , serverURI ,
1311+ SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , hostname , hostname_len ,
13071312 m -> c -> sslopts -> verify , m -> c -> sslopts -> ssl_error_cb , m -> c -> sslopts -> ssl_error_context ) :
1308- SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , serverURI ,
1313+ SSLSocket_connect (m -> c -> net .ssl , m -> c -> net .socket , hostname , hostname_len ,
13091314 m -> c -> sslopts -> verify , NULL , NULL );
13101315 if (rc == TCPSOCKET_INTERRUPTED )
13111316 m -> c -> connect_state = SSL_IN_PROGRESS ; /* the connect is still in progress */
@@ -2759,11 +2764,15 @@ static MQTTPacket* MQTTClient_waitfor(MQTTClient handle, int packet_type, int* r
27592764#if defined(OPENSSL )
27602765 else if (m -> c -> connect_state == SSL_IN_PROGRESS )
27612766 {
2767+ const char * hostname ;
2768+ size_t hostname_len ;
2769+
2770+ hostname = SSLSocket_getHostName (m -> serverURI , m -> c -> sslopts , & hostname_len );
27622771
27632772 * rc = m -> c -> sslopts -> struct_version >= 3 ?
2764- SSLSocket_connect (m -> c -> net .ssl , sock , m -> currentServerURI ,
2773+ SSLSocket_connect (m -> c -> net .ssl , sock , hostname , hostname_len ,
27652774 m -> c -> sslopts -> verify , m -> c -> sslopts -> ssl_error_cb , m -> c -> sslopts -> ssl_error_context ) :
2766- SSLSocket_connect (m -> c -> net .ssl , sock , m -> currentServerURI ,
2775+ SSLSocket_connect (m -> c -> net .ssl , sock , hostname , hostname_len ,
27672776 m -> c -> sslopts -> verify , NULL , NULL );
27682777 if (* rc == SSL_FATAL )
27692778 break ;
0 commit comments