diff --git a/util/ChangeLog b/util/ChangeLog index 142a3895b..26dbed6fe 100644 --- a/util/ChangeLog +++ b/util/ChangeLog @@ -1,3 +1,8 @@ +2002-10-10 David Shaw + + * http.c (connect_server): Properly handle a single A record that + fails connect(). + 2002-10-03 David Shaw * logger.c (g10_log_warning, log_set_strict): Add new log_warning diff --git a/util/http.c b/util/http.c index 7f356bcbd..e76ab940c 100644 --- a/util/http.c +++ b/util/http.c @@ -770,17 +770,18 @@ connect_server( const char *server, ushort port ) /* Try all A records until one responds. TODO: do this on the MINGW32 side as well. */ - do + + while(host->h_addr_list[i]) { addr.sin_addr = *(struct in_addr*)host->h_addr_list[i]; + if(connect( sd, (struct sockaddr *)&addr, sizeof addr) == 0) break; i++; } - while(addr.sin_addr.s_addr!=0); - if(addr.sin_addr.s_addr==0) + if(host->h_addr_list[i]==0) { sock_close(sd); return -1;