(krb5_sendto): loop over all address returned by getaddrinfo before
trying the next kdc. from thorpej@netbsd.org git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9688 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997 - 2000 Kungliga Tekniska H<>gskolan
|
* Copyright (c) 1997 - 2001 Kungliga Tekniska H<>gskolan
|
||||||
* (Royal Institute of Technology, Stockholm, Sweden).
|
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -316,7 +316,7 @@ krb5_sendto (krb5_context context,
|
|||||||
int fd;
|
int fd;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < context->max_retries; ++i)
|
for (i = 0; i < context->max_retries; ++i) {
|
||||||
for (hp = hostlist; (p = *hp); ++hp) {
|
for (hp = hostlist; (p = *hp); ++hp) {
|
||||||
char *colon;
|
char *colon;
|
||||||
int http_flag = 0;
|
int http_flag = 0;
|
||||||
@@ -368,27 +368,24 @@ krb5_sendto (krb5_context context,
|
|||||||
close (fd);
|
close (fd);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
if(http_flag)
|
||||||
|
ret = send_and_recv_http(fd, context->kdc_timeout,
|
||||||
|
"", send, receive);
|
||||||
|
else if(tcp_flag)
|
||||||
|
ret = send_and_recv_tcp (fd, context->kdc_timeout,
|
||||||
|
send, receive);
|
||||||
|
else
|
||||||
|
ret = send_and_recv_udp (fd, context->kdc_timeout,
|
||||||
|
send, receive);
|
||||||
|
close (fd);
|
||||||
|
if(ret == 0 && receive->length != 0) {
|
||||||
|
freeaddrinfo(ai);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (a == NULL) {
|
freeaddrinfo(ai);
|
||||||
freeaddrinfo (ai);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
freeaddrinfo (ai);
|
|
||||||
|
|
||||||
if(http_flag)
|
|
||||||
ret = send_and_recv_http(fd, context->kdc_timeout,
|
|
||||||
"", send, receive);
|
|
||||||
else if(tcp_flag)
|
|
||||||
ret = send_and_recv_tcp (fd, context->kdc_timeout,
|
|
||||||
send, receive);
|
|
||||||
else
|
|
||||||
ret = send_and_recv_udp (fd, context->kdc_timeout,
|
|
||||||
send, receive);
|
|
||||||
close (fd);
|
|
||||||
if(ret == 0 && receive->length != 0)
|
|
||||||
goto out;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ret = KRB5_KDC_UNREACH;
|
ret = KRB5_KDC_UNREACH;
|
||||||
out:
|
out:
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user