@@ -989,27 +989,41 @@ connectFailureMessage(PGconn *conn, int errorno)
989989 {
990990 char host_addr [NI_MAXHOST ];
991991 bool display_host_addr ;
992- struct sockaddr_in * host_addr_struct = (struct sockaddr_in * )
993- & conn -> raddr .addr ;
992+ struct sockaddr_storage * addr = & conn -> raddr .addr ;
994993
995994 /*
996995 * Optionally display the network address with the hostname.
997996 * This is useful to distinguish between IPv4 and IPv6 connections.
998997 */
999998 if (conn -> pghostaddr != NULL )
1000999 strlcpy (host_addr , conn -> pghostaddr , NI_MAXHOST );
1001- else if (inet_net_ntop (host_addr_struct -> sin_family ,
1002- & host_addr_struct -> sin_addr .s_addr ,
1003- host_addr_struct -> sin_family == AF_INET ? 32 : 128 ,
1004- host_addr , sizeof (host_addr )) == NULL )
1000+ else if (addr -> ss_family == AF_INET )
1001+ {
1002+ if (inet_net_ntop (AF_INET ,
1003+ & ((struct sockaddr_in * ) addr )-> sin_addr .s_addr ,
1004+ 32 ,
1005+ host_addr , sizeof (host_addr )) == NULL )
1006+ strcpy (host_addr , "???" );
1007+ }
1008+ #ifdef HAVE_IPV6
1009+ else if (addr -> ss_family == AF_INET6 )
1010+ {
1011+ if (inet_net_ntop (AF_INET6 ,
1012+ & ((struct sockaddr_in6 * ) addr )-> sin6_addr .s6_addr ,
1013+ 128 ,
1014+ host_addr , sizeof (host_addr )) == NULL )
1015+ strcpy (host_addr , "???" );
1016+ }
1017+ #endif
1018+ else
10051019 strcpy (host_addr , "???");
10061020
1007- display_host_addr = ! conn -> pghostaddr &&
1008- strcmp (conn -> pghost , host_addr ) != 0 ;
1009-
1021+ display_host_addr = ( conn -> pghostaddr == NULL ) &&
1022+ ( strcmp (conn -> pghost , host_addr ) != 0 ) ;
1023+
10101024 appendPQExpBuffer (& conn -> errorMessage ,
10111025 libpq_gettext ("could not connect to server: %s\n"
1012- "\tIs the server running on host \"%s\" %s%s%sand accepting\n"
1026+ "\tIs the server running on host \"%s\"%s%s%s and accepting\n"
10131027 "\tTCP/IP connections on port %s?\n" ),
10141028 SOCK_STRERROR (errorno , sebuf , sizeof (sebuf )),
10151029 conn -> pghostaddr
@@ -1018,9 +1032,9 @@ connectFailureMessage(PGconn *conn, int errorno)
10181032 ? conn -> pghost
10191033 : "???" ),
10201034 /* display the IP address only if not already output */
1021- display_host_addr ? "(" : "" ,
1035+ display_host_addr ? " (" : "" ,
10221036 display_host_addr ? host_addr : "" ,
1023- display_host_addr ? ") " : "" ,
1037+ display_host_addr ? ")" : "" ,
10241038 conn -> pgport );
10251039 }
10261040}
0 commit comments