udp ipv6 localhost resolving patch by ("Hans Zandbelt": Hans Zandbelt, telin nl)
Originally committed as revision 4463 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8baa661498
commit
276358c1c4
@ -160,24 +160,26 @@ int udp_ipv6_set_local(URLContext *h) {
|
||||
socklen_t addrlen;
|
||||
char sbuf[NI_MAXSERV];
|
||||
char hbuf[NI_MAXHOST];
|
||||
struct addrinfo *res0 = NULL;
|
||||
int family;
|
||||
struct addrinfo *res0 = NULL, *res = NULL;
|
||||
|
||||
if (s->local_port != 0) {
|
||||
res0 = udp_ipv6_resolve_host(0, s->local_port, SOCK_DGRAM, AF_UNSPEC, AI_PASSIVE);
|
||||
if (res0 == 0)
|
||||
goto fail;
|
||||
family = res0->ai_family;
|
||||
for (res = res0; res; res=res->ai_next) {
|
||||
udp_fd = socket(res->ai_family, SOCK_DGRAM, 0);
|
||||
if (udp_fd > 0) break;
|
||||
perror("socket");
|
||||
}
|
||||
} else {
|
||||
family = s->dest_addr.ss_family;
|
||||
udp_fd = socket(s->dest_addr.ss_family, SOCK_DGRAM, 0);
|
||||
if (udp_fd < 0)
|
||||
perror("socket");
|
||||
}
|
||||
|
||||
udp_fd = socket(family, SOCK_DGRAM, 0);
|
||||
if (udp_fd < 0) {
|
||||
perror("socket");
|
||||
|
||||
if (udp_fd < 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
if (s->local_port != 0) {
|
||||
if (bind(udp_fd, res0->ai_addr, res0->ai_addrlen) < 0) {
|
||||
perror("bind");
|
||||
|
Loading…
Reference in New Issue
Block a user