mirror of
git://git.gnupg.org/gnupg.git
synced 2024-10-31 20:08:43 +01:00
* http.c (connect_server): Try all A records for names with multiple
addresses until one answers (not MINGW32).
This commit is contained in:
parent
76846b74e4
commit
c5faf2270a
@ -1,3 +1,8 @@
|
|||||||
|
2002-09-24 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* http.c (connect_server): Try all A records for names with
|
||||||
|
multiple addresses until one answers (not MINGW32).
|
||||||
|
|
||||||
2002-09-16 Werner Koch <wk@gnupg.org>
|
2002-09-16 Werner Koch <wk@gnupg.org>
|
||||||
|
|
||||||
* w32reg.c (read_w32_registry_string): Fallback to HLM.
|
* w32reg.c (read_w32_registry_string): Fallback to HLM.
|
||||||
|
21
util/http.c
21
util/http.c
@ -756,6 +756,7 @@ connect_server( const char *server, ushort port )
|
|||||||
#else
|
#else
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
struct hostent *host;
|
struct hostent *host;
|
||||||
|
int i=0;
|
||||||
|
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
addr.sin_port = htons(port);
|
addr.sin_port = htons(port);
|
||||||
@ -763,16 +764,28 @@ connect_server( const char *server, ushort port )
|
|||||||
if( !host )
|
if( !host )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
addr.sin_addr = *(struct in_addr*)host->h_addr;
|
|
||||||
|
|
||||||
sd = socket(AF_INET, SOCK_STREAM, 0);
|
sd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if( sd == -1 )
|
if( sd == -1 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if( connect( sd, (struct sockaddr *)&addr, sizeof addr) == -1 ) {
|
/* Try all A records until one responds. TODO: do this on the
|
||||||
|
MINGW32 side as well. */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
sock_close(sd);
|
sock_close(sd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return sd;
|
return sd;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user