@@ -289,7 +289,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, free_contents)(MYSQLND_CONN_DATA * conn)
289
289
mysqlnd_set_persistent_string (& conn -> unix_socket , NULL , 0 , pers );
290
290
DBG_INF_FMT ("scheme=%s" , conn -> scheme .s );
291
291
mysqlnd_set_persistent_string (& conn -> scheme , NULL , 0 , pers );
292
-
292
+
293
293
if (conn -> server_version ) {
294
294
mnd_pefree (conn -> server_version , pers );
295
295
conn -> server_version = NULL ;
@@ -726,19 +726,20 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
726
726
DBG_RETURN (PASS );
727
727
}
728
728
err :
729
- if (transport .s ) {
730
- mnd_sprintf_free (transport .s );
731
- transport .s = NULL ;
732
- }
733
-
734
- DBG_ERR_FMT ("[%u] %.128s (trying to connect via %s)" , conn -> error_info -> error_no , conn -> error_info -> error , conn -> scheme .s );
729
+ DBG_ERR_FMT ("[%u] %.128s (trying to connect via %s)" , conn -> error_info -> error_no , conn -> error_info -> error , transport .s ? transport .s : conn -> scheme .s );
735
730
if (!conn -> error_info -> error_no ) {
731
+ /* There was an unknown error if the connection failed but we have no error number */
736
732
char * msg ;
737
- mnd_sprintf (& msg , 0 , "%s ( trying to connect via %s)" , conn -> error_info -> error , conn -> scheme .s );
733
+ mnd_sprintf (& msg , 0 , "Unknown error while trying to connect via %s" , transport . s ? transport . s : conn -> scheme .s );
738
734
SET_CLIENT_ERROR (conn -> error_info , CR_CONNECTION_ERROR , UNKNOWN_SQLSTATE , msg );
739
735
mnd_sprintf_free (msg );
740
736
}
741
737
738
+ if (transport .s ) {
739
+ mnd_sprintf_free (transport .s );
740
+ transport .s = NULL ;
741
+ }
742
+
742
743
conn -> m -> free_contents (conn );
743
744
MYSQLND_INC_CONN_STATISTIC (conn -> stats , STAT_CONNECT_FAILURE );
744
745
DBG_RETURN (FAIL );
0 commit comments